From 765e63c6abf3aa8e2fb4f79db9d4e5fb10f2fb79 Mon Sep 17 00:00:00 2001 From: romchornyi Date: Fri, 30 Oct 2026 17:27:06 +0200 Subject: [PATCH 01/10] feat(wallet): remove CrowdNode Remove the CrowdNode integration: its screens, Home shortcut and balance reminder, the Explore staking entry, the leftover-balance warnings on Send, Buy credits and Coinbase transfer, its notifications, the API client and the CrowdNode transaction matching. Past CrowdNode transactions show as ordinary rows. Shared pieces that lived in the CrowdNode folders move out: TransactionObserver and ObservedTransaction (transaction notifications, Receive) to Models/Transactions/Observation, GroupedTransactionsScreen (CoinJoin groups) to UI/Tx/Details. The selected-input send path, used only for CrowdNode signal transactions, goes; its fee model stays as estimatedFee for the Max reserve. Upgrades are handled for data older builds left behind: - shortcut raw values are pinned; a saved retired slot becomes the first action not already on the bar - delivered notifications on the retired thread or id are removed on activation, and a migration marks the retired topic's events seen - CrowdNode's UserDefaults and crowdnode.io website data are removed once, after protected data is available The Coinbase deposit error reuses the translated "Couldn't complete the transfer". 132 keys used only by the removed code leave the catalogs. Co-Authored-By: Claude Opus 5.5 --- .claude/agents/EXTERNAL-INTEGRATIONS.md | 41 - .claude/agents/PROJECT-FUNCTIONS.md | 10 - CLAUDE.md | 3 +- DASHSYNC_KEY_MIGRATION.md | 2 +- DashWallet.xcodeproj/project.pbxproj | 512 +--- DashWallet/AppDelegate.m | 2 +- .../CrowdNode/Contents.json | 6 - .../Contents.json | 23 - .../icon.png | Bin 1025 -> 0 bytes .../icon@2x.png | Bin 1940 -> 0 bytes .../icon@3x.png | Bin 2866 -> 0 bytes .../Contents.json | 23 - .../icon.png | Bin 971 -> 0 bytes .../icon@2x.png | Bin 1797 -> 0 bytes .../icon@3x.png | Bin 2585 -> 0 bytes .../Contents.json | 23 - .../image.crowdnode.apy.imageset/icon-apy.png | Bin 535 -> 0 bytes .../icon-apy@2x.png | Bin 912 -> 0 bytes .../icon-apy@3x.png | Bin 1370 -> 0 bytes .../Contents.json | 23 - .../icon.png | Bin 492 -> 0 bytes .../icon@2x.png | Bin 881 -> 0 bytes .../icon@3x.png | Bin 1168 -> 0 bytes .../Contents.json | 23 - .../deposit.png | Bin 254 -> 0 bytes .../deposit@2x.png | Bin 357 -> 0 bytes .../deposit@3x.png | Bin 428 -> 0 bytes .../Contents.json | 23 - .../image.crowdnode.error.imageset/error.png | Bin 5376 -> 0 bytes .../error@2x.png | Bin 15777 -> 0 bytes .../error@3x.png | Bin 30789 -> 0 bytes .../Contents.json | 23 - .../icon.first.minimum.deposit.png | Bin 529 -> 0 bytes .../icon.first.minimum.deposit@2x.png | Bin 956 -> 0 bytes .../icon.first.minimum.deposit@3x.png | Bin 1293 -> 0 bytes .../Contents.json | 23 - .../history.png | Bin 813 -> 0 bytes .../history@2x.png | Bin 1473 -> 0 bytes .../history@3x.png | Bin 2164 -> 0 bytes .../Contents.json | 23 - .../image.crowdnode.info.imageset/Icon.png | Bin 5276 -> 0 bytes .../image.crowdnode.info.imageset/Icon@2x.png | Bin 14984 -> 0 bytes .../image.crowdnode.info.imageset/Icon@3x.png | Bin 29942 -> 0 bytes .../Contents.json | 23 - .../icon.join.the.pool.png | Bin 745 -> 0 bytes .../icon.join.the.pool@2x.png | Bin 1386 -> 0 bytes .../icon.join.the.pool@3x.png | Bin 2051 -> 0 bytes .../Contents.json | 23 - .../icon.leaving.the.pool.png | Bin 784 -> 0 bytes .../icon.leaving.the.pool@2x.png | Bin 1432 -> 0 bytes .../icon.leaving.the.pool@3x.png | Bin 2059 -> 0 bytes .../Contents.json | 23 - .../icon.png | Bin 1027 -> 0 bytes .../icon@2x.png | Bin 1901 -> 0 bytes .../icon@3x.png | Bin 2805 -> 0 bytes .../Contents.json | 23 - .../image.crowdnode.logo.imageset/logo.png | Bin 2144 -> 0 bytes .../image.crowdnode.logo.imageset/logo@2x.png | Bin 4229 -> 0 bytes .../image.crowdnode.logo.imageset/logo@3x.png | Bin 6126 -> 0 bytes .../Contents.json | 23 - .../online.png | Bin 296 -> 0 bytes .../online@2x.png | Bin 442 -> 0 bytes .../online@3x.png | Bin 573 -> 0 bytes .../Contents.json | 23 - .../payout.png | Bin 576 -> 0 bytes .../payout@2x.png | Bin 980 -> 0 bytes .../payout@3x.png | Bin 1353 -> 0 bytes .../Contents.json | 23 - .../icon.receiving.rewards.png | Bin 1243 -> 0 bytes .../icon.receiving.rewards@2x.png | Bin 2162 -> 0 bytes .../icon.receiving.rewards@3x.png | Bin 3366 -> 0 bytes .../Contents.json | 23 - .../recovery.png | Bin 1123 -> 0 bytes .../recovery@2x.png | Bin 2067 -> 0 bytes .../recovery@3x.png | Bin 3022 -> 0 bytes .../Contents.json | 23 - .../staking.png | Bin 30767 -> 0 bytes .../staking@2x.png | Bin 110149 -> 0 bytes .../staking@3x.png | Bin 248418 -> 0 bytes .../Contents.json | 23 - .../support.png | Bin 462 -> 0 bytes .../support@2x.png | Bin 820 -> 0 bytes .../support@3x.png | Bin 1227 -> 0 bytes .../Contents.json | 23 - .../image.crowdnode.warning.imageset/icon.png | Bin 1199 -> 0 bytes .../icon@2x.png | Bin 3132 -> 0 bytes .../icon@3x.png | Bin 5791 -> 0 bytes .../Contents.json | 23 - .../withdraw.png | Bin 275 -> 0 bytes .../withdraw@2x.png | Bin 366 -> 0 bytes .../withdraw@3x.png | Bin 466 -> 0 bytes .../Contents.json | 23 - .../icon-staking.png | Bin 969 -> 0 bytes .../icon-staking@2x.png | Bin 1891 -> 0 bytes .../icon-staking@3x.png | Bin 2542 -> 0 bytes .../image-menu-staking.imageset/Contents.json | 23 - .../image-menu-staking.png | Bin 897 -> 0 bytes .../image-menu-staking@2x.png | Bin 1499 -> 0 bytes .../image-menu-staking@3x.png | Bin 2201 -> 0 bytes .../Contents.json | 23 - .../shortcut-bar-crowdnode.png | Bin 761 -> 0 bytes .../shortcut-bar-crowdnode@2x.png | Bin 1403 -> 0 bytes .../shortcut-bar-crowdnode@3x.png | Bin 2036 -> 0 bytes .../tx.item.cn.icon.imageset/Contents.json | 23 - .../tx.item.cn.icon.imageset/cn-tx.png | Bin 728 -> 0 bytes .../tx.item.cn.icon.imageset/cn-tx@2x.png | Bin 1443 -> 0 bytes .../tx.item.cn.icon.imageset/cn-tx@3x.png | Bin 2259 -> 0 bytes .../Database/DatabaseConnection.swift | 3 +- .../Notifications/Core/DeepLinkRoute.swift | 2 - .../Core/NotificationTopic.swift | 7 +- .../Notifications/NotificationLifecycle.swift | 48 +- .../Notifications/NotificationRouter.swift | 7 - .../NotificationsBootstrap.swift | 15 +- .../Notifications/NotifiedEventStore.swift | 18 +- .../CrowdNodeNotificationProducer.swift | 108 - .../TransactionNotificationProducer.swift | 33 +- .../RetiredCrowdNodeDefaults.swift | 107 + .../SwiftDashSDKContactsService.swift | 3 +- .../SwiftDashSDK/SwiftDashSDKHost.swift | 3 +- .../SwiftDashSDKTransactionSender.swift | 165 +- .../SwiftDashSDKWalletRuntime.swift | 6 +- .../SwiftDashSDKWalletState.swift | 4 +- .../SwiftDashSDKWalletWiper.swift | 6 +- .../SwiftDashSDK/WalletEnvironment.swift | 4 +- .../Models/Coinbase/Coinbase+Error.swift | 2 +- .../CrowdNode/API/CrowdNodeEndpoint.swift | 76 - .../CrowdNode/API/DTOs/AddressStatus.swift | 24 - .../CrowdNode/API/DTOs/CrowdNodeBalance.swift | 30 - .../Models/CrowdNode/API/DTOs/FeeInfo.swift | 46 - .../CrowdNode/API/DTOs/IsAddressInUse.swift | 26 - .../CrowdNode/API/DTOs/IsDefaultEmail.swift | 24 - .../CrowdNode/API/DTOs/MessageStatus.swift | 28 - .../CrowdNode/API/DTOs/WithdrawalLimit.swift | 41 - .../CrowdNode/CrowdNode+Constants.swift | 76 - .../CrowdNode/CrowdNode+UserDefaults.swift | 352 --- .../Sources/Models/CrowdNode/CrowdNode.swift | 1362 --------- .../CrowdNode/CrowdNodeBalanceReminder.swift | 79 - .../CrowdNode/MasternodeAPYCalculator.swift | 216 -- .../Models/CrowdNode/Model/ApiCode.swift | 32 - .../CrowdNode/Model/CrowdNodeError.swift | 55 - .../Services/CrowdNodeWebService.swift | 108 - .../Services/DarkCoinMessageFraming.swift | 66 - .../TxFilters/CoinsToAddressTxFilter.swift | 77 - .../CrowdNodeAPIConfirmationTx.swift | 40 - .../TxFilters/CrowdNodeDepositTx.swift | 45 - .../TxFilters/CrowdNodeErrorResponse.swift | 39 - .../TxFilters/CrowdNodeRequest.swift | 32 - .../TxFilters/CrowdNodeResponse.swift | 35 - .../TxFilters/CrowdNodeTopUpTx.swift | 27 - .../CrowdNodeWithdrawalReceivedTx.swift | 47 - .../TxFilters/FullCrowdNodeSignUpTxSet.swift | 144 - .../SingleInputAddressSelector.swift | 27 - .../TxFilters/TransactionWrapper.swift | 23 - .../TxFilters/TxWithinTimePeriod.swift | 33 - .../Transactions/Model/Transaction.swift | 4 +- .../Observation}/TransactionFilter.swift | 23 +- .../Observation}/TransactionObserver.swift | 93 +- .../Transactions/SendCoinsService.swift | 3 - .../Transactions/WalletSendService.swift | 51 +- .../Models/Tx Metadata/ServiceName.swift | 1 - .../TransferAmountHostingController.swift | 27 - .../TransferAmountViewModel.swift | 44 +- .../CrowdNodeBalanceReminderBanner.swift | 63 - .../CrowdNodeBalanceReminderSheet.swift | 101 - .../CrowdNodeWithdrawalRouter.swift | 104 - .../Sources/UI/CrowdNode/CrowdNode.storyboard | 2543 ----------------- .../Sources/UI/CrowdNode/CrowdNodeModel.swift | 519 ---- .../UINavigationController+CrowdNode.swift | 49 - .../Extensions/WKWebView+CrowdNode.swift | 35 - .../GettingStartedViewController.swift | 209 -- .../WelcomeToCrowdNodeViewController.swift | 64 - .../AccountCreatingController.swift | 77 - .../NewAccountViewController.swift | 176 -- .../ConfirmationTransactionQRController.swift | 79 - .../Online/CrowdNodeWebViewController.swift | 135 - .../OnlineAccountConfirmationController.swift | 136 - .../OnlineAccountDetailsController.swift | 66 - .../Online/OnlineAccountEmailController.swift | 196 -- .../Online/OnlineAccountInfoController.swift | 55 - .../CrowdNodePortalViewController.swift | 335 --- .../CrowdNodeTransferViewController.swift | 363 --- .../Portal/Model/CrowdNodePortalItem.swift | 152 - .../Portal/Model/CrowdNodeTransferModel.swift | 131 - .../Portal/StakingInfoDialogController.swift | 104 - .../Portal/Views/CrowdNodeCell.swift | 91 - .../UI/CrowdNode/Portal/Views/FromLabel.swift | 84 - .../Portal/Views/KeyboardHeader.swift | 83 - .../Portal/Views/MinimumDepositBanner.swift | 62 - .../Portal/WithdrawalLimitsController.swift | 227 -- .../UI/CrowdNode/Views/CrowdNodeAPYView.swift | 79 - .../Credits/BuyCreditsViewController.swift | 22 +- .../UI/Explore Dash/ExploreMenuScreen.swift | 66 - .../Explore Dash/ExploreViewController.swift | 35 - .../GiftCardDetails/GiftCardDetailsView.swift | 2 +- .../Views/ExploreContentsView.swift | 11 - .../Home/HomeViewController+Shortcuts.swift | 16 - .../Sources/UI/Home/HomeViewController.swift | 172 -- .../Sources/UI/Home/Models/DWHomeModel.m | 32 - .../UI/Home/Protocols/DWHomeProtocol.h | 1 - .../Sources/UI/Home/Views/HomeView.swift | 21 - .../Sources/UI/Home/Views/HomeViewModel.swift | 43 +- .../Shortcuts/Models/ShortcutAction.swift | 64 +- .../Home/Views/TransactionListDataItem.swift | 5 - .../UI/Onboarding/Stubs/DWHomeModelStub.m | 3 - .../ProvideAmountViewController.swift | 24 +- .../Amount/SendAmountViewController.swift | 31 - .../Dialogs/ModalDialog.swift | 2 - .../Details}/GroupedTransactionsScreen.swift | 0 .../Navigation/BaseNavigationController.swift | 4 +- DashWallet/ar.lproj/Localizable.strings | 413 +-- DashWallet/bg.lproj/Localizable.strings | 413 +-- DashWallet/ca.lproj/Localizable.strings | 413 +-- DashWallet/cs.lproj/Localizable.strings | 413 +-- DashWallet/da.lproj/Localizable.strings | 413 +-- DashWallet/dashwallet-Bridging-Header.h | 2 +- DashWallet/de.lproj/Localizable.strings | 413 +-- DashWallet/el.lproj/Localizable.strings | 413 +-- DashWallet/en.lproj/Localizable.strings | 411 +-- DashWallet/eo.lproj/Localizable.strings | 413 +-- DashWallet/es.lproj/Localizable.strings | 413 +-- DashWallet/et.lproj/Localizable.strings | 413 +-- DashWallet/fa.lproj/Localizable.strings | 413 +-- DashWallet/fi.lproj/Localizable.strings | 413 +-- DashWallet/fil.lproj/Localizable.strings | 413 +-- DashWallet/fr.lproj/Localizable.strings | 413 +-- DashWallet/hr.lproj/Localizable.strings | 413 +-- DashWallet/hu.lproj/Localizable.strings | 413 +-- DashWallet/id.lproj/Localizable.strings | 413 +-- DashWallet/it.lproj/Localizable.strings | 413 +-- DashWallet/ja.lproj/Localizable.strings | 413 +-- DashWallet/ko.lproj/Localizable.strings | 413 +-- DashWallet/mk.lproj/Localizable.strings | 413 +-- DashWallet/ms.lproj/Localizable.strings | 413 +-- DashWallet/nb.lproj/Localizable.strings | 413 +-- DashWallet/nl.lproj/Localizable.strings | 413 +-- DashWallet/pl.lproj/Localizable.strings | 413 +-- DashWallet/pt.lproj/Localizable.strings | 413 +-- DashWallet/ro.lproj/Localizable.strings | 413 +-- DashWallet/ru.lproj/Localizable.strings | 413 +-- DashWallet/sk.lproj/Localizable.strings | 413 +-- DashWallet/sl.lproj/Localizable.strings | 413 +-- DashWallet/sl_SI.lproj/Localizable.strings | 413 +-- DashWallet/sq.lproj/Localizable.strings | 413 +-- DashWallet/sr.lproj/Localizable.strings | 413 +-- DashWallet/sv.lproj/Localizable.strings | 413 +-- DashWallet/th.lproj/Localizable.strings | 413 +-- DashWallet/tr.lproj/Localizable.strings | 413 +-- DashWallet/uk.lproj/Localizable.strings | 413 +-- DashWallet/vi.lproj/Localizable.strings | 413 +-- DashWallet/zh-Hans.lproj/Localizable.strings | 413 +-- .../zh-Hant-TW.lproj/Localizable.strings | 413 +-- DashWallet/zh.lproj/Localizable.strings | 413 +-- DashWallet/zh_TW.lproj/Localizable.strings | 413 +-- .../CoinbaseTransferAmountTests.swift | 45 - DashWalletTests/CrowdNodeOwnershipTests.swift | 277 -- .../CrowdNodeNotificationProducerTests.swift | 137 - .../NotificationDispatcherTests.swift | 10 +- .../NotificationLifecycleTests.swift | 37 +- .../NotificationTopicTests.swift | 1 - .../NotifiedEventStoreTests.swift | 47 +- ...TransactionNotificationProducerTests.swift | 25 +- .../RetiredCrowdNodeDefaultsTests.swift | 116 + DashWalletTests/ShortcutActionTypeTests.swift | 47 + .../TransactionDirectionTests.swift | 35 - scripts/a11y_baseline.json | 71 +- scripts/core_drain_recovery_harness.py | 2 - 266 files changed, 819 insertions(+), 29810 deletions(-) delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/icon.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/icon@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/icon@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/icon.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/icon@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/icon@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/icon-apy.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/icon-apy@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/icon-apy@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.bullet.point.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.bullet.point.imageset/icon.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.bullet.point.imageset/icon@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.bullet.point.imageset/icon@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/deposit.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/deposit@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/deposit@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.error.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.error.imageset/error.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.error.imageset/error@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.error.imageset/error@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.first.deposit.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.first.deposit.imageset/icon.first.minimum.deposit.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.first.deposit.imageset/icon.first.minimum.deposit@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.first.deposit.imageset/icon.first.minimum.deposit@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.history.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.history.imageset/history.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.history.imageset/history@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.history.imageset/history@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.info.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.info.imageset/Icon.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.info.imageset/Icon@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.info.imageset/Icon@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/icon.leaving.the.pool.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/icon.leaving.the.pool@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/icon.leaving.the.pool@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/icon.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/icon@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/icon@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/logo.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/logo@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/logo@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/online.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/online@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/online@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/payout.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/payout@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/payout@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/icon.receiving.rewards.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/icon.receiving.rewards@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/icon.receiving.rewards@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/recovery.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/recovery@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/recovery@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.staking.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.staking.imageset/staking.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.staking.imageset/staking@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.staking.imageset/staking@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/support.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/support@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/support@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/icon.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/icon@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/icon@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/withdraw.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/withdraw@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/withdraw@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/image-menu-staking.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/image-menu-staking@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Menu/image-menu-staking.imageset/image-menu-staking@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/shortcut-bar-crowdnode.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/shortcut-bar-crowdnode@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/shortcut-bar-crowdnode@3x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/Contents.json delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/cn-tx.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/cn-tx@2x.png delete mode 100644 DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/cn-tx@3x.png delete mode 100644 DashWallet/Sources/Infrastructure/Notifications/Producers/CrowdNodeNotificationProducer.swift create mode 100644 DashWallet/Sources/Infrastructure/RetiredCrowdNodeDefaults.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/CrowdNodeEndpoint.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/DTOs/AddressStatus.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/DTOs/CrowdNodeBalance.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/DTOs/FeeInfo.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/DTOs/IsAddressInUse.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/DTOs/IsDefaultEmail.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/DTOs/MessageStatus.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/API/DTOs/WithdrawalLimit.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/CrowdNode+Constants.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/CrowdNode+UserDefaults.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/CrowdNode.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/CrowdNodeBalanceReminder.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/MasternodeAPYCalculator.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/Model/ApiCode.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/Model/CrowdNodeError.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/Services/CrowdNodeWebService.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/Services/DarkCoinMessageFraming.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CoinsToAddressTxFilter.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeAPIConfirmationTx.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeDepositTx.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeErrorResponse.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeRequest.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeResponse.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeTopUpTx.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeWithdrawalReceivedTx.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/FullCrowdNodeSignUpTxSet.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/SingleInputAddressSelector.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/TransactionWrapper.swift delete mode 100644 DashWallet/Sources/Models/CrowdNode/TxFilters/TxWithinTimePeriod.swift rename DashWallet/Sources/Models/{CrowdNode/TxFilters => Transactions/Observation}/TransactionFilter.swift (74%) rename DashWallet/Sources/Models/{CrowdNode/Services => Transactions/Observation}/TransactionObserver.swift (78%) delete mode 100644 DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderBanner.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderSheet.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeWithdrawalRouter.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/CrowdNode.storyboard delete mode 100644 DashWallet/Sources/UI/CrowdNode/CrowdNodeModel.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Extensions/UINavigationController+CrowdNode.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Extensions/WKWebView+CrowdNode.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Getting Started/GettingStartedViewController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Getting Started/WelcomeToCrowdNodeViewController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/New Account/AccountCreatingController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/New Account/NewAccountViewController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Online/ConfirmationTransactionQRController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Online/CrowdNodeWebViewController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountConfirmationController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountDetailsController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountEmailController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountInfoController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodePortalViewController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodeTransferViewController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodePortalItem.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodeTransferModel.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/StakingInfoDialogController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/Views/CrowdNodeCell.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/Views/FromLabel.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/Views/KeyboardHeader.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/Views/MinimumDepositBanner.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Portal/WithdrawalLimitsController.swift delete mode 100644 DashWallet/Sources/UI/CrowdNode/Views/CrowdNodeAPYView.swift rename DashWallet/Sources/UI/{CrowdNode/Tx Details => Tx/Details}/GroupedTransactionsScreen.swift (100%) delete mode 100644 DashWalletTests/CrowdNodeOwnershipTests.swift delete mode 100644 DashWalletTests/Notifications/CrowdNodeNotificationProducerTests.swift create mode 100644 DashWalletTests/RetiredCrowdNodeDefaultsTests.swift create mode 100644 DashWalletTests/ShortcutActionTypeTests.swift diff --git a/.claude/agents/EXTERNAL-INTEGRATIONS.md b/.claude/agents/EXTERNAL-INTEGRATIONS.md index 99e437f945..8255979c6c 100644 --- a/.claude/agents/EXTERNAL-INTEGRATIONS.md +++ b/.claude/agents/EXTERNAL-INTEGRATIONS.md @@ -112,47 +112,6 @@ extension UpholdClient { } ``` -### CrowdNode Staking Integration -**Files**: `DashWallet/Sources/Models/CrowdNode/` -**Pattern**: Transaction-based API with web interface - -**API Integration:** -```swift -class CrowdNodeWebService { - func createAccount(email: String) async throws -> CrowdNodeAccount { - let endpoint = CrowdNodeEndpoint.createAccount - let request = CreateAccountRequest(email: email) - return try await httpClient.post(endpoint, body: request) - } - - func getStakingInfo() async throws -> StakingInfo { - return try await httpClient.get(.stakingInfo) - } -} -``` - -**Transaction Monitoring:** -```swift -class TransactionObserver { - func observeTransactions() { - NotificationCenter.default.addObserver( - forName: .DSWalletBalanceDidChangeNotification, - object: nil, - queue: .main - ) { [weak self] notification in - self?.handleBalanceChange(notification) - } - } - - private func handleBalanceChange(_ notification: Notification) { - // Check for CrowdNode-related transactions - if let crowdNodeTx = identifyCrowdNodeTransaction() { - updateStakingStatus(crowdNodeTx) - } - } -} -``` - ## Third-Party Libraries ### Networking Stack diff --git a/.claude/agents/PROJECT-FUNCTIONS.md b/.claude/agents/PROJECT-FUNCTIONS.md index 100e2fd5f1..0ef716f980 100644 --- a/.claude/agents/PROJECT-FUNCTIONS.md +++ b/.claude/agents/PROJECT-FUNCTIONS.md @@ -119,16 +119,6 @@ This document provides comprehensive information about the key functions, APIs, - Topper payment method integration - Asset conversion and payment processing -### CrowdNode Staking -**File**: `DashWallet/Sources/Models/CrowdNode/CrowdNode.swift` -- `CrowdNode` - Staking service integration -- Account creation and management -- Staking rewards tracking - -**File**: `DashWallet/Sources/Models/CrowdNode/Services/CrowdNodeWebService.swift` -- HTTP client for CrowdNode API -- Transaction monitoring and status updates - ## Navigation and UI Patterns ### Main Navigation Flow diff --git a/CLAUDE.md b/CLAUDE.md index b00dabdc6d..ac0766e233 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -74,9 +74,8 @@ the frozen upgrade-time mnemonic import contract. - **No DashSync runtime**: do not restore the pod, direct imports, `DWEnvironment`, or live `DS*` wallet/transaction/identity objects. Read wallet state through the app-owned SwiftDashSDK boundaries. - **Sync gating**: never gate on SPV `state == .synced` — dash-spv's steady state when fully synced is `waitForEvents` at progress ≈ 1.0 (`.synced` is a transient window). Gate on `SyncingActivityMonitor` (`.syncDone`). -- **Sends**: every spend goes through `WalletSendService` (standard) or `SwiftDashSDKTransactionSender` (selected-input / sweep). Never call `CoreTransactionBuilder` from UI code. `prepare*` never broadcasts; broadcast happens only on explicit confirm. +- **Sends**: every spend goes through `WalletSendService` (standard) or `SwiftDashSDKTransactionSender` (sweep). Never call `CoreTransactionBuilder` from UI code. `prepare*` never broadcasts; broadcast happens only on explicit confirm. - **Mnemonic ownership**: stored as plain keychain bytes via SwiftDashSDK `WalletStorage` (the iOS keychain is the security boundary — there is no PIN-encryption layer). Creation/import/migration route through `SwiftDashSDKHost`; deletion routes through `SwiftDashSDKWalletWiper`. The migrator supports multiple wallets and never deletes DashSync-owned `org.dashfoundation.dash` entries. Don't add ad-hoc `WalletStorage()` readers or choose the first mnemonic — resolve the active wallet through `SwiftDashSDKHost` / `WalletEnvironment.activeWalletId(for:)`. -- **CrowdNode release posture**: temporarily suspend/hide CrowdNode for the migration release. Its implementation is already app/SDK-owned, so it does not block DashSync teardown and must not regain a DashSync fallback. - **Platform release pin**: temporary local integration branches are development-only. Upstream all required changes and make the final migration/release build consume platform `v5.0-dev` at 5.0.0-rc.4 (`5b41ca376b`, what testnet runs) or a later commit with the same `v13.rs`/`v14.rs`, or a later line whose protocol 14 is the one testnet runs (`v5.1-dev` at `d4750290ff` has the same `v13.rs`/`v14.rs` as 5.0.0-rc.4), or an explicitly selected release SHA/tag. Not `v4.2-dev`: its pre-release protocol 14 differs, and the testnet pin in `SwiftDashSDKHost.platformVersion(for:)` builds transitions from the linked SDK's v14. - **Mainnet is the fresh-install default**: `WalletEnvironment.networkKind` returns `.mainnet` when `CURRENT_CHAIN_TYPE_KEY` is absent, in ALL build configurations; testnet requires an explicit in-app switch, which writes the key. (This reverses the temporary testnet default of 2026-07-03, taken while mainnet Platform DAPI was unreachable — revisited by the owner 2026-08-07.) An install that never used the switcher moves to mainnet on its next launch. When touching this, verify mainnet Platform DAPI is actually reachable in the SDK build being shipped. diff --git a/DASHSYNC_KEY_MIGRATION.md b/DASHSYNC_KEY_MIGRATION.md index 2c46087556..ede05ecf7a 100644 --- a/DASHSYNC_KEY_MIGRATION.md +++ b/DASHSYNC_KEY_MIGRATION.md @@ -142,7 +142,7 @@ The SDK wiper deletes SDK-owned mnemonics and managed-wallet state through a manager bound to each wallet's mainnet/testnet store. It reports success only after the global SDK mnemonic inventory is empty. -PIN removal, metadata deletion, app/global preference reset, CrowdNode cleanup, +PIN removal, metadata deletion, app/global preference reset, active-wallet registry cleanup, and runtime teardown happen only after that success point and before the serial-queue completion barrier fires. A failed full wipe preserves those app-owned stores so the user can retry. Per-wallet diff --git a/DashWallet.xcodeproj/project.pbxproj b/DashWallet.xcodeproj/project.pbxproj index c7cb77226f..d1f61300a9 100644 --- a/DashWallet.xcodeproj/project.pbxproj +++ b/DashWallet.xcodeproj/project.pbxproj @@ -34,6 +34,7 @@ 02EDCC7635BCD84768554D9C /* StorageModelListViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A762BDA473947F1A7EF199 /* StorageModelListViews.swift */; }; 02EED2FC7EAC55B96ECEAAD6 /* DWLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 59C18FCF827D815007BAEF29 /* DWLogger.m */; }; 02EED2FC7EAC55B96ECEAB01 /* MainThreadStallMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C18FCF827D815007BAEB01 /* MainThreadStallMonitor.swift */; }; + E988C87246950744F87DA008 /* RetiredCrowdNodeDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 026DD8B86018AC05DE749DD4 /* RetiredCrowdNodeDefaults.swift */; }; 0308E777B29CC6DE1DB30FDD /* PlatformSyncStatusScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A58BF094C42E410DD1A71B6 /* PlatformSyncStatusScreen.swift */; }; 0438F3D117619B14594F95E6 /* DashConnectUriTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7CAFFF191922CBF6075212 /* DashConnectUriTests.swift */; }; 06132521E7B4D21B4A1597E7 /* PlatformSendExecutor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44DCDC3A2B92601BB1E61FD9 /* PlatformSendExecutor.swift */; }; @@ -67,58 +68,11 @@ 0F71317728F436920072F454 /* ServiceOverviewTableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F71317628F436920072F454 /* ServiceOverviewTableCell.swift */; }; 0F71317928F436ED0072F454 /* ServiceOverviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F71317828F436ED0072F454 /* ServiceOverviewViewController.swift */; }; 10853C84CC9043928BA2205A /* TransferAmountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31AECC5C20684C9293F22A38 /* TransferAmountViewModel.swift */; }; - 110C67952921147F006B580C /* GettingStartedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110C67942921147F006B580C /* GettingStartedViewController.swift */; }; - 110C679A29227948006B580C /* UINavigationController+CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110C679929227948006B580C /* UINavigationController+CrowdNode.swift */; }; - 110D1781298BA9AF005BEB30 /* WKWebView+CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110D1780298BA9AF005BEB30 /* WKWebView+CrowdNode.swift */; }; - 110D1784298E68A8005BEB30 /* OnlineAccountInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110D1783298E68A8005BEB30 /* OnlineAccountInfoController.swift */; }; - 111C3C4C296C51B500788E18 /* WithdrawalLimitsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C4B296C51B500788E18 /* WithdrawalLimitsController.swift */; }; - 111C3C4E296C52F800788E18 /* WithdrawalLimit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C4D296C52F800788E18 /* WithdrawalLimit.swift */; }; - 111C3C50296D5A4700788E18 /* TxWithinTimePeriod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C4F296D5A4700788E18 /* TxWithinTimePeriod.swift */; }; - 111C3C52296D620D00788E18 /* CrowdNode+UserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C51296D620D00788E18 /* CrowdNode+UserDefaults.swift */; }; - 111C3C54296D6A2D00788E18 /* CrowdNodeWithdrawalReceivedTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C53296D6A2D00788E18 /* CrowdNodeWithdrawalReceivedTx.swift */; }; - 1141E4C2291BB12200ACDA9E /* CrowdNodeTransferViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1141E4C1291BB12200ACDA9E /* CrowdNodeTransferViewController.swift */; }; - 1141E4C5291FDC7A00ACDA9E /* WelcomeToCrowdNodeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1141E4C4291FDC7A00ACDA9E /* WelcomeToCrowdNodeViewController.swift */; }; 114573A42949B221009DCF27 /* VerifiedSuccessfullyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114573A32949B221009DCF27 /* VerifiedSuccessfullyViewController.swift */; }; - 1147687E294B789800FB1EEE /* CrowdNodePortalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1147687D294B789800FB1EEE /* CrowdNodePortalViewController.swift */; }; - 114CFED0296469D9005F421B /* CrowdNodeDepositTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114CFECF296469D9005F421B /* CrowdNodeDepositTx.swift */; }; - 114CFED2296489CD005F421B /* MinimumDepositBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114CFED1296489CD005F421B /* MinimumDepositBanner.swift */; }; - 114D16B629812730009A124C /* OnlineAccountDetailsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114D16B529812730009A124C /* OnlineAccountDetailsController.swift */; }; - 114D16B829828BCC009A124C /* OnlineAccountConfirmationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114D16B729828BCC009A124C /* OnlineAccountConfirmationController.swift */; }; - 11517C852949E6F0004FC7BF /* CrowdNodeEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11517C842949E6F0004FC7BF /* CrowdNodeEndpoint.swift */; }; - 11517C87294B0FED004FC7BF /* CrowdNodeWebService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11517C86294B0FED004FC7BF /* CrowdNodeWebService.swift */; }; - 11517C8A294B11DD004FC7BF /* CrowdNodeBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11517C89294B11DD004FC7BF /* CrowdNodeBalance.swift */; }; - 117728A3297A7D24006F1553 /* CrowdNodePortalItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117728A2297A7D24006F1553 /* CrowdNodePortalItem.swift */; }; - 117ECC7E29742A42003D798E /* CrowdNodeWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117ECC7D29742A42003D798E /* CrowdNodeWebViewController.swift */; }; 117ED4A128EC86E0006E3EE4 /* TransactionObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117ED4A028EC86E0006E3EE4 /* TransactionObserver.swift */; }; 117ED4A828ED66F9006E3EE4 /* TransactionFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117ED4A728ED66F9006E3EE4 /* TransactionFilter.swift */; }; - 1186092129758B2F00279FCC /* IsAddressInUse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1186092029758B2F00279FCC /* IsAddressInUse.swift */; }; - 11860923297598B400279FCC /* AddressStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11860922297598B400279FCC /* AddressStatus.swift */; }; - 1186092529759C4B00279FCC /* CrowdNodeAPIConfirmationTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1186092429759C4B00279FCC /* CrowdNodeAPIConfirmationTx.swift */; }; - 118A1393291AA21B002641E4 /* AccountCreatingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118A1392291AA21B002641E4 /* AccountCreatingController.swift */; }; - 118B7A3F29865A3A00FBB6CC /* ConfirmationTransactionQRController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118B7A3E29865A3A00FBB6CC /* ConfirmationTransactionQRController.swift */; }; - 118C05B829928F7800717E65 /* OnlineAccountEmailController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118C05B729928F7800717E65 /* OnlineAccountEmailController.swift */; }; - 1193FF3629602835004EA8D7 /* CrowdNodeTransferModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1193FF3529602835004EA8D7 /* CrowdNodeTransferModel.swift */; }; - 1193FF3929606151004EA8D7 /* KeyboardHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1193FF3829606151004EA8D7 /* KeyboardHeader.swift */; }; - 1193FF3B2961960B004EA8D7 /* FromLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1193FF3A2961960B004EA8D7 /* FromLabel.swift */; }; 1193FF3E2962F1BE004EA8D7 /* OperationStatus.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1193FF3D2962F1BE004EA8D7 /* OperationStatus.storyboard */; }; - 119E8D0429051F9900D406C1 /* CrowdNodeRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D0329051F9900D406C1 /* CrowdNodeRequest.swift */; }; - 119E8D062905200300D406C1 /* CoinsToAddressTxFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D052905200300D406C1 /* CoinsToAddressTxFilter.swift */; }; - 119E8D082905409300D406C1 /* FullCrowdNodeSignUpTxSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D072905409300D406C1 /* FullCrowdNodeSignUpTxSet.swift */; }; - 119E8D0A2905413F00D406C1 /* TransactionWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D092905413F00D406C1 /* TransactionWrapper.swift */; }; - 119E8D0C2907C61400D406C1 /* CrowdNodeTopUpTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D0B2907C61400D406C1 /* CrowdNodeTopUpTx.swift */; }; - 119E8D10290949B900D406C1 /* CrowdNodeErrorResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D0F290949B900D406C1 /* CrowdNodeErrorResponse.swift */; }; - 119E8D122909513F00D406C1 /* CrowdNodeError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D112909513F00D406C1 /* CrowdNodeError.swift */; }; - 11AE3DD62997AA36000856EE /* MessageStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AE3DD52997AA36000856EE /* MessageStatus.swift */; }; - 11AE3DD82997C599000856EE /* IsDefaultEmail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AE3DD72997C599000856EE /* IsDefaultEmail.swift */; }; - 11B8449428F27C470082770C /* ApiCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B8449328F27C460082770C /* ApiCode.swift */; }; - 11B8449628F5B9F80082770C /* CrowdNodeResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B8449528F5B9F80082770C /* CrowdNodeResponse.swift */; }; - 11B8449A28F6D5480082770C /* SingleInputAddressSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B8449928F6D5480082770C /* SingleInputAddressSelector.swift */; }; - 11BD737E28E6BD7400A34022 /* NewAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BD737D28E6BD7400A34022 /* NewAccountViewController.swift */; }; - 11BD738128E7356100A34022 /* CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BD738028E7356100A34022 /* CrowdNode.swift */; }; - 11E47BA828EAE7AD0097CFA0 /* CrowdNodeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E47BA728EAE7AD0097CFA0 /* CrowdNodeModel.swift */; }; 11E47BAB28EB38510097CFA0 /* SendCoinsService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E47BAA28EB38510097CFA0 /* SendCoinsService.swift */; }; - 11E47BAD28EB3A7D0097CFA0 /* CrowdNode+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E47BAC28EB3A7D0097CFA0 /* CrowdNode+Constants.swift */; }; - 11ED906B29681773003784F9 /* StakingInfoDialogController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11ED906A29681773003784F9 /* StakingInfoDialogController.swift */; }; 12BD10DCCEFF4142EA3BA0CA /* SwiftDashSDKWalletSending.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4BAA92B00D4109567DF870F /* SwiftDashSDKWalletSending.swift */; }; 12DE15416F9F7A0B8749CAF1 /* PaymentsLandingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE64C10DA9C338D408982EBE /* PaymentsLandingViewModel.swift */; }; 15F9C3B621487500E2919619 /* SendViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E6FAA6524ACE5F315B57AC3 /* SendViewModel.swift */; }; @@ -379,7 +333,6 @@ 9FDB6B846F514029A95E5CE1 /* DurableFileStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0CBBB44F474F5090BAF457 /* DurableFileStorage.swift */; }; 7D4F1A2B3C4D5E6F7A8B9D02 /* SPVChainStoreRebuild.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D4F1A2B3C4D5E6F7A8B9D03 /* SPVChainStoreRebuild.swift */; }; 3A377045AA5C10F3FD63A7C2 /* DWContestedNameStatusService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E950113F9E258B2F1CC0D50C /* DWContestedNameStatusService.swift */; }; - 3A958F915CDACC6FE30923BA /* DarkCoinMessageFraming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C25F44380CDB841AF55D3FF /* DarkCoinMessageFraming.swift */; }; 3B1ECCE5521BAB084D74B5ED /* StorageModelListViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60A762BDA473947F1A7EF199 /* StorageModelListViews.swift */; }; 3B9C0EAAC6DE69DBF8271920 /* BIP70PaymentOutputFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5822AAB9B5EA605FF82B009A /* BIP70PaymentOutputFactory.swift */; }; 3E715F8F82AA68ED8270F7CE /* ContactAvatarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BF8C5EF6DE6FBECB82DA704 /* ContactAvatarView.swift */; }; @@ -392,7 +345,6 @@ 4539AA3FC5C209480BA279AA /* PaymentProtocolMessages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4833BE986D59F69A555C5F /* PaymentProtocolMessages.swift */; }; 45EAD8E50593EE5158E92E9B /* WalletAccountsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 285B961142AB3AFF2442F4EB /* WalletAccountsScreen.swift */; }; 4636DCF2B17C1DC56E9CDD84 /* PaymentURIBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8E3F6CC617DA824F467AADC /* PaymentURIBuilder.swift */; }; - 470617D6299A671900DCC667 /* CrowdNodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470617D5299A671900DCC667 /* CrowdNodeCell.swift */; }; 47081197298CF20C003FCA3D /* Transaction.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47081196298CF20B003FCA3D /* Transaction.swift */; }; 4708119F2990F56F003FCA3D /* TransactionDataItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4708119E2990F56F003FCA3D /* TransactionDataItem.swift */; }; 4709C30F287E787700B4BD48 /* Migrations.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4709C30E287E787700B4BD48 /* Migrations.bundle */; }; @@ -735,6 +687,7 @@ 63869E343191C55BDBBEED72 /* SwiftDashSDKInsightClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A7BE8E4519203200CDFB460 /* SwiftDashSDKInsightClient.swift */; }; 66B50619EC898EEE8C8FE13E /* DWLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = 59C18FCF827D815007BAEF29 /* DWLogger.m */; }; 66B50619EC898EEE8C8FEB01 /* MainThreadStallMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59C18FCF827D815007BAEB01 /* MainThreadStallMonitor.swift */; }; + 82AFEEB726DB44F3D52B2CAC /* RetiredCrowdNodeDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 026DD8B86018AC05DE749DD4 /* RetiredCrowdNodeDefaults.swift */; }; 6715F4CB33E5F472FEC43B7E /* DWParsedPaymentURI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24DC91C11E382E22D1C17F05 /* DWParsedPaymentURI.swift */; }; 6C4AA7FD67FEE5A9E5CF9781 /* WalletsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76AB0835FF44EA88F36991E0 /* WalletsViewModel.swift */; }; 6D5D6EFD5F40D11B2FB6E8A1 /* PaymentsLandingScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E735446F9E918618E97EDD38 /* PaymentsLandingScreen.swift */; }; @@ -795,8 +748,6 @@ A1C0D0030000000000000003 /* RecoveryPhraseFlow.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1C0D0010000000000000001 /* RecoveryPhraseFlow.swift */; }; 752F81A92E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */; }; 752F81AA2E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */; }; - 75303FE52AE7B70500870D8B /* CrowdNode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */; }; - 75303FE62AE7B70500870D8B /* CrowdNode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */; }; 7531308D2B47EC910069C9B7 /* UpholdClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7531308C2B47EC910069C9B7 /* UpholdClient.swift */; }; 7531308E2B47EC910069C9B7 /* UpholdClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7531308C2B47EC910069C9B7 /* UpholdClient.swift */; }; 753130912B47EE920069C9B7 /* UpholdCapability.swift in Sources */ = {isa = PBXBuildFile; fileRef = 753130902B47EE920069C9B7 /* UpholdCapability.swift */; }; @@ -856,8 +807,6 @@ 755B4B232B0C903500B844F0 /* DWDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755B4B212B0C903500B844F0 /* DWDateFormatter.swift */; }; 755C32382C358FC0007DA721 /* BackupSeedPhraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755C32372C358FBD007DA721 /* BackupSeedPhraseViewController.swift */; }; 755C32392C358FC0007DA721 /* BackupSeedPhraseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755C32372C358FBD007DA721 /* BackupSeedPhraseViewController.swift */; }; - 756557B52CE84FFA0060348D /* FeeInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 756557B42CE84FF70060348D /* FeeInfo.swift */; }; - 756557B62CE84FFA0060348D /* FeeInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 756557B42CE84FF70060348D /* FeeInfo.swift */; }; 7566F4832BB6949E005238D2 /* ToolsMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */; }; 7566F4842BB6949E005238D2 /* ToolsMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */; }; 5AGOV0002F9A0000000000S2 /* GovernanceMenuScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5AGOV0002F9A0000000000S1 /* GovernanceMenuScreen.swift */; }; @@ -912,8 +861,6 @@ 759AFDE02CC63571007072D2 /* JoinDashPayScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759AFDDF2CC6356D007072D2 /* JoinDashPayScreen.swift */; }; 6EEA73178E9A9E221E43AFB0 /* UsernameTypesInfoSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8CD6705B090FCCFA9CC693 /* UsernameTypesInfoSheet.swift */; }; 759AFDE32CC67E8E007072D2 /* VotingInfoScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759AFDE22CC67E89007072D2 /* VotingInfoScreen.swift */; }; - 759C8F9F2B593589004B1305 /* CrowdNodeAPYView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */; }; - 759C8FA02B593589004B1305 /* CrowdNodeAPYView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */; }; 75A0A3F32CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; 75A0A3F42CA7DBCF003ED48B /* TimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */; }; 75A2F3032DE48C860046BE17 /* CTXSpendTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */; }; @@ -1013,7 +960,6 @@ 76766A50AFDB7BC138F569DC /* NetworkUnavailableStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 487C4C2E6AC61005536FF85E /* NetworkUnavailableStateView.swift */; }; 7A30000230A1000000000002 /* TransactionDirectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A30000130A1000000000001 /* TransactionDirectionTests.swift */; }; 7A32000230A3000000000002 /* PooledSendableBalanceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A32000130A3000000000001 /* PooledSendableBalanceTests.swift */; }; - 7A30002230A2000000000022 /* CrowdNodeOwnershipTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A30002130A2000000000021 /* CrowdNodeOwnershipTests.swift */; }; 7A31000230A2000000000002 /* CoinJoinMoveDestinationPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A31000130A2000000000001 /* CoinJoinMoveDestinationPolicyTests.swift */; }; 7A30001230A1000000000012 /* StuckAssetLockRetryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A30001130A1000000000011 /* StuckAssetLockRetryTests.swift */; }; 7C1177A230A1000000000002 /* InternalTransferNoticeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C1177A130A1000000000001 /* InternalTransferNoticeTests.swift */; }; @@ -1100,7 +1046,6 @@ A6AAB271A1ADA69C272DA1D4 /* PinPromptPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D385FC174E5B887CF3398CCD /* PinPromptPresenter.swift */; }; A6DB8889C5594B1988BDE0CE /* SwapCoinIconLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2F0351CAD174EEB8E64012A /* SwapCoinIconLoader.swift */; }; A72BF1D1A1F3F067215CE04C /* QRCodeGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A52F6A39C711B1E955B7E3A /* QRCodeGenerator.swift */; }; - A92AEDB6AD391E61F696809C /* MasternodeAPYCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1461688D08658B938A1066 /* MasternodeAPYCalculator.swift */; }; AA00000128D9A3DB00223B77 /* BuySellPortalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA00000028D9A3DB00223B77 /* BuySellPortalView.swift */; }; AA0000012DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000032DUMMYID001234567 /* AddProviderToGiftCardsTable.swift */; }; AA00000228D9A3DB00223B77 /* BuySellPortalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA00000028D9A3DB00223B77 /* BuySellPortalView.swift */; }; @@ -1288,7 +1233,6 @@ C1A0B2C3D4E5F60718293A02 /* ShortcutsBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1A0B2C3D4E5F60718293A01 /* ShortcutsBarView.swift */; }; C1A0B2C3D4E5F60718293A03 /* ShortcutsBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1A0B2C3D4E5F60718293A01 /* ShortcutsBarView.swift */; }; C1B995F0556113706D9CDA9A /* PaymentProtocolMessages.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C4833BE986D59F69A555C5F /* PaymentProtocolMessages.swift */; }; - C20BF8237F3E1009AD3B7716 /* DarkCoinMessageFraming.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C25F44380CDB841AF55D3FF /* DarkCoinMessageFraming.swift */; }; C393DD0A89617D8BF270CE27 /* SwiftDashSDKKeyMigrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33FB75FCD21FC8C62840E6FD /* SwiftDashSDKKeyMigrator.swift */; }; C3DAD268246AA6F10001624F /* DWScreenshotWarningViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD267246AA6F10001624F /* DWScreenshotWarningViewController.m */; }; C3DAD2CF247585C10001624F /* NSPredicate+DWFullTextSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD2CE247585C10001624F /* NSPredicate+DWFullTextSearch.m */; }; @@ -1441,16 +1385,13 @@ C9D2C6952A320AA000D15901 /* DWBaseAdvancedSecurityModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AB3417E23A92A2A004E37A7 /* DWBaseAdvancedSecurityModel.m */; }; C9D2C6962A320AA000D15901 /* DWBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CE6D22DA357D00C99324 /* DWBaseViewController.m */; }; C9D2C6972A320AA000D15901 /* DWBiometricAuthViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44314622CF82D9009BAF7F /* DWBiometricAuthViewController.m */; }; - C9D2C6982A320AA000D15901 /* CrowdNodeWebService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11517C86294B0FED004FC7BF /* CrowdNodeWebService.swift */; }; C9D2C69C2A320AA000D15901 /* DWAdvancedSecurityModelStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AB3417923A929B6004E37A7 /* DWAdvancedSecurityModelStub.m */; }; C9D2C69D2A320AA000D15901 /* Foundation+Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4709C32028818D5400B4BD48 /* Foundation+Bitcoin.swift */; }; C9D2C69F2A320AA000D15901 /* DWPlaceholderFormTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE3A2230FF4600956D5F /* DWPlaceholderFormTableViewCell.m */; }; C9D2C6A12A320AA000D15901 /* AmountInputControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661B728FE907300028A8D /* AmountInputControl.swift */; }; C9D2C6A22A320AA000D15901 /* DWSegmentSliderFormTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1F640B238D5BBB00A9B505 /* DWSegmentSliderFormTableViewCell.m */; }; - C9D2C6A32A320AA000D15901 /* ApiCode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B8449328F27C460082770C /* ApiCode.swift */; }; C9D2C6A42A320AA000D15901 /* CoinbaseEntryPointModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B91290701470003E8AB /* CoinbaseEntryPointModel.swift */; }; C9D2C6A52A320AA000D15901 /* SyncingAlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451EA2A0BF10B00825057 /* SyncingAlertViewController.swift */; }; - C9D2C6A72A320AA000D15901 /* CrowdNodeResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B8449528F5B9F80082770C /* CrowdNodeResponse.swift */; }; C9D2C6A82A320AA000D15901 /* FileManager+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BB128BFF61A00490F5E /* FileManager+DashWallet.swift */; }; C9D2C6A92A320AA000D15901 /* PointOfUseItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BCB28C1305E00490F5E /* PointOfUseItemCell.swift */; }; C9D2C6AC2A320AA000D15901 /* PayableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42F9E29DA82E5001BC549 /* PayableViewController.swift */; }; @@ -1460,7 +1401,6 @@ C9D2C6B02A320AA000D15901 /* SettingsScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7A7BD52348CB6600451078 /* SettingsScreen.swift */; }; C9D2C6B22A320AA000D15901 /* UISpringTimingParameters+DWInit.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69D92314727F001B8C90 /* UISpringTimingParameters+DWInit.m */; }; C9D2C6B62A320AA000D15901 /* NumberKeyboardButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661AC28F972BD00028A8D /* NumberKeyboardButton.swift */; }; - C9D2C6B72A320AA000D15901 /* IsDefaultEmail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AE3DD72997C599000856EE /* IsDefaultEmail.swift */; }; C9D2C6BB2A320AA000D15901 /* DWFormTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE2E2230FF4600956D5F /* DWFormTableViewController.m */; }; C9D2C6BC2A320AA000D15901 /* WalletKeysOverviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909614C29EFF7D600002D82 /* WalletKeysOverviewModel.swift */; }; C9D2C6BD2A320AA000D15901 /* UIAssembly.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751137428DAF28800223B77 /* UIAssembly.swift */; }; @@ -1474,16 +1414,13 @@ C9D2C6C62A320AA000D15901 /* Coinbase+Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477F500F2950A55A003C7508 /* Coinbase+Error.swift */; }; C9D2C6C72A320AA000D15901 /* DWPaymentOutput+DWView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A63003E2327B4BB00827825 /* DWPaymentOutput+DWView.m */; }; C9D2C6C82A320AA000D15901 /* UIView+DWRecursiveSubview.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ACD53ED234C9D8E00650AD3 /* UIView+DWRecursiveSubview.m */; }; - C9D2C6C92A320AA000D15901 /* AddressStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11860922297598B400279FCC /* AddressStatus.swift */; }; C9D2C6CA2A320AA000D15901 /* ExtendedPublicKeysModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91E919629FBACE6003E7883 /* ExtendedPublicKeysModel.swift */; }; C9D2C6CB2A320AA000D15901 /* OrderPreviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CAD3297022B300F63AC4 /* OrderPreviewViewController.swift */; }; C9D2C6CC2A320AA000D15901 /* ActivePaymentMethodView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478C982E294305D800FAA0F0 /* ActivePaymentMethodView.swift */; }; C9D2C6CD2A320AA000D15901 /* BasicInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CDEEC62949DC38008AE06D /* BasicInfoController.swift */; }; C9D2C6CE2A320AA000D15901 /* DWPreviewSeedPhraseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CEA722E0C8C800C99324 /* DWPreviewSeedPhraseModel.m */; }; C9D2C6CF2A320AA000D15901 /* DWModalPresentationAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69CC23142F90001B8C90 /* DWModalPresentationAnimation.m */; }; - C9D2C6D02A320AA000D15901 /* UINavigationController+CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110C679929227948006B580C /* UINavigationController+CrowdNode.swift */; }; C9D2C6D12A320AA000D15901 /* DWReceiveModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E792302E67400FF8653 /* DWReceiveModel.m */; }; - C9D2C6D22A320AA000D15901 /* TransactionWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D092905413F00D406C1 /* TransactionWrapper.swift */; }; C9D2C6D32A320AA000D15901 /* Transactions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 479DBDDC2995168C00F30AF1 /* Transactions.swift */; }; C9D2C6D42A320AA000D15901 /* DWRecoverTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFFA2305464C00C475EB /* DWRecoverTextView.m */; }; C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4709C314287EA11900B4BD48 /* TransactionMetadata.swift */; }; @@ -1494,12 +1431,9 @@ C9D2C6DC2A320AA000D15901 /* DWPhoneWCSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A858A0C237EE89B0097A7B5 /* DWPhoneWCSessionManager.m */; }; C9D2C6DD2A320AA000D15901 /* NumberKeyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661AA28F9707A00028A8D /* NumberKeyboard.swift */; }; C9D2C6DE2A320AA000D15901 /* DWSeedPhraseTitledView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4431E522D73617009BAF7F /* DWSeedPhraseTitledView.m */; }; - C9D2C6E02A320AA000D15901 /* CrowdNodeTopUpTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D0B2907C61400D406C1 /* CrowdNodeTopUpTx.swift */; }; C9D2C6E12A320AA000D15901 /* BackupInfoItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FB329DD86FB001BC549 /* BackupInfoItemView.swift */; }; - C9D2C6E32A320AA000D15901 /* AccountCreatingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118A1392291AA21B002641E4 /* AccountCreatingController.swift */; }; C9D2C6E42A320AA000D15901 /* UIView+DWReuseHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4E534322F02BC300E5168A /* UIView+DWReuseHelper.m */; }; C9D2C6E52A320AA000D15901 /* DWExtendedContainerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E9B23A53B8E006A2A59 /* DWExtendedContainerViewController.m */; }; - C9D2C6E62A320AA000D15901 /* CrowdNodeEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11517C842949E6F0004FC7BF /* CrowdNodeEndpoint.swift */; }; C9D2C6E72A320AA000D15901 /* ServiceEntryPointModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F71317428F4365C0072F454 /* ServiceEntryPointModel.swift */; }; C9D2C6E82A320AA000D15901 /* ExploreDash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8B9428BFACA100490F5E /* ExploreDash.swift */; }; C9D2C6EB2A320AA000D15901 /* UpholdAmountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4789D22E2981067600BAFEFA /* UpholdAmountModel.swift */; }; @@ -1507,10 +1441,8 @@ C9D2C6F02A320AA000D15901 /* UIImage+Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = BAA4843B1B3EFFAF0075C749 /* UIImage+Utils.m */; }; C9D2C6F22A320AA000D15901 /* DWSetupViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4430ED22CBBAC9009BAF7F /* DWSetupViewController.m */; }; C9D2C6F32A320AA000D15901 /* ExploreDatabaseConnection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BA928BFAE5800490F5E /* ExploreDatabaseConnection.swift */; }; - C9D2C6F42A320AA000D15901 /* WithdrawalLimitsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C4B296C51B500788E18 /* WithdrawalLimitsController.swift */; }; C9D2C6F52A320AA000D15901 /* CoinbaseTransactionResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFA928C896BC000427E7 /* CoinbaseTransactionResponse.swift */; }; C9D2C6F72A320AA000D15901 /* TxDetailModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4709C31A288020DE00B4BD48 /* TxDetailModel.swift */; }; - C9D2C6F82A320AA000D15901 /* NewAccountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BD737D28E6BD7400A34022 /* NewAccountViewController.swift */; }; C9D2C6F92A320AA000D15901 /* PointOfUseListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BD728C1305E00490F5E /* PointOfUseListModel.swift */; }; C9D2C6FA2A320AA000D15901 /* NSPredicate+DWFullTextSearch.m in Sources */ = {isa = PBXBuildFile; fileRef = C3DAD2CE247585C10001624F /* NSPredicate+DWFullTextSearch.m */; }; C9D2C6FB2A320AA000D15901 /* TxReclassifyTransactionsWhereToChangeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F2C6832860513900C2B774 /* TxReclassifyTransactionsWhereToChangeViewController.swift */; }; @@ -1520,7 +1452,6 @@ C9D2C6FF2A320AA000D15901 /* ProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451F82A0CB08900825057 /* ProgressView.swift */; }; C9D2C7002A320AA000D15901 /* DWAmountInputValidator.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A2120E92214566A009906DC /* DWAmountInputValidator.m */; }; C9D2C7012A320AA000D15901 /* ExplorePointOfUseListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BD228C1305E00490F5E /* ExplorePointOfUseListViewController.swift */; }; - C9D2C7022A320AA000D15901 /* CrowdNodeWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117ECC7D29742A42003D798E /* CrowdNodeWebViewController.swift */; }; C9D2C7032A320AA000D15901 /* UIViewController+DWDisplayError.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AE4736A241BC5E300804DD4 /* UIViewController+DWDisplayError.m */; }; C9D2C7042A320AA000D15901 /* BRAppleWatchData.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A858A08237EE89B0097A7B5 /* BRAppleWatchData.m */; }; C9D2C7052A320AA000D15901 /* DWRequestAmountContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ACCD85C231939FE00A96B62 /* DWRequestAmountContentView.m */; }; @@ -1528,7 +1459,6 @@ C9D2C7072A320AA000D15901 /* AmountInputTypeSwitcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B7628FFFFAD0003E8AB /* AmountInputTypeSwitcher.swift */; }; C9D2C7082A320AA000D15901 /* DWPlaceholderFormCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE3D2230FF4600956D5F /* DWPlaceholderFormCellModel.m */; }; C9D2C7092A320AA000D15901 /* DWOverlapControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E4E22FED47E00FF8653 /* DWOverlapControl.m */; }; - C9D2C70A2A320AA000D15901 /* CoinsToAddressTxFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D052905200300D406C1 /* CoinsToAddressTxFilter.swift */; }; C9D2C70B2A320AA000D15901 /* DWDemoAppRootViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AB3417223A926C9004E37A7 /* DWDemoAppRootViewController.m */; }; C9D2C70C2A320AA000D15901 /* DWUpholdLogoutTutorialViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE652230FF4600956D5F /* DWUpholdLogoutTutorialViewController.m */; }; C9D2C70D2A320AA000D15901 /* CBAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF46A429654E190067B6EE /* CBAccount.swift */; }; @@ -1539,7 +1469,6 @@ C9D2C7132A320AA000D15901 /* ReceiveContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FAA29DC1098001BC549 /* ReceiveContentView.swift */; }; C9D2C7142A320AA000D15901 /* AmountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B7428FFD1D10003E8AB /* AmountView.swift */; }; C9D2C7152A320AA000D15901 /* DWBasePayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ACCD85423191C8500A96B62 /* DWBasePayViewController.m */; }; - C9D2C7162A320AA000D15901 /* CrowdNodeTransferModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1193FF3529602835004EA8D7 /* CrowdNodeTransferModel.swift */; }; C9D2C7172A320AA000D15901 /* DWSetPinViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44312522CCC14F009BAF7F /* DWSetPinViewController.m */; }; C9D2C7182A320AA000D15901 /* ConfirmOrderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F4B6C6294842DF00AED4C9 /* ConfirmOrderController.swift */; }; C9D2C71B2A320AA000D15901 /* DWResetWalletInfoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A10EB432358D2CA00C38B61 /* DWResetWalletInfoViewController.m */; }; @@ -1550,7 +1479,6 @@ C9D2C7202A320AA000D15901 /* ServiceDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4774DCE028F44BA3008CF87D /* ServiceDataProvider.swift */; }; C9D2C7212A320AA000D15901 /* PaymentButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451E62A0BA16400825057 /* PaymentButton.swift */; }; C9D2C7222A320AA000D15901 /* DWPreviewSeedPhraseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4431DA22D675CD009BAF7F /* DWPreviewSeedPhraseViewController.m */; }; - C9D2C7242A320AA000D15901 /* WKWebView+CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110D1780298BA9AF005BEB30 /* WKWebView+CrowdNode.swift */; }; C9D2C7252A320AA000D15901 /* SyncingActivityMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47FA3AFE29350929008D58DC /* SyncingActivityMonitor.swift */; }; C9D2C7262A320AA000D15901 /* EmptyUIView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FAF29DC27F4001BC549 /* EmptyUIView.swift */; }; C9D2C7272A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; @@ -1562,7 +1490,6 @@ C9D2C72E2A320AA000D15901 /* DWRecoverModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFFD2305763F00C475EB /* DWRecoverModel.m */; }; C9D2C72F2A320AA000D15901 /* DWCenteredTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4431C722D4D92A009BAF7F /* DWCenteredTableView.m */; }; C9D2C7302A320AA000D15901 /* DWOnboardingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E6E23A26663006A2A59 /* DWOnboardingViewController.m */; }; - C9D2C7322A320AA000D15901 /* CrowdNode+UserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C51296D620D00788E18 /* CrowdNode+UserDefaults.swift */; }; C9D2C7342A320AA000D15901 /* DWPinView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44313822CE2CB9009BAF7F /* DWPinView.m */; }; C9D2C7362A320AA000D15901 /* DWBaseReceiveModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AB3416423A8213C004E37A7 /* DWBaseReceiveModel.m */; }; C9D2C7372A320AA000D15901 /* DWSegmentSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1F6411238D650200A9B505 /* DWSegmentSlider.m */; }; @@ -1593,27 +1520,21 @@ C9D2C7532A320AA000D15901 /* DWRecoverWalletCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A3DC86D239717C2004B3DBA /* DWRecoverWalletCommand.m */; }; C9D2C7542A320AA000D15901 /* DWSwitcherFormTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE322230FF4600956D5F /* DWSwitcherFormTableViewCell.m */; }; C9D2C7552A320AA000D15901 /* DWPaymentInput.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C699B23104588001B8C90 /* DWPaymentInput.m */; }; - C9D2C7572A320AA000D15901 /* OnlineAccountDetailsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114D16B529812730009A124C /* OnlineAccountDetailsController.swift */; }; C9D2C7582A320AA000D15901 /* UIApplication+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451E82A0BDAE700825057 /* UIApplication+DashWallet.swift */; }; - C9D2C7592A320AA000D15901 /* OnlineAccountInfoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110D1783298E68A8005BEB30 /* OnlineAccountInfoController.swift */; }; C9D2C75A2A320AA000D15901 /* PaymentController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A50F372912D9DC00C70123 /* PaymentController.swift */; }; C9D2C75B2A320AA000D15901 /* CALayer+MBAnimationPersistence.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ADB396B242615C200A6F898 /* CALayer+MBAnimationPersistence.m */; }; C9D2C75C2A320AA000D15901 /* UIView+DWAnimations.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFDEF2230FF1A00956D5F /* UIView+DWAnimations.m */; }; C9D2C75D2A320AA000D15901 /* VerifiedSuccessfullyViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114573A32949B221009DCF27 /* VerifiedSuccessfullyViewController.swift */; }; - C9D2C75E2A320AA000D15901 /* KeyboardHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1193FF3829606151004EA8D7 /* KeyboardHeader.swift */; }; C9D2C75F2A320AA000D15901 /* DWUpholdOTPViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE542230FF4600956D5F /* DWUpholdOTPViewController.m */; }; C9D2C7602A320AA000D15901 /* DWAppGroupOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E7C23034AC100FF8653 /* DWAppGroupOptions.m */; }; C9D2C7642A320AA000D15901 /* BasePageSheetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F2C67C28602D4F00C2B774 /* BasePageSheetViewController.swift */; }; - C9D2C7662A320AA000D15901 /* CrowdNodeRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D0329051F9900D406C1 /* CrowdNodeRequest.swift */; }; C9D2C7672A320AA000D15901 /* CoinbaseExchangeRateResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFAF28C896BC000427E7 /* CoinbaseExchangeRateResponse.swift */; }; C9D2C7692A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; - C9D2C76A2A320AA000D15901 /* CrowdNodePortalItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117728A2297A7D24006F1553 /* CrowdNodePortalItem.swift */; }; C9D2C76B2A320AA000D15901 /* BaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C661B528FE75A700028A8D /* BaseViewController.swift */; }; C9D2C76C2A320AA000D15901 /* AccountListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CABF296EFD2900F63AC4 /* AccountListController.swift */; }; C9D2C76D2A320AA000D15901 /* DWUpholdTransactionObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFDFD2230FF2B00956D5F /* DWUpholdTransactionObject.m */; }; C9D2C76E2A320AA000D15901 /* DWBaseSeedViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AF26F3A230C0E4C007F9228 /* DWBaseSeedViewController.m */; }; C9D2C76F2A320AA000D15901 /* DWProgressAnimator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E4C22FEBF7A00FF8653 /* DWProgressAnimator.mm */; }; - C9D2C7702A320AA000D15901 /* CrowdNodeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E47BA728EAE7AD0097CFA0 /* CrowdNodeModel.swift */; }; C9D2C7712A320AA000D15901 /* UIDevice+Compatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4730586D295AB3BD004641DA /* UIDevice+Compatibility.swift */; }; C9D2C7722A320AA000D15901 /* DWSeedWordView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4431E022D7219E009BAF7F /* DWSeedWordView.m */; }; C9D2C7732A320AA000D15901 /* DWSecurityStatusView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7F3B1E238C651200DEA3EF /* DWSecurityStatusView.m */; }; @@ -1624,7 +1545,6 @@ C9D2C77B2A320AA000D15901 /* DWSetPinModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44314222CF80D9009BAF7F /* DWSetPinModel.m */; }; C9D2C77C2A320AA000D15901 /* DWVerifySeedPhraseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CE8C22DCB3B600C99324 /* DWVerifySeedPhraseModel.m */; }; C9D2C77D2A320AA000D15901 /* ReceiveViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F42FA529DC092B001BC549 /* ReceiveViewController.swift */; }; - C9D2C77E2A320AA000D15901 /* ConfirmationTransactionQRController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118B7A3E29865A3A00FBB6CC /* ConfirmationTransactionQRController.swift */; }; C9D2C7812A320AA000D15901 /* Numbers+Dash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E4B7B6292F85E800CE0EB6 /* Numbers+Dash.swift */; }; C9D2C7822A320AA000D15901 /* PaymentMethodsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478C983129433C5700FAA0F0 /* PaymentMethodsController.swift */; }; C9D2C7832A320AA000D15901 /* POIDetailsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1228C5F0A600490F5E /* POIDetailsViewController.swift */; }; @@ -1636,15 +1556,12 @@ C9D2C78B2A320AA000D15901 /* OrderPreviewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CAD2297022B300F63AC4 /* OrderPreviewModel.swift */; }; C9D2C78D2A320AA000D15901 /* UIView+DWFindConstraints.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A885FD5244DFEF100B9F679 /* UIView+DWFindConstraints.m */; }; C9D2C78E2A320AA000D15901 /* DWModalPopupPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1B7DA42323AC1F00BA8C6A /* DWModalPopupPresentationController.m */; }; - C9D2C78F2A320AA000D15901 /* CrowdNodeBalance.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11517C89294B11DD004FC7BF /* CrowdNodeBalance.swift */; }; C9D2C7902A320AA000D15901 /* String+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471DD1B9290A962B00E030C8 /* String+DashWallet.swift */; }; C9D2C7932A320AA000D15901 /* DWBaseModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69D623143B2F001B8C90 /* DWBaseModalViewController.m */; }; C9D2C7952A320AA000D15901 /* KeysOverviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = C909615829F29C9200002D82 /* KeysOverviewCell.swift */; }; C9D2C7962A320AA000D15901 /* UIViewController+DWShareReceiveInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ACCD86D2319609400A96B62 /* UIViewController+DWShareReceiveInfo.m */; }; - C9D2C7972A320AA000D15901 /* OnlineAccountConfirmationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114D16B729828BCC009A124C /* OnlineAccountConfirmationController.swift */; }; C9D2C7982A320AA000D15901 /* BaseResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B8B29068F110003E8AB /* BaseResponse.swift */; }; C9D2C7992A320AA000D15901 /* DWDemoAdvancedSecurityViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AB3417623A92978004E37A7 /* DWDemoAdvancedSecurityViewController.m */; }; - C9D2C79C2A320AA000D15901 /* TxWithinTimePeriod.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C4F296D5A4700788E18 /* TxWithinTimePeriod.swift */; }; C9D2C79D2A320AA000D15901 /* CoinbaseSwapeTradeRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDF9F28C896BC000427E7 /* CoinbaseSwapeTradeRequest.swift */; }; C9D2C79E2A320AA000D15901 /* UIFont+DWFont.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44311622CBF0B2009BAF7F /* UIFont+DWFont.m */; }; C9D2C79F2A320AA000D15901 /* CustodialSwapsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47E94B96296D7D5B000FE68E /* CustodialSwapsViewController.swift */; }; @@ -1662,7 +1579,6 @@ C9D2C7B22A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; C9D2C7B32A320AA000D15901 /* SpecifyAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AC8412297822E000BD1B49 /* SpecifyAmountViewController.swift */; }; C9D2C7B42A320AA000D15901 /* DWUpholdTransactionObject+DWView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AFCB9C323BE76EC00FF59A6 /* DWUpholdTransactionObject+DWView.m */; }; - C9D2C7B62A320AA000D15901 /* CrowdNodeDepositTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114CFECF296469D9005F421B /* CrowdNodeDepositTx.swift */; }; C9D2C7B92A320AA000D15901 /* DWIntrinsicTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFF072233E56E00956D5F /* DWIntrinsicTableView.m */; }; C9D2C7BA2A320AA000D15901 /* DWURLActions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E6523A11DFE006A2A59 /* DWURLActions.m */; }; C9D2C7BB2A320AA000D15901 /* KeysOverviewViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9903A5329E6A5F600535A4E /* KeysOverviewViewController.swift */; }; @@ -1679,19 +1595,15 @@ C9D2C7CA2A320AA000D15901 /* DWModalDismissalAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69CF23143435001B8C90 /* DWModalDismissalAnimation.m */; }; C9D2C7CB2A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; C9D2C7CD2A320AA000D15901 /* UIViewController+DashWallet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CDEECD294A3CF2008AE06D /* UIViewController+DashWallet.swift */; }; - C9D2C7CE2A320AA000D15901 /* CrowdNodeCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 470617D5299A671900DCC667 /* CrowdNodeCell.swift */; }; C9D2C7CF2A320AA000D15901 /* MerchantListLocationOffCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BD128C1305E00490F5E /* MerchantListLocationOffCell.swift */; }; - C9D2C7D32A320AA000D15901 /* CrowdNodeAPIConfirmationTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1186092429759C4B00279FCC /* CrowdNodeAPIConfirmationTx.swift */; }; C9D2C7D42A320AA000D15901 /* UIViewController+DWEmbedding.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E8F23A31713006A2A59 /* UIViewController+DWEmbedding.m */; }; C9D2C7D62A320AA000D15901 /* CALayer+DWShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A2CD71222F97B65008C7BC9 /* CALayer+DWShadow.m */; }; C9D2C7D72A320AA000D15901 /* MerchantDAO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BA328BFADD800490F5E /* MerchantDAO.swift */; }; C9D2C7D82A320AA000D15901 /* ExploreDatabaseSyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BA828BFAE5800490F5E /* ExploreDatabaseSyncManager.swift */; }; C9D2C7D92A320AA000D15901 /* DWOnboardingCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AB3416823A8C479004E37A7 /* DWOnboardingCollectionViewCell.m */; }; - C9D2C7DA2A320AA000D15901 /* CrowdNodeErrorResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D0F290949B900D406C1 /* CrowdNodeErrorResponse.swift */; }; C9D2C7DC2A320AA000D15901 /* DWHomeModelStub.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E8123A30623006A2A59 /* DWHomeModelStub.m */; }; C9D2C7DD2A320AA000D15901 /* UISearchBar+DWAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ADC9D1B24603C4F001D7C0D /* UISearchBar+DWAdditions.m */; }; C9D2C7E02A320AA000D15901 /* TransactionFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 117ED4A728ED66F9006E3EE4 /* TransactionFilter.swift */; }; - C9D2C7E22A320AA000D15901 /* CrowdNodeWithdrawalReceivedTx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C53296D6A2D00788E18 /* CrowdNodeWithdrawalReceivedTx.swift */; }; C9D2C7E32A320AA000D15901 /* PointOfUseListSegmentedCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C0228C1F0C600490F5E /* PointOfUseListSegmentedCell.swift */; }; C9D2C7E42A320AA000D15901 /* DWURLRequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E6723A14739006A2A59 /* DWURLRequestHandler.m */; }; C9D2C7E52A320AA000D15901 /* CoinbaseAPIEndpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFB528C896BC000427E7 /* CoinbaseAPIEndpoint.swift */; }; @@ -1701,7 +1613,6 @@ C9D2C7EA2A320AA000D15901 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 475AE2B82974348F009A1055 /* App.swift */; }; C9D2C7EB2A320AA000D15901 /* DWPaymentProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69A2231048DA001B8C90 /* DWPaymentProcessor.m */; }; C9D2C7ED2A320AA000D15901 /* SyncingHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F451F22A0C933700825057 /* SyncingHeaderView.swift */; }; - C9D2C7EE2A320AA000D15901 /* MinimumDepositBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 114CFED1296489CD005F421B /* MinimumDepositBanner.swift */; }; C9D2C7EF2A320AA000D15901 /* BalanceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B8E2906D7340003E8AB /* BalanceView.swift */; }; C9D2C7F02A320AA000D15901 /* DWQRScanStatusView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD85A9E245881740045B480 /* DWQRScanStatusView.m */; }; C9D2C7F12A320AA000D15901 /* DWURLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A741DC52363A06000840ADF /* DWURLParser.m */; }; @@ -1730,9 +1641,7 @@ C9D2C8162A320AA000D15901 /* DWPhraseRepairViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9172C325233DC50024B4C5 /* DWPhraseRepairViewController.m */; }; C9D2C8172A320AA000D15901 /* DWBiometricAuthModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A44314B22CF8801009BAF7F /* DWBiometricAuthModel.m */; }; C9D2C8182A320AA000D15901 /* DWNumberKeyboardInputViewAudioFeedback.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ACCD8EB231ECCF000A96B62 /* DWNumberKeyboardInputViewAudioFeedback.m */; }; - C9D2C8192A320AA000D15901 /* CrowdNode+Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11E47BAC28EB3A7D0097CFA0 /* CrowdNode+Constants.swift */; }; C9D2C81A2A320AA000D15901 /* CurrencyExchanger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F006012971B1FE0029EB10 /* CurrencyExchanger.swift */; }; - C9D2C81D2A320AA000D15901 /* MessageStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11AE3DD52997AA36000856EE /* MessageStatus.swift */; }; C9D2C81E2A320AA000D15901 /* DWGlobalOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CEAA22E18F1800C99324 /* DWGlobalOptions.m */; }; C9D2C81F2A320AA000D15901 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4430E622CBB6EC009BAF7F /* AppDelegate.m */; }; 1535CD04CB1E10BA219A614E /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2350DF4247B02C974F8A3628 /* SceneDelegate.m */; }; @@ -1741,7 +1650,6 @@ C9D2C8242A320AA000D15901 /* UIViewController+Coinbase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CDEECB294A2BAD008AE06D /* UIViewController+Coinbase.swift */; }; C9D2C8262A320AA000D15901 /* CSVBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13E0299E1F2F006903F1 /* CSVBuilder.swift */; }; C9D2C8282A320AA000D15901 /* CoinbaseUserAuthInformation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDF9D28C896BC000427E7 /* CoinbaseUserAuthInformation.swift */; }; - C9D2C82A2A320AA000D15901 /* OnlineAccountEmailController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 118C05B729928F7800717E65 /* OnlineAccountEmailController.swift */; }; C9D2C82B2A320AA000D15901 /* DWBaseActionButtonViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A74EFE82305264200C475EB /* DWBaseActionButtonViewController.m */; }; C9D2C82C2A320AA000D15901 /* CoinbasePaymentMethodsResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFA228C896BC000427E7 /* CoinbasePaymentMethodsResponse.swift */; }; C9D2C82D2A320AA000D15901 /* UIView+DWEmbedding.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A913E8B23A3134E006A2A59 /* UIView+DWEmbedding.m */; }; @@ -1779,7 +1687,6 @@ C9D2C8562A320AA000D15901 /* TransactionItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474C7217298A422400475CA6 /* TransactionItemView.swift */; }; C9D2C8572A320AA000D15901 /* UIView+Reuse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 474C7210298A1A9500475CA6 /* UIView+Reuse.swift */; }; C9D2C8582A320AA000D15901 /* DWUpholdClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE022230FF2B00956D5F /* DWUpholdClient.m */; }; - C9D2C8592A320AA000D15901 /* CrowdNodePortalViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1147687D294B789800FB1EEE /* CrowdNodePortalViewController.swift */; }; C9D2C85A2A320AA000D15901 /* ConfirmOrderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47F4B6C929484C9800AED4C9 /* ConfirmOrderModel.swift */; }; C9D2C85B2A320AA000D15901 /* PointOfUseListEmptyResultsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472CEE002924AA6D00656B48 /* PointOfUseListEmptyResultsView.swift */; }; C9D2C85D2A320AA000D15901 /* DWLockPinInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A6300442328D07500827825 /* DWLockPinInputView.m */; }; @@ -1805,13 +1712,11 @@ C9D2C87F2A320AA000D15901 /* AddressUserInfoDAO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471A2607289ACDA00056B7B2 /* AddressUserInfoDAO.swift */; }; C9D2C8812A320AA000D15901 /* DWModalTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69D223143568001B8C90 /* DWModalTransition.m */; }; C9D2C8832A320AA000D15901 /* MerchantsDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BD628C1305E00490F5E /* MerchantsDataProvider.swift */; }; - C9D2C8842A320AA000D15901 /* FullCrowdNodeSignUpTxSet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D072905409300D406C1 /* FullCrowdNodeSignUpTxSet.swift */; }; C9D2C8852A320AA000D15901 /* DWSeedPhraseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4431E822D738C0009BAF7F /* DWSeedPhraseModel.m */; }; C9D2C8862A320AA000D15901 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478C983B2945801D00FAA0F0 /* Constants.swift */; }; C9D2C8872A320AA000D15901 /* DWBaseFormCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9FFE372230FF4600956D5F /* DWBaseFormCellModel.m */; }; C9D2C8882A320AA000D15901 /* ExploreMapAnnotationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BDA28C1305E00490F5E /* ExploreMapAnnotationView.swift */; }; C9D2C88A2A320AA000D15901 /* DWHomeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4E533722F023AB00E5168A /* DWHomeModel.m */; }; - C9D2C88D2A320AA000D15901 /* IsAddressInUse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1186092029758B2F00279FCC /* IsAddressInUse.swift */; }; C9D2C88F2A320AA000D15901 /* DWSegmentedControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E3F22FD75C000FF8653 /* DWSegmentedControl.m */; }; C9D2C8902A320AA000D15901 /* MerchantItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BCC28C1305E00490F5E /* MerchantItemCell.swift */; }; C9D2C8912A320AA000D15901 /* PaymentMethodCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478C98362943A60000FAA0F0 /* PaymentMethodCell.swift */; }; @@ -1829,15 +1734,10 @@ C9D2C8A52A320AA000D15901 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9F452002A0CE6C900825057 /* HomeView.swift */; }; C9D2C8A62A320AA000D15901 /* CoinbaseRatesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A2E3AB2972B1A60032A63B /* CoinbaseRatesProvider.swift */; }; C9D2C8A72A320AA000D15901 /* TaxReportGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472D13DE299DF5C6006903F1 /* TaxReportGenerator.swift */; }; - C9D2C8A82A320AA000D15901 /* CrowdNodeError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 119E8D112909513F00D406C1 /* CrowdNodeError.swift */; }; - C9D2C8A92A320AA000D15901 /* WithdrawalLimit.swift in Sources */ = {isa = PBXBuildFile; fileRef = 111C3C4D296C52F800788E18 /* WithdrawalLimit.swift */; }; C9D2C8AA2A320AA000D15901 /* DWPayModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8B9E6422FFE43500FF8653 /* DWPayModel.m */; }; C9D2C8AD2A320AA000D15901 /* POIDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8C1728C63F9C00490F5E /* POIDetailsView.swift */; }; - C9D2C8AF2A320AA000D15901 /* FromLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1193FF3A2961960B004EA8D7 /* FromLabel.swift */; }; C9D2C8B02A320AA000D15901 /* DWPhraseRepairChildViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A9172D225233F4F0024B4C5 /* DWPhraseRepairChildViewController.m */; }; - C9D2C8B12A320AA000D15901 /* SingleInputAddressSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B8449928F6D5480082770C /* SingleInputAddressSelector.swift */; }; C9D2C8B22A320AA000D15901 /* CoinbaseAccountAddress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F6EDFAC28C896BC000427E7 /* CoinbaseAccountAddress.swift */; }; - C9D2C8B42A320AA000D15901 /* CrowdNodeTransferViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1141E4C1291BB12200ACDA9E /* CrowdNodeTransferViewController.swift */; }; C9D2C8B62A320AA000D15901 /* CBAuthInterop.swift in Sources */ = {isa = PBXBuildFile; fileRef = 478483E729629C0700E05A5A /* CBAuthInterop.swift */; }; C9D2C8B82A320AA000D15901 /* CoinbaseAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4789D26F29825F5400BAFEFA /* CoinbaseAmountViewController.swift */; }; C9D2C8BA2A320AA000D15901 /* DWSegmentSliderFormCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1F640E238D5C0900A9B505 /* DWSegmentSliderFormCellModel.m */; }; @@ -1852,7 +1752,6 @@ C9D2C8C92A320AA000D15901 /* ServiceDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4774DCDC28F43A68008CF87D /* ServiceDataSource.swift */; }; C9D2C8CA2A320AA000D15901 /* ConverterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B792900196F0003E8AB /* ConverterView.swift */; }; C9D2C8CB2A320AA000D15901 /* DWModalBaseAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A0C69C923142E11001B8C90 /* DWModalBaseAnimation.m */; }; - C9D2C8CD2A320AA000D15901 /* StakingInfoDialogController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11ED906A29681773003784F9 /* StakingInfoDialogController.swift */; }; C9D2C8CF2A320AA000D15901 /* TwoFactorAuthViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F36937D2919A5DB007F4E91 /* TwoFactorAuthViewController.swift */; }; C9D2C8D02A320AA000D15901 /* Taxes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 471A2609289ACDF70056B7B2 /* Taxes.swift */; }; C9D2C8D12A320AA000D15901 /* DWSeedWordModel+DWLayoutSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AD1CE9622DD0E8E00C99324 /* DWSeedWordModel+DWLayoutSupport.m */; }; @@ -1860,11 +1759,9 @@ C9D2C8D32A320AA000D15901 /* SendAmountViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B30D7F291123D30080C326 /* SendAmountViewController.swift */; }; C9D2C8D52A320AA000D15901 /* AccountService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF46A0296540EF0067B6EE /* AccountService.swift */; }; C9D2C8D62A320AA000D15901 /* ListHandlerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C6E6E6291A90B2003FEDF2 /* ListHandlerView.swift */; }; - C9D2C8D82A320AA000D15901 /* CrowdNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BD738028E7356100A34022 /* CrowdNode.swift */; }; C9D2C8D92A320AA000D15901 /* SQLite+ExloreDash.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8B9E28BFAD8200490F5E /* SQLite+ExloreDash.swift */; }; C9D2C8DC2A320AA000D15901 /* DWAdvancedSecurityModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1F6414238FEEA900A9B505 /* DWAdvancedSecurityModel.m */; }; C9D2C8DD2A320AA000D15901 /* AtmDataProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47AE8BD528C1305E00490F5E /* AtmDataProvider.swift */; }; - C9D2C8DE2A320AA000D15901 /* GettingStartedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 110C67942921147F006B580C /* GettingStartedViewController.swift */; }; C9D2C8DF2A320AA000D15901 /* NetworkUnavailableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 477A963D292CD27D0013605B /* NetworkUnavailableView.swift */; }; C9D2C8E02A320AA000D15901 /* (null) in Sources */ = {isa = PBXBuildFile; }; C9D2C8E12A320AA000D15901 /* DWLockScreenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A63004D2328F37C00827825 /* DWLockScreenViewController.m */; }; @@ -1877,7 +1774,6 @@ C9D2C8E92A320AA000D15901 /* PointOfUseListFiltersModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47838B81290271170003E8AB /* PointOfUseListFiltersModel.swift */; }; C9D2C8EA2A320AA000D15901 /* ConvertCryptoOrderPreviewViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4751CAD82970509600F63AC4 /* ConvertCryptoOrderPreviewViews.swift */; }; C9D2C8EB2A320AA000D15901 /* DWAboutModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A8F421F21BEFEEA00858B91 /* DWAboutModel.m */; }; - C9D2C8EE2A320AA000D15901 /* WelcomeToCrowdNodeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1141E4C4291FDC7A00ACDA9E /* WelcomeToCrowdNodeViewController.swift */; }; C9D2C8F02A320AA000D15901 /* DWProgressView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A4E531C22EA49FE00E5168A /* DWProgressView.m */; }; C9D2C8F12A320AA000D15901 /* TxDetailCells.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A5146328491C60005A8E3E /* TxDetailCells.swift */; }; A1C0DE0000000000000BADA2 /* TxDetailContactViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1C0DE0000000000000BADA1 /* TxDetailContactViews.swift */; }; @@ -1957,6 +1853,8 @@ CB74BF16EB95CE2D1246C243 /* SwiftDashSDKKeyMigrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33FB75FCD21FC8C62840E6FD /* SwiftDashSDKKeyMigrator.swift */; }; CB9000022FE1000000000002 /* CoinbaseTransactionMetadataTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB9000012FE1000000000001 /* CoinbaseTransactionMetadataTests.swift */; }; CB9100022FE2000000000002 /* CoinbaseTransferAmountTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB9100012FE2000000000001 /* CoinbaseTransferAmountTests.swift */; }; + B22765F5EC05E5EE8186D9E2 /* RetiredCrowdNodeDefaultsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4466DE8A4A8417FA6C235BE /* RetiredCrowdNodeDefaultsTests.swift */; }; + 59CF738341C10A1296F632DC /* ShortcutActionTypeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB5926ED1241DB3E76CB54FC /* ShortcutActionTypeTests.swift */; }; CB9200022FE3000000000002 /* PassiveWalletStateUITailTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CB9200012FE3000000000001 /* PassiveWalletStateUITailTests.swift */; }; CC0000112DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */; }; CC0000122DUMMYID001234567 /* PiggyCardsAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */; }; @@ -1969,14 +1867,6 @@ CC0000192DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */; }; CC0000202DUMMYID001234567 /* PiggyCardsTokenService.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */; }; CF4B9EC1B74A5AEC8D8DD7F1 /* libPods-dashpay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B6C652479D19F2169F565A6C /* libPods-dashpay.a */; }; - CNR0000012FF100000000001 /* CrowdNodeBalanceReminder.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000072FF100000000001 /* CrowdNodeBalanceReminder.swift */; }; - CNR0000022FF100000000001 /* CrowdNodeBalanceReminder.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000072FF100000000001 /* CrowdNodeBalanceReminder.swift */; }; - CNR0000032FF100000000001 /* CrowdNodeBalanceReminderSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000082FF100000000001 /* CrowdNodeBalanceReminderSheet.swift */; }; - CNR0000042FF100000000001 /* CrowdNodeBalanceReminderSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000082FF100000000001 /* CrowdNodeBalanceReminderSheet.swift */; }; - CNR0000052FF100000000001 /* CrowdNodeBalanceReminderBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000092FF100000000001 /* CrowdNodeBalanceReminderBanner.swift */; }; - CNR0000062FF100000000001 /* CrowdNodeBalanceReminderBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000092FF100000000001 /* CrowdNodeBalanceReminderBanner.swift */; }; - CNR0000112FF100000000001 /* CrowdNodeWithdrawalRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000132FF100000000001 /* CrowdNodeWithdrawalRouter.swift */; }; - CNR0000122FF100000000001 /* CrowdNodeWithdrawalRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = CNR0000132FF100000000001 /* CrowdNodeWithdrawalRouter.swift */; }; D0525BF736516E4EB50DF703 /* SwiftDashSDKReceiveAddressReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A876A874736D422F781F797F /* SwiftDashSDKReceiveAddressReader.swift */; }; D15607B6987D27ACDC844F9E /* DWAvatarUploadClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A461F75E1E170FFE3294337 /* DWAvatarUploadClient.swift */; }; D2616FE9FE5ED53F26506A73 /* DWIdentityRegistrationBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = D54F8E662513F09BA840FB94 /* DWIdentityRegistrationBridge.swift */; }; @@ -2018,7 +1908,6 @@ E5767AEAEF7C4921886E915A /* BuySellPortalScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B94B3697D7742BFA991B5CC /* BuySellPortalScreen.swift */; }; E5B549CD6364E8982A7262C0 /* WalletsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76AB0835FF44EA88F36991E0 /* WalletsViewModel.swift */; }; E5B6555D068FA44028784652 /* SwiftDashSDKWalletState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42C22064915D913252F56184 /* SwiftDashSDKWalletState.swift */; }; - E623DF8B207A512573314A83 /* MasternodeAPYCalculator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1461688D08658B938A1066 /* MasternodeAPYCalculator.swift */; }; E827E2C12B63FF5C48BA4D15 /* StorageExplorerUnavailableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F8E2ECDE79849D01F613ADC /* StorageExplorerUnavailableView.swift */; }; E88FE13A3079496C9A5EA8D4 /* SwapCoinIconView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20554F992205428BA790F6CF /* SwapCoinIconView.swift */; }; E9F0A1B2C3D4E5F6A7B8C9D0 /* TransferAmountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1D2E3F4A5B6C7D8E9F01234 /* TransferAmountView.swift */; }; @@ -2284,58 +2173,11 @@ 0F71317628F436920072F454 /* ServiceOverviewTableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceOverviewTableCell.swift; sourceTree = ""; }; 0F71317828F436ED0072F454 /* ServiceOverviewViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ServiceOverviewViewController.swift; sourceTree = ""; }; 0F8E2ECDE79849D01F613ADC /* StorageExplorerUnavailableView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StorageExplorerUnavailableView.swift; sourceTree = ""; }; - 110C67942921147F006B580C /* GettingStartedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GettingStartedViewController.swift; sourceTree = ""; }; - 110C679929227948006B580C /* UINavigationController+CrowdNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UINavigationController+CrowdNode.swift"; sourceTree = ""; }; - 110D1780298BA9AF005BEB30 /* WKWebView+CrowdNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "WKWebView+CrowdNode.swift"; sourceTree = ""; }; - 110D1783298E68A8005BEB30 /* OnlineAccountInfoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnlineAccountInfoController.swift; sourceTree = ""; }; - 111C3C4B296C51B500788E18 /* WithdrawalLimitsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawalLimitsController.swift; sourceTree = ""; }; - 111C3C4D296C52F800788E18 /* WithdrawalLimit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WithdrawalLimit.swift; sourceTree = ""; }; - 111C3C4F296D5A4700788E18 /* TxWithinTimePeriod.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TxWithinTimePeriod.swift; sourceTree = ""; }; - 111C3C51296D620D00788E18 /* CrowdNode+UserDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CrowdNode+UserDefaults.swift"; sourceTree = ""; }; - 111C3C53296D6A2D00788E18 /* CrowdNodeWithdrawalReceivedTx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeWithdrawalReceivedTx.swift; sourceTree = ""; }; - 1141E4C1291BB12200ACDA9E /* CrowdNodeTransferViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeTransferViewController.swift; sourceTree = ""; }; - 1141E4C4291FDC7A00ACDA9E /* WelcomeToCrowdNodeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WelcomeToCrowdNodeViewController.swift; sourceTree = ""; }; 114573A32949B221009DCF27 /* VerifiedSuccessfullyViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerifiedSuccessfullyViewController.swift; sourceTree = ""; }; - 1147687D294B789800FB1EEE /* CrowdNodePortalViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodePortalViewController.swift; sourceTree = ""; }; - 114CFECF296469D9005F421B /* CrowdNodeDepositTx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeDepositTx.swift; sourceTree = ""; }; - 114CFED1296489CD005F421B /* MinimumDepositBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MinimumDepositBanner.swift; sourceTree = ""; }; - 114D16B529812730009A124C /* OnlineAccountDetailsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnlineAccountDetailsController.swift; sourceTree = ""; }; - 114D16B729828BCC009A124C /* OnlineAccountConfirmationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnlineAccountConfirmationController.swift; sourceTree = ""; }; - 11517C842949E6F0004FC7BF /* CrowdNodeEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeEndpoint.swift; sourceTree = ""; }; - 11517C86294B0FED004FC7BF /* CrowdNodeWebService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeWebService.swift; sourceTree = ""; }; - 11517C89294B11DD004FC7BF /* CrowdNodeBalance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeBalance.swift; sourceTree = ""; }; - 117728A2297A7D24006F1553 /* CrowdNodePortalItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodePortalItem.swift; sourceTree = ""; }; - 117ECC7D29742A42003D798E /* CrowdNodeWebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeWebViewController.swift; sourceTree = ""; }; 117ED4A028EC86E0006E3EE4 /* TransactionObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionObserver.swift; sourceTree = ""; }; 117ED4A728ED66F9006E3EE4 /* TransactionFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionFilter.swift; sourceTree = ""; }; - 1186092029758B2F00279FCC /* IsAddressInUse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsAddressInUse.swift; sourceTree = ""; }; - 11860922297598B400279FCC /* AddressStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AddressStatus.swift; sourceTree = ""; }; - 1186092429759C4B00279FCC /* CrowdNodeAPIConfirmationTx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeAPIConfirmationTx.swift; sourceTree = ""; }; - 118A1392291AA21B002641E4 /* AccountCreatingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountCreatingController.swift; sourceTree = ""; }; - 118B7A3E29865A3A00FBB6CC /* ConfirmationTransactionQRController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfirmationTransactionQRController.swift; sourceTree = ""; }; - 118C05B729928F7800717E65 /* OnlineAccountEmailController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnlineAccountEmailController.swift; sourceTree = ""; }; - 1193FF3529602835004EA8D7 /* CrowdNodeTransferModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeTransferModel.swift; sourceTree = ""; }; - 1193FF3829606151004EA8D7 /* KeyboardHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardHeader.swift; sourceTree = ""; }; - 1193FF3A2961960B004EA8D7 /* FromLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FromLabel.swift; sourceTree = ""; }; 1193FF3D2962F1BE004EA8D7 /* OperationStatus.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = OperationStatus.storyboard; sourceTree = ""; }; - 119E8D0329051F9900D406C1 /* CrowdNodeRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeRequest.swift; sourceTree = ""; }; - 119E8D052905200300D406C1 /* CoinsToAddressTxFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinsToAddressTxFilter.swift; sourceTree = ""; }; - 119E8D072905409300D406C1 /* FullCrowdNodeSignUpTxSet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullCrowdNodeSignUpTxSet.swift; sourceTree = ""; }; - 119E8D092905413F00D406C1 /* TransactionWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionWrapper.swift; sourceTree = ""; }; - 119E8D0B2907C61400D406C1 /* CrowdNodeTopUpTx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeTopUpTx.swift; sourceTree = ""; }; - 119E8D0F290949B900D406C1 /* CrowdNodeErrorResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeErrorResponse.swift; sourceTree = ""; }; - 119E8D112909513F00D406C1 /* CrowdNodeError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeError.swift; sourceTree = ""; }; - 11AE3DD52997AA36000856EE /* MessageStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageStatus.swift; sourceTree = ""; }; - 11AE3DD72997C599000856EE /* IsDefaultEmail.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IsDefaultEmail.swift; sourceTree = ""; }; - 11B8449328F27C460082770C /* ApiCode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApiCode.swift; sourceTree = ""; }; - 11B8449528F5B9F80082770C /* CrowdNodeResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeResponse.swift; sourceTree = ""; }; - 11B8449928F6D5480082770C /* SingleInputAddressSelector.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SingleInputAddressSelector.swift; sourceTree = ""; }; - 11BD737D28E6BD7400A34022 /* NewAccountViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewAccountViewController.swift; sourceTree = ""; }; - 11BD738028E7356100A34022 /* CrowdNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNode.swift; sourceTree = ""; }; - 11E47BA728EAE7AD0097CFA0 /* CrowdNodeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeModel.swift; sourceTree = ""; }; 11E47BAA28EB38510097CFA0 /* SendCoinsService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendCoinsService.swift; sourceTree = ""; }; - 11E47BAC28EB3A7D0097CFA0 /* CrowdNode+Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CrowdNode+Constants.swift"; sourceTree = ""; }; - 11ED906A29681773003784F9 /* StakingInfoDialogController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StakingInfoDialogController.swift; sourceTree = ""; }; 132FE91D9C90E736DB1634A5 /* PinStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PinStore.swift; sourceTree = ""; }; 1519EF932C4CDDC0BB5BF1B4 /* KeychainWalletRecoveryCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeychainWalletRecoveryCoordinator.swift; sourceTree = ""; }; 15DF22D94904D5A8CD596ED8 /* SwiftDashSDKWalletWiper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SwiftDashSDKWalletWiper.swift; sourceTree = ""; }; @@ -2832,7 +2674,6 @@ 43C830DD6D63115525925F75 /* PlatformCreditsFormatter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlatformCreditsFormatter.swift; sourceTree = ""; }; 4457C976B1DB0CF402FF3C5F /* Pods-WatchApp Extension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchApp Extension.release.xcconfig"; path = "Target Support Files/Pods-WatchApp Extension/Pods-WatchApp Extension.release.xcconfig"; sourceTree = ""; }; 44DCDC3A2B92601BB1E61FD9 /* PlatformSendExecutor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlatformSendExecutor.swift; sourceTree = ""; }; - 470617D5299A671900DCC667 /* CrowdNodeCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeCell.swift; sourceTree = ""; }; 47081196298CF20B003FCA3D /* Transaction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Transaction.swift; sourceTree = ""; }; 4708119E2990F56F003FCA3D /* TransactionDataItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionDataItem.swift; sourceTree = ""; }; 4709C30E287E787700B4BD48 /* Migrations.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Migrations.bundle; sourceTree = ""; }; @@ -3096,6 +2937,7 @@ 5822AAB9B5EA605FF82B009A /* BIP70PaymentOutputFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP70PaymentOutputFactory.swift; sourceTree = ""; }; 59C18FCF827D815007BAEF29 /* DWLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = DWLogger.m; sourceTree = ""; }; 59C18FCF827D815007BAEB01 /* MainThreadStallMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MainThreadStallMonitor.swift; sourceTree = ""; }; + 026DD8B86018AC05DE749DD4 /* RetiredCrowdNodeDefaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RetiredCrowdNodeDefaults.swift; sourceTree = ""; }; 59C9D64AB542D03FE3704D02 /* ShieldedWithdrawalStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ShieldedWithdrawalStore.swift; sourceTree = ""; }; 287764F0D5D949B19AB5CEC2 /* CoreShieldedDrainService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CoreShieldedDrainService.swift; sourceTree = ""; }; 7C0DE5A1B2C34D5E6F708192 /* CoreShieldedDrainMaxController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CoreShieldedDrainMaxController.swift; sourceTree = ""; }; @@ -3111,7 +2953,6 @@ 08E25A4A85971BBF2BED6C3F /* SendToContactScreen.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SendToContactScreen.swift; sourceTree = ""; }; 3FA65DCAE38B074599D7BC86 /* SendToContactViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SendToContactViewController.swift; sourceTree = ""; }; 009CAE452A11A372A38C592D /* SendToContactViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SendToContactViewModel.swift; sourceTree = ""; }; - 5E1461688D08658B938A1066 /* MasternodeAPYCalculator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MasternodeAPYCalculator.swift; sourceTree = ""; }; 5EAD111130A0000000A1B201 /* MayaAmountFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MayaAmountFormatter.swift; sourceTree = ""; }; 5EAD222130A0000000A1B202 /* DashAmountFormatterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashAmountFormatterTests.swift; sourceTree = ""; }; 5EE4B9497B1F276EA0BDB20D /* DWRecoverModel+Mnemonic.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "DWRecoverModel+Mnemonic.swift"; sourceTree = ""; }; @@ -3156,7 +2997,6 @@ 752F81972E30F55E00ADA76D /* SecurityMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecurityMenuViewModel.swift; sourceTree = ""; }; A1C0D0010000000000000001 /* RecoveryPhraseFlow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecoveryPhraseFlow.swift; sourceTree = ""; }; 752F81A82E323FD000ADA76D /* ToolsMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolsMenuViewModel.swift; sourceTree = ""; }; - 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = CrowdNode.storyboard; sourceTree = ""; }; 7531308C2B47EC910069C9B7 /* UpholdClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdClient.swift; sourceTree = ""; }; 753130902B47EE920069C9B7 /* UpholdCapability.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdCapability.swift; sourceTree = ""; }; 753130962B4944130069C9B7 /* UpholdError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdError.swift; sourceTree = ""; }; @@ -3191,7 +3031,6 @@ 7556EE402DF9876B004E8093 /* ExploreSyncBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExploreSyncBannerView.swift; sourceTree = ""; }; 755B4B212B0C903500B844F0 /* DWDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DWDateFormatter.swift; sourceTree = ""; }; 755C32372C358FBD007DA721 /* BackupSeedPhraseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupSeedPhraseViewController.swift; sourceTree = ""; }; - 756557B42CE84FF70060348D /* FeeInfo.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeeInfo.swift; sourceTree = ""; }; 7566F4822BB69498005238D2 /* ToolsMenuScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToolsMenuScreen.swift; sourceTree = ""; }; 5AGOV0002F9A0000000000S1 /* GovernanceMenuScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GovernanceMenuScreen.swift; sourceTree = ""; }; 5AGOV0002F9A0000000000V1 /* GovernanceMenuViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GovernanceMenuViewModel.swift; sourceTree = ""; }; @@ -3229,7 +3068,6 @@ 759AFDDF2CC6356D007072D2 /* JoinDashPayScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinDashPayScreen.swift; sourceTree = ""; }; 9F8CD6705B090FCCFA9CC693 /* UsernameTypesInfoSheet.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UsernameTypesInfoSheet.swift; sourceTree = ""; }; 759AFDE22CC67E89007072D2 /* VotingInfoScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingInfoScreen.swift; sourceTree = ""; }; - 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeAPYView.swift; sourceTree = ""; }; 75A0A3F22CA7DBCF003ED48B /* TimeUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimeUtils.swift; sourceTree = ""; }; 75A2F3022DE48C860046BE17 /* CTXSpendTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashSpend/CTX/CTXSpendTokenService.swift; sourceTree = ""; }; 75A8C1682AE6A1AC0042256E /* VotingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VotingViewModel.swift; sourceTree = ""; }; @@ -3306,7 +3144,6 @@ 797D9070BF54A3533190584E /* libPods-dashwallet.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-dashwallet.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7A30000130A1000000000001 /* TransactionDirectionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TransactionDirectionTests.swift; sourceTree = ""; }; 7A32000130A3000000000001 /* PooledSendableBalanceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PooledSendableBalanceTests.swift; sourceTree = ""; }; - 7A30002130A2000000000021 /* CrowdNodeOwnershipTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeOwnershipTests.swift; sourceTree = ""; }; 7A31000130A2000000000001 /* CoinJoinMoveDestinationPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinJoinMoveDestinationPolicyTests.swift; sourceTree = ""; }; 7A30001130A1000000000011 /* StuckAssetLockRetryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StuckAssetLockRetryTests.swift; sourceTree = ""; }; 7C1177A130A1000000000001 /* InternalTransferNoticeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InternalTransferNoticeTests.swift; sourceTree = ""; }; @@ -3320,7 +3157,6 @@ 7FA744C4A6023E26A3B5B860 /* DWLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DWLogger.h; sourceTree = ""; }; 82926C69F3BB675BEF1A1FFD /* DWProfileUpdateCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DWProfileUpdateCoordinator.swift; sourceTree = ""; }; 8571065059CF5168F45C86E4 /* Pods-dashpay.testflight.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-dashpay.testflight.xcconfig"; path = "Target Support Files/Pods-dashpay/Pods-dashpay.testflight.xcconfig"; sourceTree = ""; }; - 8C25F44380CDB841AF55D3FF /* DarkCoinMessageFraming.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DarkCoinMessageFraming.swift; sourceTree = ""; }; 8C7313C7337036FEC54729E4 /* BIP70URI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP70URI.swift; sourceTree = ""; }; 8E6FAA6524ACE5F315B57AC3 /* SendViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SendViewModel.swift; sourceTree = ""; }; 91F0B8B82F3FAB7C00E713AE /* KeysOverviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeysOverviewView.swift; sourceTree = ""; }; @@ -3854,7 +3690,6 @@ C9F42FB129DD5141001BC549 /* BackupInfoViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupInfoViewController.swift; sourceTree = ""; }; C9F42FB329DD86FB001BC549 /* BackupInfoItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupInfoItemView.swift; sourceTree = ""; }; C9F42FB529DD8702001BC549 /* BackupInfoItemView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BackupInfoItemView.xib; sourceTree = ""; }; - C9F42FB729DFC506001BC549 /* SpendableTransaction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpendableTransaction.swift; sourceTree = ""; }; C9F451E42A0B986E00825057 /* MainTabbarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabbarController.swift; sourceTree = ""; }; A9D803992EA742E0A34208A6 /* WalletLifecycleOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletLifecycleOverlay.swift; sourceTree = ""; }; 05C514918D19469F88ED9DF6 /* WalletPreparationSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletPreparationSupport.swift; sourceTree = ""; }; @@ -3873,16 +3708,14 @@ C9FAABB62AB799AE00878224 /* UpholdPortalModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpholdPortalModel.swift; sourceTree = ""; }; CB9000012FE1000000000001 /* CoinbaseTransactionMetadataTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinbaseTransactionMetadataTests.swift; sourceTree = ""; }; CB9100012FE2000000000001 /* CoinbaseTransferAmountTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoinbaseTransferAmountTests.swift; sourceTree = ""; }; + D4466DE8A4A8417FA6C235BE /* RetiredCrowdNodeDefaultsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RetiredCrowdNodeDefaultsTests.swift; sourceTree = ""; }; + AB5926ED1241DB3E76CB54FC /* ShortcutActionTypeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShortcutActionTypeTests.swift; sourceTree = ""; }; CB9200012FE3000000000001 /* PassiveWalletStateUITailTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PassiveWalletStateUITailTests.swift; sourceTree = ""; }; CC0000062DUMMYID001234567 /* PiggyCardsAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsAPI.swift; sourceTree = ""; }; CC0000072DUMMYID001234567 /* PiggyCardsCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsCache.swift; sourceTree = ""; }; CC0000082DUMMYID001234567 /* PiggyCardsEndpoint.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsEndpoint.swift; sourceTree = ""; }; CC0000092DUMMYID001234567 /* PiggyCardsRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsRepository.swift; sourceTree = ""; }; CC0000102DUMMYID001234567 /* PiggyCardsTokenService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PiggyCardsTokenService.swift; sourceTree = ""; }; - CNR0000072FF100000000001 /* CrowdNodeBalanceReminder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeBalanceReminder.swift; sourceTree = ""; }; - CNR0000082FF100000000001 /* CrowdNodeBalanceReminderSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeBalanceReminderSheet.swift; sourceTree = ""; }; - CNR0000092FF100000000001 /* CrowdNodeBalanceReminderBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeBalanceReminderBanner.swift; sourceTree = ""; }; - CNR0000132FF100000000001 /* CrowdNodeWithdrawalRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrowdNodeWithdrawalRouter.swift; sourceTree = ""; }; D36BCF99A4D30077C9C9B0EB /* BIP70InteractiveCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BIP70InteractiveCoordinator.swift; sourceTree = ""; }; D385FC174E5B887CF3398CCD /* PinPromptPresenter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PinPromptPresenter.swift; sourceTree = ""; }; D38C4CD6A6423DBD22320CB0 /* SwiftDashSDKReceiveAddressProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SwiftDashSDKReceiveAddressProvider.swift; sourceTree = ""; }; @@ -4353,15 +4186,6 @@ path = ServiceOverview; sourceTree = ""; }; - 110C679629227895006B580C /* Extensions */ = { - isa = PBXGroup; - children = ( - 110D1780298BA9AF005BEB30 /* WKWebView+CrowdNode.swift */, - 110C679929227948006B580C /* UINavigationController+CrowdNode.swift */, - ); - path = Extensions; - sourceTree = ""; - }; 110D1782298CF84D005BEB30 /* Basic Info */ = { isa = PBXGroup; children = ( @@ -4370,105 +4194,6 @@ path = "Basic Info"; sourceTree = ""; }; - 1141E4C0291BB0FC00ACDA9E /* Portal */ = { - isa = PBXGroup; - children = ( - 1193FF3729606144004EA8D7 /* Views */, - 1193FF3429602815004EA8D7 /* Model */, - 1141E4C1291BB12200ACDA9E /* CrowdNodeTransferViewController.swift */, - 1147687D294B789800FB1EEE /* CrowdNodePortalViewController.swift */, - 111C3C4B296C51B500788E18 /* WithdrawalLimitsController.swift */, - 11ED906A29681773003784F9 /* StakingInfoDialogController.swift */, - ); - path = Portal; - sourceTree = ""; - }; - 1141E4C3291FDC3B00ACDA9E /* Getting Started */ = { - isa = PBXGroup; - children = ( - 1141E4C4291FDC7A00ACDA9E /* WelcomeToCrowdNodeViewController.swift */, - 110C67942921147F006B580C /* GettingStartedViewController.swift */, - ); - path = "Getting Started"; - sourceTree = ""; - }; - 11517C812949E677004FC7BF /* API */ = { - isa = PBXGroup; - children = ( - 11517C88294B11CE004FC7BF /* DTOs */, - 11517C842949E6F0004FC7BF /* CrowdNodeEndpoint.swift */, - ); - path = API; - sourceTree = ""; - }; - 11517C88294B11CE004FC7BF /* DTOs */ = { - isa = PBXGroup; - children = ( - 756557B42CE84FF70060348D /* FeeInfo.swift */, - 11517C89294B11DD004FC7BF /* CrowdNodeBalance.swift */, - 111C3C4D296C52F800788E18 /* WithdrawalLimit.swift */, - 1186092029758B2F00279FCC /* IsAddressInUse.swift */, - 11860922297598B400279FCC /* AddressStatus.swift */, - 11AE3DD52997AA36000856EE /* MessageStatus.swift */, - 11AE3DD72997C599000856EE /* IsDefaultEmail.swift */, - ); - path = DTOs; - sourceTree = ""; - }; - 117ECC7C29742A30003D798E /* Online */ = { - isa = PBXGroup; - children = ( - 117ECC7D29742A42003D798E /* CrowdNodeWebViewController.swift */, - 114D16B529812730009A124C /* OnlineAccountDetailsController.swift */, - 114D16B729828BCC009A124C /* OnlineAccountConfirmationController.swift */, - 118B7A3E29865A3A00FBB6CC /* ConfirmationTransactionQRController.swift */, - 110D1783298E68A8005BEB30 /* OnlineAccountInfoController.swift */, - 118C05B729928F7800717E65 /* OnlineAccountEmailController.swift */, - ); - path = Online; - sourceTree = ""; - }; - 117ED4A628ED66A2006E3EE4 /* TxFilters */ = { - isa = PBXGroup; - children = ( - C9F42FB729DFC506001BC549 /* SpendableTransaction.swift */, - 117ED4A728ED66F9006E3EE4 /* TransactionFilter.swift */, - 119E8D092905413F00D406C1 /* TransactionWrapper.swift */, - 119E8D052905200300D406C1 /* CoinsToAddressTxFilter.swift */, - 119E8D0F290949B900D406C1 /* CrowdNodeErrorResponse.swift */, - 119E8D0329051F9900D406C1 /* CrowdNodeRequest.swift */, - 11B8449528F5B9F80082770C /* CrowdNodeResponse.swift */, - 119E8D0B2907C61400D406C1 /* CrowdNodeTopUpTx.swift */, - 114CFECF296469D9005F421B /* CrowdNodeDepositTx.swift */, - 119E8D072905409300D406C1 /* FullCrowdNodeSignUpTxSet.swift */, - 11B8449928F6D5480082770C /* SingleInputAddressSelector.swift */, - 111C3C4F296D5A4700788E18 /* TxWithinTimePeriod.swift */, - 111C3C53296D6A2D00788E18 /* CrowdNodeWithdrawalReceivedTx.swift */, - 1186092429759C4B00279FCC /* CrowdNodeAPIConfirmationTx.swift */, - ); - path = TxFilters; - sourceTree = ""; - }; - 1193FF3429602815004EA8D7 /* Model */ = { - isa = PBXGroup; - children = ( - 1193FF3529602835004EA8D7 /* CrowdNodeTransferModel.swift */, - 117728A2297A7D24006F1553 /* CrowdNodePortalItem.swift */, - ); - path = Model; - sourceTree = ""; - }; - 1193FF3729606144004EA8D7 /* Views */ = { - isa = PBXGroup; - children = ( - 1193FF3829606151004EA8D7 /* KeyboardHeader.swift */, - 1193FF3A2961960B004EA8D7 /* FromLabel.swift */, - 114CFED1296489CD005F421B /* MinimumDepositBanner.swift */, - 470617D5299A671900DCC667 /* CrowdNodeCell.swift */, - ); - path = Views; - sourceTree = ""; - }; 1193FF3C2962F147004EA8D7 /* Operation Status */ = { isa = PBXGroup; children = ( @@ -4479,67 +4204,6 @@ path = "Operation Status"; sourceTree = ""; }; - 11B8449228F27C370082770C /* Model */ = { - isa = PBXGroup; - children = ( - 11B8449328F27C460082770C /* ApiCode.swift */, - 119E8D112909513F00D406C1 /* CrowdNodeError.swift */, - ); - path = Model; - sourceTree = ""; - }; - 11BD737A28E6BCD400A34022 /* New Account */ = { - isa = PBXGroup; - children = ( - 11BD737D28E6BD7400A34022 /* NewAccountViewController.swift */, - 118A1392291AA21B002641E4 /* AccountCreatingController.swift */, - ); - path = "New Account"; - sourceTree = ""; - }; - 11BD737F28E7354200A34022 /* CrowdNode */ = { - isa = PBXGroup; - children = ( - 11517C812949E677004FC7BF /* API */, - 11B8449228F27C370082770C /* Model */, - 117ED4A628ED66A2006E3EE4 /* TxFilters */, - 11E47BA928EB383E0097CFA0 /* Services */, - 11BD738028E7356100A34022 /* CrowdNode.swift */, - 11E47BAC28EB3A7D0097CFA0 /* CrowdNode+Constants.swift */, - 111C3C51296D620D00788E18 /* CrowdNode+UserDefaults.swift */, - CNR0000072FF100000000001 /* CrowdNodeBalanceReminder.swift */, - 5E1461688D08658B938A1066 /* MasternodeAPYCalculator.swift */, - ); - path = CrowdNode; - sourceTree = ""; - }; - 11C5F51128E5D0C500F6F135 /* CrowdNode */ = { - isa = PBXGroup; - children = ( - 47083B392989488D0010AF71 /* Tx Details */, - 47083B3329893E260010AF71 /* Views */, - CNR0000102FF100000000001 /* BalanceReminder */, - 110C679629227895006B580C /* Extensions */, - 117ECC7C29742A30003D798E /* Online */, - 1141E4C3291FDC3B00ACDA9E /* Getting Started */, - 1141E4C0291BB0FC00ACDA9E /* Portal */, - 11BD737A28E6BCD400A34022 /* New Account */, - 11E47BA728EAE7AD0097CFA0 /* CrowdNodeModel.swift */, - 75303FE42AE7B70500870D8B /* CrowdNode.storyboard */, - ); - path = CrowdNode; - sourceTree = ""; - }; - 11E47BA928EB383E0097CFA0 /* Services */ = { - isa = PBXGroup; - children = ( - 117ED4A028EC86E0006E3EE4 /* TransactionObserver.swift */, - 11517C86294B0FED004FC7BF /* CrowdNodeWebService.swift */, - 8C25F44380CDB841AF55D3FF /* DarkCoinMessageFraming.swift */, - ); - path = Services; - sourceTree = ""; - }; 2A0C69A023104798001B8C90 /* PaymentModels */ = { isa = PBXGroup; children = ( @@ -5002,7 +4666,6 @@ C943B34F2A40A54500AF23C5 /* DashPay */, 4751137228DAF27300223B77 /* Assembly */, C9F42FA729DC09C6001BC549 /* Style */, - 11C5F51128E5D0C500F6F135 /* CrowdNode */, 47A50F362912D9A800C70123 /* Payment Controller */, 4751136A28D9A3BE00223B77 /* Buy Sell */, 47AE8BB328C1305E00490F5E /* Explore Dash */, @@ -5041,7 +4704,6 @@ 75A8C1612AE571E30042256E /* Voting */, 5A1EC0FE2E29A20000000017 /* PlatformAddress */, 47081194298CF1E3003FCA3D /* Transactions */, - 11BD737F28E7354200A34022 /* CrowdNode */, 479DBDDB2995167800F30AF1 /* Tx */, 4709C313287EA10600B4BD48 /* Tx Metadata */, 0F6EDF9328C894B9000427E7 /* Coinbase */, @@ -6168,9 +5830,19 @@ path = Send; sourceTree = ""; }; + D4D878F7E508D3F38E00D5BB /* Observation */ = { + isa = PBXGroup; + children = ( + 117ED4A728ED66F9006E3EE4 /* TransactionFilter.swift */, + 117ED4A028EC86E0006E3EE4 /* TransactionObserver.swift */, + ); + path = Observation; + sourceTree = ""; + }; 47081194298CF1E3003FCA3D /* Transactions */ = { isa = PBXGroup; children = ( + D4D878F7E508D3F38E00D5BB /* Observation */, 47081195298CF1FE003FCA3D /* Model */, 11E47BAA28EB38510097CFA0 /* SendCoinsService.swift */, FE0000000000000000000061 /* ExtendedPublicKeysView.swift */, @@ -6196,22 +5868,6 @@ path = Model; sourceTree = ""; }; - 47083B3329893E260010AF71 /* Views */ = { - isa = PBXGroup; - children = ( - 759C8F9E2B593589004B1305 /* CrowdNodeAPYView.swift */, - ); - path = Views; - sourceTree = ""; - }; - 47083B392989488D0010AF71 /* Tx Details */ = { - isa = PBXGroup; - children = ( - 757B937C2BFF4F93002046A5 /* GroupedTransactionsScreen.swift */, - ); - path = "Tx Details"; - sourceTree = ""; - }; 4709C310287E78BD00B4BD48 /* Migrations */ = { isa = PBXGroup; children = ( @@ -6595,6 +6251,7 @@ 7E31813A79237F4E037063AA /* SwiftDashSDK */, 59C18FCF827D815007BAEF29 /* DWLogger.m */, 59C18FCF827D815007BAEB01 /* MainThreadStallMonitor.swift */, + 026DD8B86018AC05DE749DD4 /* RetiredCrowdNodeDefaults.swift */, E70A780D1543343311C16402 /* Authentication */, 7FA744C4A6023E26A3B5B860 /* DWLogger.h */, 0448A6769BCF20987BE9960C /* DiagnosticLogExporter.swift */, @@ -7027,6 +6684,7 @@ 47F2C67E2860314A00C2B774 /* Details */ = { isa = PBXGroup; children = ( + 757B937C2BFF4F93002046A5 /* GroupedTransactionsScreen.swift */, 2A1B7D9E23239C7500BA8C6A /* Model */, 2A1B7D82232156A600BA8C6A /* Views */, BA1B0011C0FFEE00B15B0011 /* RawTransactionView.swift */, @@ -7653,9 +7311,10 @@ A1C0DE0242FBB4945119F002 /* PendingInvitationViewModelTests.swift */, CB9000012FE1000000000001 /* CoinbaseTransactionMetadataTests.swift */, CB9100012FE2000000000001 /* CoinbaseTransferAmountTests.swift */, + D4466DE8A4A8417FA6C235BE /* RetiredCrowdNodeDefaultsTests.swift */, + AB5926ED1241DB3E76CB54FC /* ShortcutActionTypeTests.swift */, 7A30000130A1000000000001 /* TransactionDirectionTests.swift */, 7A32000130A3000000000001 /* PooledSendableBalanceTests.swift */, - 7A30002130A2000000000021 /* CrowdNodeOwnershipTests.swift */, 7A31000130A2000000000001 /* CoinJoinMoveDestinationPolicyTests.swift */, 7A30001130A1000000000011 /* StuckAssetLockRetryTests.swift */, 7C1177A130A1000000000001 /* InternalTransferNoticeTests.swift */, @@ -9114,16 +8773,6 @@ path = "Sync View"; sourceTree = ""; }; - CNR0000102FF100000000001 /* BalanceReminder */ = { - isa = PBXGroup; - children = ( - CNR0000082FF100000000001 /* CrowdNodeBalanceReminderSheet.swift */, - CNR0000092FF100000000001 /* CrowdNodeBalanceReminderBanner.swift */, - CNR0000132FF100000000001 /* CrowdNodeWithdrawalRouter.swift */, - ); - path = BalanceReminder; - sourceTree = ""; - }; D5A0D000D5A0D000D5A0D000 /* Components */ = { isa = PBXGroup; children = ( @@ -9559,7 +9208,6 @@ files = ( 2A1AF6DE23C7681B00442AF5 /* DWShortcutCollectionViewCell~ipad.xib in Resources */, 474C720D298A19D100475CA6 /* TxDetailHeaderCell.xib in Resources */, - 75303FE52AE7B70500870D8B /* CrowdNode.storyboard in Resources */, 75EBAA222BBA9D3C004488E3 /* ZenLedger-Info.plist in Resources */, C9FAABB52AB793CE00878224 /* BuySellPortal.storyboard in Resources */, 2A1AF6DF23C7681B00442AF5 /* DWShortcutCollectionViewCell~iphone.xib in Resources */, @@ -9706,7 +9354,6 @@ C9D2C9422A320AA000D15901 /* Setup.storyboard in Resources */, C9D2C9432A320AA000D15901 /* GoogleService-Info.plist in Resources */, C9D2C9442A320AA000D15901 /* uphold-logout.jpg in Resources */, - 75303FE62AE7B70500870D8B /* CrowdNode.storyboard in Resources */, C9D2C9452A320AA000D15901 /* AmountPreviewView.xib in Resources */, C9D2C9462A320AA000D15901 /* TxDetailActionCell.xib in Resources */, ); @@ -10102,7 +9749,6 @@ 2AD1CE6E22DA357D00C99324 /* DWBaseViewController.m in Sources */, 2A44314722CF82D9009BAF7F /* DWBiometricAuthViewController.m in Sources */, 75FFD6BE2BF491FC0032879E /* HomeViewController+BackupReminder.swift in Sources */, - 11517C87294B0FED004FC7BF /* CrowdNodeWebService.swift in Sources */, 75EBAA1D2BBA71D9004488E3 /* ZenLedgerInfoSheet.swift in Sources */, 7569D6832DE6DA6800768BFF /* ExploreViewController.swift in Sources */, 2AB3417A23A929B6004E37A7 /* DWAdvancedSecurityModelStub.m in Sources */, @@ -10110,11 +9756,9 @@ 2A9FFE872230FF4700956D5F /* DWPlaceholderFormTableViewCell.m in Sources */, 47C661B828FE907300028A8D /* AmountInputControl.swift in Sources */, 2A1F640C238D5BBB00A9B505 /* DWSegmentSliderFormTableViewCell.m in Sources */, - 11B8449428F27C470082770C /* ApiCode.swift in Sources */, 47838B92290701470003E8AB /* CoinbaseEntryPointModel.swift in Sources */, C9F451EB2A0BF10B00825057 /* SyncingAlertViewController.swift in Sources */, A11E57A7000BC0DE000BB00B /* SyncingAlertView.swift in Sources */, - 11B8449628F5B9F80082770C /* CrowdNodeResponse.swift in Sources */, 47AE8BB228BFF61A00490F5E /* FileManager+DashWallet.swift in Sources */, 7545ED532DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */, 47AE8BF228C1306000490F5E /* PointOfUseItemCell.swift in Sources */, @@ -10125,17 +9769,12 @@ 4751136C28D9A3DB00223B77 /* BuySellPortalViewController.swift in Sources */, AA00000128D9A3DB00223B77 /* BuySellPortalView.swift in Sources */, 8DF3D24EE3B247B79AE9CAB5 /* BuySellPortalScreen.swift in Sources */, - CNR0000012FF100000000001 /* CrowdNodeBalanceReminder.swift in Sources */, - CNR0000032FF100000000001 /* CrowdNodeBalanceReminderSheet.swift in Sources */, - CNR0000052FF100000000001 /* CrowdNodeBalanceReminderBanner.swift in Sources */, - CNR0000112FF100000000001 /* CrowdNodeWithdrawalRouter.swift in Sources */, 2A7A7BD62348CB6600451078 /* SettingsScreen.swift in Sources */, DECAF00000000000000000A2 /* DevnetSettingsScreen.swift in Sources */, C0FA5E0000000000000000A2 /* AdvancedModeInfoSheet.swift in Sources */, C0FA5E0000000000000000B2 /* SettingsAlerts.swift in Sources */, 2A0C69DA2314727F001B8C90 /* UISpringTimingParameters+DWInit.m in Sources */, 47C661AD28F972BD00028A8D /* NumberKeyboardButton.swift in Sources */, - 11AE3DD82997C599000856EE /* IsDefaultEmail.swift in Sources */, 75A2F3042DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */, 2A9FFE812230FF4700956D5F /* DWFormTableViewController.m in Sources */, C909614D29EFF7D600002D82 /* WalletKeysOverviewModel.swift in Sources */, @@ -10161,7 +9800,6 @@ 51A57B032FBB41DE00FB4097 /* OrderPreviewTableRow.swift in Sources */, 51A57B042FBB41DE00FB4097 /* SwapFeeInfoSheet.swift in Sources */, 2ACD53EE234C9D8E00650AD3 /* UIView+DWRecursiveSubview.m in Sources */, - 11860923297598B400279FCC /* AddressStatus.swift in Sources */, C91E919729FBACE6003E7883 /* ExtendedPublicKeysModel.swift in Sources */, C9829CE22A562CEE007132E4 /* TappableTextView.swift in Sources */, 4751CAD5297024EA00F63AC4 /* OrderPreviewViewController.swift in Sources */, @@ -10169,9 +9807,7 @@ 47CDEEC72949DC38008AE06D /* BasicInfoController.swift in Sources */, 2AD1CEA822E0C8C900C99324 /* DWPreviewSeedPhraseModel.m in Sources */, 2A0C69CD23142F90001B8C90 /* DWModalPresentationAnimation.m in Sources */, - 110C679A29227948006B580C /* UINavigationController+CrowdNode.swift in Sources */, 2A8B9E7A2302E67400FF8653 /* DWReceiveModel.m in Sources */, - 119E8D0A2905413F00D406C1 /* TransactionWrapper.swift in Sources */, 479DBDDD2995168C00F30AF1 /* Transactions.swift in Sources */, 75F3F00D2C48F819004470EA /* RootEditProfileViewController.swift in Sources */, 2A74EFFB2305464C00C475EB /* DWRecoverTextView.m in Sources */, @@ -10186,13 +9822,10 @@ 47C661AB28F9707A00028A8D /* NumberKeyboard.swift in Sources */, 75F51AAD2ABD8C800057B499 /* IntegrationViewController+Uphold.swift in Sources */, 2A4431E622D73617009BAF7F /* DWSeedPhraseTitledView.m in Sources */, - 119E8D0C2907C61400D406C1 /* CrowdNodeTopUpTx.swift in Sources */, C9F42FB429DD86FB001BC549 /* BackupInfoItemView.swift in Sources */, - 118A1393291AA21B002641E4 /* AccountCreatingController.swift in Sources */, 7527720D2AA9B2630066557E /* SupportedTopperAssets.swift in Sources */, 2A4E534422F02BC300E5168A /* UIView+DWReuseHelper.m in Sources */, 2A913E9C23A53B8E006A2A59 /* DWExtendedContainerViewController.m in Sources */, - 11517C852949E6F0004FC7BF /* CrowdNodeEndpoint.swift in Sources */, 0F71317528F4365C0072F454 /* ServiceEntryPointModel.swift in Sources */, 759ADD572BF3447400767ACD /* Button.swift in Sources */, 47AE8B9528BFACA100490F5E /* ExploreDash.swift in Sources */, @@ -10202,11 +9835,9 @@ 2A4430EE22CBBAC9009BAF7F /* DWSetupViewController.m in Sources */, 47AE8BAB28BFAE5800490F5E /* ExploreDatabaseConnection.swift in Sources */, A1060800B100000000000001 /* ExplorePointOfUse+PreviewMock.swift in Sources */, - 111C3C4C296C51B500788E18 /* WithdrawalLimitsController.swift in Sources */, 75FFD6B82BF47BA20032879E /* HomeViewController.swift in Sources */, 0F6EDFCD28C896BD000427E7 /* CoinbaseTransactionResponse.swift in Sources */, 4709C31F28818BAE00B4BD48 /* TxDetailModel.swift in Sources */, - 11BD737E28E6BD7400A34022 /* NewAccountViewController.swift in Sources */, 47AE8BFA28C1306000490F5E /* PointOfUseListModel.swift in Sources */, C3DAD2CF247585C10001624F /* NSPredicate+DWFullTextSearch.m in Sources */, 47F2C6842860513900C2B774 /* TxReclassifyTransactionsWhereToChangeViewController.swift in Sources */, @@ -10215,12 +9846,10 @@ 2A7A7C16234B763600451078 /* DWLocalCurrencyViewController.m in Sources */, 752D03B22E2F7B3C00B88784 /* MainMenuViewControllerDelegate.swift in Sources */, C9F451FD2A0CC4A300825057 /* BadgeView.swift in Sources */, - 756557B52CE84FFA0060348D /* FeeInfo.swift in Sources */, C9F451F52A0CAC9400825057 /* HomeHeaderView.swift in Sources */, C9F451F92A0CB08900825057 /* ProgressView.swift in Sources */, 2A2120EA2214566A009906DC /* DWAmountInputValidator.m in Sources */, 47AE8BF628C1306000490F5E /* ExplorePointOfUseListViewController.swift in Sources */, - 117ECC7E29742A42003D798E /* CrowdNodeWebViewController.swift in Sources */, 2AE4736B241BC5E300804DD4 /* UIViewController+DWDisplayError.m in Sources */, 2A858A10237EE89C0097A7B5 /* BRAppleWatchData.m in Sources */, 2ACCD85D231939FE00A96B62 /* DWRequestAmountContentView.m in Sources */, @@ -10228,7 +9857,6 @@ 47838B7728FFFFAD0003E8AB /* AmountInputTypeSwitcher.swift in Sources */, 2A9FFE882230FF4700956D5F /* DWPlaceholderFormCellModel.m in Sources */, 2A8B9E4F22FED47E00FF8653 /* DWOverlapControl.m in Sources */, - 119E8D062905200300D406C1 /* CoinsToAddressTxFilter.swift in Sources */, 7545ED572DA91AF10075F45C /* DashSpendUserAuthViewModel.swift in Sources */, 2AB3417323A926C9004E37A7 /* DWDemoAppRootViewController.m in Sources */, 2A9FFE9B2230FF4700956D5F /* DWUpholdLogoutTutorialViewController.m in Sources */, @@ -10240,7 +9868,6 @@ 47838B7528FFD1D10003E8AB /* AmountView.swift in Sources */, 4759D512292FD6F3002F20DC /* DWBasePayViewController.m in Sources */, 75EE9F432DE2F750000AD1AD /* DashSpendConfirmationDialog.swift in Sources */, - 1193FF3629602835004EA8D7 /* CrowdNodeTransferModel.swift in Sources */, 2A44312622CCC14F009BAF7F /* DWSetPinViewController.m in Sources */, 47F4B6C7294842DF00AED4C9 /* ConfirmOrderController.swift in Sources */, 2A10EB442358D2CA00C38B61 /* DWResetWalletInfoViewController.m in Sources */, @@ -10252,7 +9879,6 @@ C9F451E72A0BA16400825057 /* PaymentButton.swift in Sources */, 2A4431DB22D675CD009BAF7F /* DWPreviewSeedPhraseViewController.m in Sources */, C956AF2F2A5D5F6B002FAB75 /* UpholdConfirmViewController.swift in Sources */, - 110D1781298BA9AF005BEB30 /* WKWebView+CrowdNode.swift in Sources */, 47FA3AFF29350929008D58DC /* SyncingActivityMonitor.swift in Sources */, C9F42FB029DC27F4001BC549 /* EmptyUIView.swift in Sources */, 75D9EBB82DE5CC3A009416A2 /* AddGiftCardsTable.swift in Sources */, @@ -10285,7 +9911,6 @@ 2A74EFFE2305763F00C475EB /* DWRecoverModel.m in Sources */, 2A4431C822D4D92A009BAF7F /* DWCenteredTableView.m in Sources */, 2A913E6F23A26663006A2A59 /* DWOnboardingViewController.m in Sources */, - 111C3C52296D620D00788E18 /* CrowdNode+UserDefaults.swift in Sources */, 2A44313922CE2CB9009BAF7F /* DWPinView.m in Sources */, 2AB3416523A8213C004E37A7 /* DWBaseReceiveModel.m in Sources */, 2A1F6412238D650200A9B505 /* DWSegmentSlider.m in Sources */, @@ -10318,9 +9943,7 @@ 2A0C699C23104588001B8C90 /* DWPaymentInput.m in Sources */, 75D9EBC62DE5CE14009416A2 /* GiftCardDetailsViewModel.swift in Sources */, 75D9EBC72DE5CE14009416A2 /* GiftCardDetailsView.swift in Sources */, - 114D16B629812730009A124C /* OnlineAccountDetailsController.swift in Sources */, C9F451E92A0BDAE700825057 /* UIApplication+DashWallet.swift in Sources */, - 110D1784298E68A8005BEB30 /* OnlineAccountInfoController.swift in Sources */, 752F81AA2E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */, 470AE1882926600A001A0514 /* PaymentController.swift in Sources */, 751C05DE2D3E39A800475E52 /* TransactionListDataItem.swift in Sources */, @@ -10333,21 +9956,17 @@ 2ADB396C242615C200A6F898 /* CALayer+MBAnimationPersistence.m in Sources */, 2A9FFDF42230FF1A00956D5F /* UIView+DWAnimations.m in Sources */, 114573A42949B221009DCF27 /* VerifiedSuccessfullyViewController.swift in Sources */, - 1193FF3929606151004EA8D7 /* KeyboardHeader.swift in Sources */, 2A9FFE932230FF4700956D5F /* DWUpholdOTPViewController.m in Sources */, 2A8B9E7D23034AC100FF8653 /* DWAppGroupOptions.m in Sources */, C94D98282A53035D00F3BEE1 /* EnterAddressViewController.swift in Sources */, 47F2C67D28602D4F00C2B774 /* BasePageSheetViewController.swift in Sources */, - 119E8D0429051F9900D406C1 /* CrowdNodeRequest.swift in Sources */, 0F6EDFD228C896BD000427E7 /* CoinbaseExchangeRateResponse.swift in Sources */, - 117728A3297A7D24006F1553 /* CrowdNodePortalItem.swift in Sources */, 75EAFBB12B04C057005ABC6A /* CustomHUDView.swift in Sources */, 47C661B628FE75A700028A8D /* BaseViewController.swift in Sources */, 4751CAC0296EFD2900F63AC4 /* AccountListController.swift in Sources */, 2A9FFE032230FF2B00956D5F /* DWUpholdTransactionObject.m in Sources */, 2AF26F3B230C0E4C007F9228 /* DWBaseSeedViewController.m in Sources */, 2A8B9E4D22FEBF7A00FF8653 /* DWProgressAnimator.mm in Sources */, - 11E47BA828EAE7AD0097CFA0 /* CrowdNodeModel.swift in Sources */, 4730586E295AB3BE004641DA /* UIDevice+Compatibility.swift in Sources */, 2A4431E222D7219E009BAF7F /* DWSeedWordView.m in Sources */, 753F75382DD0D76400D40DFE /* DashSpendPayViewModel.swift in Sources */, @@ -10363,7 +9982,6 @@ 75FFD6C72BF495800032879E /* HomeViewController+Shortcuts.swift in Sources */, C9F42FA629DC092B001BC549 /* ReceiveViewController.swift in Sources */, 757422272DF87B8300CB0175 /* MerchantFiltersViewModel.swift in Sources */, - 118B7A3F29865A3A00FBB6CC /* ConfirmationTransactionQRController.swift in Sources */, 47E4B7B7292F85E800CE0EB6 /* Numbers+Dash.swift in Sources */, 478C983229433C5700FAA0F0 /* PaymentMethodsController.swift in Sources */, 47AE8C1328C5F0A700490F5E /* POIDetailsViewController.swift in Sources */, @@ -10378,7 +9996,6 @@ 4751CAD6297024ED00F63AC4 /* OrderPreviewModel.swift in Sources */, 2A885FD6244DFEF100B9F679 /* UIView+DWFindConstraints.m in Sources */, 2A1B7DA52323AC1F00BA8C6A /* DWModalPopupPresentationController.m in Sources */, - 11517C8A294B11DD004FC7BF /* CrowdNodeBalance.swift in Sources */, 471DD1BA290A962B00E030C8 /* String+DashWallet.swift in Sources */, 7569D6862DE6DB2200768BFF /* ExploreHeaderView.swift in Sources */, 75AA33CF2BF9D44A00F12465 /* ButtonsGroup.swift in Sources */, @@ -10389,12 +10006,10 @@ AA0030212FD0000000000021 /* CoinbaseMetadataProvider.swift in Sources */, C909615929F29C9200002D82 /* KeysOverviewCell.swift in Sources */, 2ACCD86E2319609400A96B62 /* UIViewController+DWShareReceiveInfo.m in Sources */, - 114D16B829828BCC009A124C /* OnlineAccountConfirmationController.swift in Sources */, 47838B8C29068F110003E8AB /* BaseResponse.swift in Sources */, 279C16F9AF0575C540E312E5 /* SwapConvertCardRow.swift in Sources */, 2AB3417723A92978004E37A7 /* DWDemoAdvancedSecurityViewController.m in Sources */, C9829CDE2A562822007132E4 /* TappableLabel.swift in Sources */, - 111C3C50296D5A4700788E18 /* TxWithinTimePeriod.swift in Sources */, 0F6EDFC528C896BD000427E7 /* CoinbaseSwapeTradeRequest.swift in Sources */, 2A44311722CBF0B2009BAF7F /* UIFont+DWFont.m in Sources */, 47E94B97296D7D5B000FE68E /* CustodialSwapsViewController.swift in Sources */, @@ -10418,7 +10033,6 @@ C017200000000000000AA2 /* RequestAmountScreen.swift in Sources */, 2AFCB9C423BE76EC00FF59A6 /* DWUpholdTransactionObject+DWView.m in Sources */, 75CDD7862C08D61300F433D2 /* DashAmount.swift in Sources */, - 114CFED0296469D9005F421B /* CrowdNodeDepositTx.swift in Sources */, 2A9FFF192233E56E00956D5F /* DWIntrinsicTableView.m in Sources */, 2A913E6623A11DFE006A2A59 /* DWURLActions.m in Sources */, C9903A5429E6A5F600535A4E /* KeysOverviewViewController.swift in Sources */, @@ -10436,20 +10050,16 @@ 478C98262942DC2700FAA0F0 /* BuyDashViewController.swift in Sources */, 2A0C69D023143435001B8C90 /* DWModalDismissalAnimation.m in Sources */, 47CDEECE294A3CF2008AE06D /* UIViewController+DashWallet.swift in Sources */, - 470617D6299A671900DCC667 /* CrowdNodeCell.swift in Sources */, 47AE8BF528C1306000490F5E /* MerchantListLocationOffCell.swift in Sources */, - 1186092529759C4B00279FCC /* CrowdNodeAPIConfirmationTx.swift in Sources */, 2A913E9023A31713006A2A59 /* UIViewController+DWEmbedding.m in Sources */, 2A2CD71322F97B65008C7BC9 /* CALayer+DWShadow.m in Sources */, 47AE8BA528BFADD900490F5E /* MerchantDAO.swift in Sources */, 47AE8BAA28BFAE5800490F5E /* ExploreDatabaseSyncManager.swift in Sources */, 2AB3416923A8C479004E37A7 /* DWOnboardingCollectionViewCell.m in Sources */, - 119E8D10290949B900D406C1 /* CrowdNodeErrorResponse.swift in Sources */, 2A913E8223A30623006A2A59 /* DWHomeModelStub.m in Sources */, 2ADC9D1C24603C4F001D7C0D /* UISearchBar+DWAdditions.m in Sources */, 75CED0A02ACFED200095F10C /* CoinbaseDepositResponse.swift in Sources */, 117ED4A828ED66F9006E3EE4 /* TransactionFilter.swift in Sources */, - 111C3C54296D6A2D00788E18 /* CrowdNodeWithdrawalReceivedTx.swift in Sources */, 47AE8C0328C1F0C600490F5E /* PointOfUseListSegmentedCell.swift in Sources */, 2A913E6823A1473A006A2A59 /* DWURLRequestHandler.m in Sources */, 0F6EDFD628C896BD000427E7 /* CoinbaseAPIEndpoint.swift in Sources */, @@ -10462,7 +10072,6 @@ 2A0C69A3231048DA001B8C90 /* DWPaymentProcessor.m in Sources */, 75CDD7832C0898FA00F433D2 /* Wrapper.swift in Sources */, C9F451F32A0C933700825057 /* SyncingHeaderView.swift in Sources */, - 114CFED2296489CD005F421B /* MinimumDepositBanner.swift in Sources */, 47838B8F2906D7340003E8AB /* BalanceView.swift in Sources */, 2AD85A9F245881740045B480 /* DWQRScanStatusView.m in Sources */, 2A741DC62363A06000840ADF /* DWURLParser.m in Sources */, @@ -10536,9 +10145,7 @@ 2A44314C22CF8801009BAF7F /* DWBiometricAuthModel.m in Sources */, 7527720F2AA9F58E0066557E /* TopperViewModel.swift in Sources */, 2ACCD8ED231ECCF000A96B62 /* DWNumberKeyboardInputViewAudioFeedback.m in Sources */, - 11E47BAD28EB3A7D0097CFA0 /* CrowdNode+Constants.swift in Sources */, 47F006022971B1FF0029EB10 /* CurrencyExchanger.swift in Sources */, - 11AE3DD62997AA36000856EE /* MessageStatus.swift in Sources */, 2AD1CEAB22E18F1800C99324 /* DWGlobalOptions.m in Sources */, 754BEA122C0B6BD700E8C93C /* HomeViewModel.swift in Sources */, 2A4430E722CBB6EC009BAF7F /* AppDelegate.m in Sources */, @@ -10554,7 +10161,6 @@ 47CDEECC294A2BAD008AE06D /* UIViewController+Coinbase.swift in Sources */, 472D13E1299E1F2F006903F1 /* CSVBuilder.swift in Sources */, 0F6EDFC428C896BD000427E7 /* CoinbaseUserAuthInformation.swift in Sources */, - 118C05B829928F7800717E65 /* OnlineAccountEmailController.swift in Sources */, 2A74EFE92305264200C475EB /* DWBaseActionButtonViewController.m in Sources */, 0F6EDFC828C896BD000427E7 /* CoinbasePaymentMethodsResponse.swift in Sources */, 2A913E8C23A3134E006A2A59 /* UIView+DWEmbedding.m in Sources */, @@ -10625,7 +10231,6 @@ 474C7218298A422500475CA6 /* TransactionItemView.swift in Sources */, 474C7211298A1A9500475CA6 /* UIView+Reuse.swift in Sources */, 2A9FFE072230FF2B00956D5F /* DWUpholdClient.m in Sources */, - 1147687E294B789800FB1EEE /* CrowdNodePortalViewController.swift in Sources */, 47F4B6CA29484C9800AED4C9 /* ConfirmOrderModel.swift in Sources */, 472CEE012924AA6D00656B48 /* PointOfUseListEmptyResultsView.swift in Sources */, 2A6300452328D07500827825 /* DWLockPinInputView.m in Sources */, @@ -10638,7 +10243,6 @@ C9F42FB229DD5141001BC549 /* BackupInfoViewController.swift in Sources */, 2A7A7BAE234770C900451078 /* DWCaptureSessionManager.m in Sources */, 91F0B8BA2F3FAB7C00E713AE /* KeysOverviewView.swift in Sources */, - 759C8F9F2B593589004B1305 /* CrowdNodeAPYView.swift in Sources */, C94D982E2A544E8E00F3BEE1 /* UIButton+Dash.swift in Sources */, C956AF2B2A5CC97F002FAB75 /* ConfirmPaymentModel.swift in Sources */, 472D13E6299E3C82006903F1 /* AmountPreviewView.swift in Sources */, @@ -10664,7 +10268,6 @@ 471A2608289ACDA00056B7B2 /* AddressUserInfoDAO.swift in Sources */, 2A0C69D323143568001B8C90 /* DWModalTransition.m in Sources */, 47AE8BF928C1306000490F5E /* MerchantsDataProvider.swift in Sources */, - 119E8D082905409300D406C1 /* FullCrowdNodeSignUpTxSet.swift in Sources */, 2A4431E922D738C0009BAF7F /* DWSeedPhraseModel.m in Sources */, 478C983C2945801D00FAA0F0 /* Constants.swift in Sources */, 753130912B47EE920069C9B7 /* UpholdCapability.swift in Sources */, @@ -10674,7 +10277,6 @@ 47AE8BFB28C1306000490F5E /* ExploreMapAnnotationView.swift in Sources */, 757B937D2BFF4F93002046A5 /* GroupedTransactionsScreen.swift in Sources */, 2A4E533822F023AB00E5168A /* DWHomeModel.m in Sources */, - 1186092129758B2F00279FCC /* IsAddressInUse.swift in Sources */, 2A8B9E4022FD75C000FF8653 /* DWSegmentedControl.m in Sources */, 47AE8BF328C1306000490F5E /* MerchantItemCell.swift in Sources */, 478C98372943A60000FAA0F0 /* PaymentMethodCell.swift in Sources */, @@ -10698,19 +10300,14 @@ 5151CA262F92335E00F0A604 /* LocalCurrencyView.swift in Sources */, 514AEAD52FB34F8600F9B54C /* OrderPreviewView.swift in Sources */, 472D13DF299DF5C6006903F1 /* TaxReportGenerator.swift in Sources */, - 119E8D122909513F00D406C1 /* CrowdNodeError.swift in Sources */, 75D9EBC32DE5CD9C009416A2 /* GiftCardsDAO.swift in Sources */, - 111C3C4E296C52F800788E18 /* WithdrawalLimit.swift in Sources */, 2A8B9E6522FFE43500FF8653 /* DWPayModel.m in Sources */, 47AE8C1828C63F9C00490F5E /* POIDetailsView.swift in Sources */, - 1193FF3B2961960B004EA8D7 /* FromLabel.swift in Sources */, 2A9172D325233F4F0024B4C5 /* DWPhraseRepairChildViewController.m in Sources */, - 11B8449A28F6D5480082770C /* SingleInputAddressSelector.swift in Sources */, 0F6EDFCF28C896BD000427E7 /* CoinbaseAccountAddress.swift in Sources */, 7531308D2B47EC910069C9B7 /* UpholdClient.swift in Sources */, 75EBAA092BB9791B004488E3 /* Icon.swift in Sources */, AA0031022FD0000000000012 /* IconName+DashIconSource.swift in Sources */, - 1141E4C2291BB12200ACDA9E /* CrowdNodeTransferViewController.swift in Sources */, 478483E829629C0700E05A5A /* CBAuthInterop.swift in Sources */, 4789D27029825F5400BAFEFA /* CoinbaseAmountViewController.swift in Sources */, 2A1F640F238D5C0900A9B505 /* DWSegmentSliderFormCellModel.m in Sources */, @@ -10730,7 +10327,6 @@ C956AF262A5CACE6002FAB75 /* TitleValueCell.swift in Sources */, 75D657682DF579F300ACE570 /* TransactionFilterDialog.swift in Sources */, 75EBAA0C2BB9792F004488E3 /* FeatureTopText.swift in Sources */, - 11ED906B29681773003784F9 /* StakingInfoDialogController.swift in Sources */, 0F36937E2919A5DB007F4E91 /* TwoFactorAuthViewController.swift in Sources */, 755049AC2C846576008FA7EB /* MenuItemModel.swift in Sources */, 75EBAA292BBBE385004488E3 /* ZenLedgerViewModel.swift in Sources */, @@ -10747,11 +10343,9 @@ 5AGOV0002F9A0000000000V2 /* GovernanceMenuViewModel.swift in Sources */, RC00C0012FA0000000000001 /* CSVExportSheet.swift in Sources */, 754D020E2D1558EB005CA466 /* GroupedTransactions.swift in Sources */, - 11BD738128E7356100A34022 /* CrowdNode.swift in Sources */, 47AE8B9F28BFAD8200490F5E /* SQLite+ExloreDash.swift in Sources */, 2A1F6415238FEEA900A9B505 /* DWAdvancedSecurityModel.m in Sources */, 47AE8BF828C1306000490F5E /* AtmDataProvider.swift in Sources */, - 110C67952921147F006B580C /* GettingStartedViewController.swift in Sources */, C956AF312A5D601C002FAB75 /* UpholdConfirmTransferModel.swift in Sources */, 477A963E292CD27D0013605B /* NetworkUnavailableView.swift in Sources */, 2A63004E2328F37C00827825 /* DWLockScreenViewController.m in Sources */, @@ -10769,7 +10363,6 @@ 4751CAD92970509600F63AC4 /* ConvertCryptoOrderPreviewViews.swift in Sources */, 75E2F3CA2AA4D1B900C3B458 /* Topper.swift in Sources */, 2A8F422021BEFEEA00858B91 /* DWAboutModel.m in Sources */, - 1141E4C5291FDC7A00ACDA9E /* WelcomeToCrowdNodeViewController.swift in Sources */, 2A4E531D22EA49FE00E5168A /* DWProgressView.m in Sources */, 7569D6892DE6DB6700768BFF /* ExploreContentsView.swift in Sources */, 47A5146428491C60005A8E3E /* TxDetailCells.swift in Sources */, @@ -10814,7 +10407,6 @@ B1200000B1200000B1200012 /* RefundAddressHostingController.swift in Sources */, 6FD1512E7774A997C1F8466B /* SwapMenuStyles.swift in Sources */, 1F3FF21B0295D5A326F08B74 /* OrderPreviewFeeRow.swift in Sources */, - 3A958F915CDACC6FE30923BA /* DarkCoinMessageFraming.swift in Sources */, 61E0BCA4B860A2578137B28F /* WalletSendService.swift in Sources */, 6715F4CB33E5F472FEC43B7E /* DWParsedPaymentURI.swift in Sources */, 5010C6015DD809969DF514ED /* DWRecoverModel+Mnemonic.swift in Sources */, @@ -10917,6 +10509,7 @@ DECAF00000000000000000A1 /* DevnetConfiguration.swift in Sources */, 02EED2FC7EAC55B96ECEAAD6 /* DWLogger.m in Sources */, 02EED2FC7EAC55B96ECEAB01 /* MainThreadStallMonitor.swift in Sources */, + E988C87246950744F87DA008 /* RetiredCrowdNodeDefaults.swift in Sources */, 4B8A9492829B622FCDAF4F19 /* SecureTimeService.swift in Sources */, B56469D438692B0A0B771EA6 /* PinPromptView.swift in Sources */, A6AAB271A1ADA69C272DA1D4 /* PinPromptPresenter.swift in Sources */, @@ -10927,7 +10520,6 @@ C5745FA476F615D2C1E378F3 /* SwiftDashSDKReceiveAddressReader.swift in Sources */, EF8FE439EB96236940DFBDE7 /* SwiftDashSDKTransactionSender.swift in Sources */, 2AB76051F87248AC36AED99B /* NetworkReachability.swift in Sources */, - A92AEDB6AD391E61F696809C /* MasternodeAPYCalculator.swift in Sources */, 4DB882B7974693571FD16952 /* WalletsScreen.swift in Sources */, 71F8642520D4DD9E5F0B0181 /* IdentitiesViewModel.swift in Sources */, 9E39B6CDE39A9CA4E74ADF3B /* IdentitiesScreen.swift in Sources */, @@ -11012,9 +10604,10 @@ A1C0DE0142FBB4945119F001 /* PendingInvitationViewModelTests.swift in Sources */, CB9000022FE1000000000002 /* CoinbaseTransactionMetadataTests.swift in Sources */, CB9100022FE2000000000002 /* CoinbaseTransferAmountTests.swift in Sources */, + B22765F5EC05E5EE8186D9E2 /* RetiredCrowdNodeDefaultsTests.swift in Sources */, + 59CF738341C10A1296F632DC /* ShortcutActionTypeTests.swift in Sources */, 7A30000230A1000000000002 /* TransactionDirectionTests.swift in Sources */, 7A32000230A3000000000002 /* PooledSendableBalanceTests.swift in Sources */, - 7A30002230A2000000000022 /* CrowdNodeOwnershipTests.swift in Sources */, 7A31000230A2000000000002 /* CoinJoinMoveDestinationPolicyTests.swift in Sources */, 7A30001230A1000000000012 /* StuckAssetLockRetryTests.swift in Sources */, 7C1177A230A1000000000002 /* InternalTransferNoticeTests.swift in Sources */, @@ -11093,7 +10686,6 @@ 75EBAA262BBA9DC2004488E3 /* ZenLedger.swift in Sources */, C9D2C6962A320AA000D15901 /* DWBaseViewController.m in Sources */, C9D2C6972A320AA000D15901 /* DWBiometricAuthViewController.m in Sources */, - C9D2C6982A320AA000D15901 /* CrowdNodeWebService.swift in Sources */, 7549BE5B2DEAF50D004F0BAF /* IconBitmap.swift in Sources */, C9D2C69C2A320AA000D15901 /* DWAdvancedSecurityModelStub.m in Sources */, C9D2C69D2A320AA000D15901 /* Foundation+Bitcoin.swift in Sources */, @@ -11104,12 +10696,10 @@ C9D2C6A22A320AA000D15901 /* DWSegmentSliderFormTableViewCell.m in Sources */, 759609212C4553A400F3BF04 /* BuyCreditsViewController.swift in Sources */, 7549BE5E2DEAF55B004F0BAF /* IconBitmapDAO.swift in Sources */, - C9D2C6A32A320AA000D15901 /* ApiCode.swift in Sources */, 75FEC6AF2CE0C58A00F87B48 /* VerifyIdentityScreen.swift in Sources */, C9D2C6A42A320AA000D15901 /* CoinbaseEntryPointModel.swift in Sources */, C9D2C6A52A320AA000D15901 /* SyncingAlertViewController.swift in Sources */, A11E57A7000AC0DE000AB00A /* SyncingAlertView.swift in Sources */, - C9D2C6A72A320AA000D15901 /* CrowdNodeResponse.swift in Sources */, C9D2C6A82A320AA000D15901 /* FileManager+DashWallet.swift in Sources */, C9D2C6A92A320AA000D15901 /* PointOfUseItemCell.swift in Sources */, 753261B22CBC157F003CDE00 /* GetStartedViewController.swift in Sources */, @@ -11120,10 +10710,6 @@ C9D2C6AF2A320AA000D15901 /* BuySellPortalViewController.swift in Sources */, AA00000228D9A3DB00223B77 /* BuySellPortalView.swift in Sources */, E5767AEAEF7C4921886E915A /* BuySellPortalScreen.swift in Sources */, - CNR0000022FF100000000001 /* CrowdNodeBalanceReminder.swift in Sources */, - CNR0000042FF100000000001 /* CrowdNodeBalanceReminderSheet.swift in Sources */, - CNR0000062FF100000000001 /* CrowdNodeBalanceReminderBanner.swift in Sources */, - CNR0000122FF100000000001 /* CrowdNodeWithdrawalRouter.swift in Sources */, C9D2C6B02A320AA000D15901 /* SettingsScreen.swift in Sources */, DECAF00000000000000000B2 /* DevnetSettingsScreen.swift in Sources */, C0FA5E0000000000000000A3 /* AdvancedModeInfoSheet.swift in Sources */, @@ -11131,7 +10717,6 @@ 751B61C52ADFFD0700D1C2EF /* IntegrationViewController+Uphold.swift in Sources */, C9D2C6B22A320AA000D15901 /* UISpringTimingParameters+DWInit.m in Sources */, C9D2C6B62A320AA000D15901 /* NumberKeyboardButton.swift in Sources */, - C9D2C6B72A320AA000D15901 /* IsDefaultEmail.swift in Sources */, 750CEFA42CCA713300E87A32 /* CreateUsernameViewController.swift in Sources */, C9D2C6BB2A320AA000D15901 /* DWFormTableViewController.m in Sources */, C943B34D2A40A4C500AF23C5 /* DWInfoPopupViewController.m in Sources */, @@ -11158,16 +10743,13 @@ C9D2C6C62A320AA000D15901 /* Coinbase+Error.swift in Sources */, C9D2C6C72A320AA000D15901 /* DWPaymentOutput+DWView.m in Sources */, C9D2C6C82A320AA000D15901 /* UIView+DWRecursiveSubview.m in Sources */, - C9D2C6C92A320AA000D15901 /* AddressStatus.swift in Sources */, C9D2C6CA2A320AA000D15901 /* ExtendedPublicKeysModel.swift in Sources */, C9D2C6CB2A320AA000D15901 /* OrderPreviewViewController.swift in Sources */, C9D2C6CC2A320AA000D15901 /* ActivePaymentMethodView.swift in Sources */, C9D2C6CD2A320AA000D15901 /* BasicInfoController.swift in Sources */, C9D2C6CE2A320AA000D15901 /* DWPreviewSeedPhraseModel.m in Sources */, C9D2C6CF2A320AA000D15901 /* DWModalPresentationAnimation.m in Sources */, - C9D2C6D02A320AA000D15901 /* UINavigationController+CrowdNode.swift in Sources */, C9D2C6D12A320AA000D15901 /* DWReceiveModel.m in Sources */, - C9D2C6D22A320AA000D15901 /* TransactionWrapper.swift in Sources */, C9D2C6D32A320AA000D15901 /* Transactions.swift in Sources */, C9D2C6D42A320AA000D15901 /* DWRecoverTextView.m in Sources */, C9D2C6D52A320AA000D15901 /* TransactionMetadata.swift in Sources */, @@ -11184,16 +10766,13 @@ C943B3222A408CED00AF23C5 /* DWImgurInfoViewController.m in Sources */, C9D2C6DD2A320AA000D15901 /* NumberKeyboard.swift in Sources */, C9D2C6DE2A320AA000D15901 /* DWSeedPhraseTitledView.m in Sources */, - C9D2C6E02A320AA000D15901 /* CrowdNodeTopUpTx.swift in Sources */, 759ADD582BF3447400767ACD /* Button.swift in Sources */, C943B3302A408CED00AF23C5 /* DWSaveAlertChildView.m in Sources */, C9D2C6E12A320AA000D15901 /* BackupInfoItemView.swift in Sources */, - C9D2C6E32A320AA000D15901 /* AccountCreatingController.swift in Sources */, C9D2C6E42A320AA000D15901 /* UIView+DWReuseHelper.m in Sources */, C9D2C6E52A320AA000D15901 /* DWExtendedContainerViewController.m in Sources */, 75FFD6BF2BF491FC0032879E /* HomeViewController+BackupReminder.swift in Sources */, C943B58B2A40ED6F00AF23C5 /* DWInputUsernameViewController.m in Sources */, - C9D2C6E62A320AA000D15901 /* CrowdNodeEndpoint.swift in Sources */, C9D2C6E72A320AA000D15901 /* ServiceEntryPointModel.swift in Sources */, 75050CD12DF2FCC200F586D6 /* ServiceName.swift in Sources */, C9D2C6E82A320AA000D15901 /* ExploreDash.swift in Sources */, @@ -11205,7 +10784,6 @@ 75A2F3032DE48C860046BE17 /* DashSpend/CTX/CTXSpendTokenService.swift in Sources */, C9D2C6F22A320AA000D15901 /* DWSetupViewController.m in Sources */, C9D2C6F32A320AA000D15901 /* ExploreDatabaseConnection.swift in Sources */, - C9D2C6F42A320AA000D15901 /* WithdrawalLimitsController.swift in Sources */, 752D03A92E2F758B00B88784 /* MainMenuViewModel.swift in Sources */, 752D03AC2E2F758B00B88784 /* MainMenuViewController.swift in Sources */, C9D2C6F52A320AA000D15901 /* CoinbaseTransactionResponse.swift in Sources */, @@ -11232,13 +10810,11 @@ 51A57C0A2FBB5A0000FB4097 /* SwapTransactionPendingView.swift in Sources */, C9D2C6F72A320AA000D15901 /* TxDetailModel.swift in Sources */, 757514E22B15DB510026AD8E /* ShadowView.swift in Sources */, - C9D2C6F82A320AA000D15901 /* NewAccountViewController.swift in Sources */, C9D2C6F92A320AA000D15901 /* PointOfUseListModel.swift in Sources */, C9D2C6FA2A320AA000D15901 /* NSPredicate+DWFullTextSearch.m in Sources */, C9D2C6FB2A320AA000D15901 /* TxReclassifyTransactionsWhereToChangeViewController.swift in Sources */, C9D2C6FC2A320AA000D15901 /* DWLocalCurrencyViewController.m in Sources */, C9D2C6FD2A320AA000D15901 /* BadgeView.swift in Sources */, - 759C8FA02B593589004B1305 /* CrowdNodeAPYView.swift in Sources */, 753F75372DD0D76400D40DFE /* DashSpendPayViewModel.swift in Sources */, C9D2C6FE2A320AA000D15901 /* HomeHeaderView.swift in Sources */, 757111A02CF20ED800A7D452 /* CoinJoinMixingTxSet.swift in Sources */, @@ -11246,7 +10822,6 @@ C9D2C7002A320AA000D15901 /* DWAmountInputValidator.m in Sources */, 7513DA8A2AB17666005D55F6 /* SupportedTopperAssets.swift in Sources */, C9D2C7012A320AA000D15901 /* ExplorePointOfUseListViewController.swift in Sources */, - C9D2C7022A320AA000D15901 /* CrowdNodeWebViewController.swift in Sources */, C9D2C7032A320AA000D15901 /* UIViewController+DWDisplayError.m in Sources */, C9D2C7042A320AA000D15901 /* BRAppleWatchData.m in Sources */, 755049AD2C846576008FA7EB /* MenuItemModel.swift in Sources */, @@ -11261,7 +10836,6 @@ 5E1C0A0100000000000000F3 /* MerchantLogoPlaceholder.swift in Sources */, C9D2C7082A320AA000D15901 /* DWPlaceholderFormCellModel.m in Sources */, C9D2C7092A320AA000D15901 /* DWOverlapControl.m in Sources */, - C9D2C70A2A320AA000D15901 /* CoinsToAddressTxFilter.swift in Sources */, C9D2C95E2A386D7E00D15901 /* DWBasePressableControl.m in Sources */, 751C05DD2D3E39A800475E52 /* TransactionListDataItem.swift in Sources */, 5A1EC0FE2E29A10000000002 /* ShieldedActivityHistory.swift in Sources */, @@ -11282,7 +10856,6 @@ C956AF1B2A5C337F002FAB75 /* DWBorderedActionButton.m in Sources */, C9D2C7142A320AA000D15901 /* AmountView.swift in Sources */, C9D2C7152A320AA000D15901 /* DWBasePayViewController.m in Sources */, - C9D2C7162A320AA000D15901 /* CrowdNodeTransferModel.swift in Sources */, 750CED612C94BFD7000FB837 /* SettingsMenuViewModel.swift in Sources */, C9D2C7172A320AA000D15901 /* DWSetPinViewController.m in Sources */, C943B3322A408CED00AF23C5 /* DWProfileDisplayNameCellModel.m in Sources */, @@ -11297,7 +10870,6 @@ C9D2C7202A320AA000D15901 /* ServiceDataProvider.swift in Sources */, C9D2C7212A320AA000D15901 /* PaymentButton.swift in Sources */, C9D2C7222A320AA000D15901 /* DWPreviewSeedPhraseViewController.m in Sources */, - C9D2C7242A320AA000D15901 /* WKWebView+CrowdNode.swift in Sources */, C9D2C7252A320AA000D15901 /* SyncingActivityMonitor.swift in Sources */, C9D2C7262A320AA000D15901 /* EmptyUIView.swift in Sources */, C9D2C7272A320AA000D15901 /* (null) in Sources */, @@ -11310,7 +10882,6 @@ C9D2C72E2A320AA000D15901 /* DWRecoverModel.m in Sources */, C9D2C72F2A320AA000D15901 /* DWCenteredTableView.m in Sources */, C9D2C7302A320AA000D15901 /* DWOnboardingViewController.m in Sources */, - C9D2C7322A320AA000D15901 /* CrowdNode+UserDefaults.swift in Sources */, C9D2C7342A320AA000D15901 /* DWPinView.m in Sources */, C9D2C7362A320AA000D15901 /* DWBaseReceiveModel.m in Sources */, 7545ED582DA91AF10075F45C /* DashSpendUserAuthViewModel.swift in Sources */, @@ -11382,16 +10953,13 @@ C9D2C7532A320AA000D15901 /* DWRecoverWalletCommand.m in Sources */, C9D2C7542A320AA000D15901 /* DWSwitcherFormTableViewCell.m in Sources */, C9D2C7552A320AA000D15901 /* DWPaymentInput.m in Sources */, - C9D2C7572A320AA000D15901 /* OnlineAccountDetailsController.swift in Sources */, C9D2C7582A320AA000D15901 /* UIApplication+DashWallet.swift in Sources */, 7545ED542DA91A2F0075F45C /* DashSpend/CTXConstants.swift in Sources */, - C9D2C7592A320AA000D15901 /* OnlineAccountInfoController.swift in Sources */, C9D2C75A2A320AA000D15901 /* PaymentController.swift in Sources */, C9D2C75B2A320AA000D15901 /* CALayer+MBAnimationPersistence.m in Sources */, C9D2C75C2A320AA000D15901 /* UIView+DWAnimations.m in Sources */, 7581B19A2CE349BB00714007 /* ConfirmSpendDialog.swift in Sources */, C9D2C75D2A320AA000D15901 /* VerifiedSuccessfullyViewController.swift in Sources */, - C9D2C75E2A320AA000D15901 /* KeyboardHeader.swift in Sources */, C9D2C75F2A320AA000D15901 /* DWUpholdOTPViewController.m in Sources */, C9D2C7602A320AA000D15901 /* DWAppGroupOptions.m in Sources */, 75050CCE2DF2CB0F00F586D6 /* GiftCardMetadataProvider.swift in Sources */, @@ -11401,13 +10969,11 @@ C943B3352A408CED00AF23C5 /* DWEditProfileTextViewCell.m in Sources */, C9D2C7642A320AA000D15901 /* BasePageSheetViewController.swift in Sources */, C943B54E2A40B6B500AF23C5 /* DWColoredButton.m in Sources */, - C9D2C7662A320AA000D15901 /* CrowdNodeRequest.swift in Sources */, 75EBAA0A2BB9791B004488E3 /* Icon.swift in Sources */, AA0031032FD0000000000013 /* IconName+DashIconSource.swift in Sources */, 754C27C72CC3C0B900BA7B9F /* UsernamePrefs.swift in Sources */, C9D2C7672A320AA000D15901 /* CoinbaseExchangeRateResponse.swift in Sources */, C9D2C7692A320AA000D15901 /* (null) in Sources */, - C9D2C76A2A320AA000D15901 /* CrowdNodePortalItem.swift in Sources */, C9D2C76B2A320AA000D15901 /* BaseViewController.swift in Sources */, C9D2C76C2A320AA000D15901 /* AccountListController.swift in Sources */, 753261B02CBC11BF003CDE00 /* WelcomeViewController.swift in Sources */, @@ -11420,7 +10986,6 @@ 7549BE532DEAEA18004F0BAF /* MetadataProvider.swift in Sources */, C9D2C76F2A320AA000D15901 /* DWProgressAnimator.mm in Sources */, C943B3192A408CED00AF23C5 /* DWDPUpdateProfileModel.m in Sources */, - C9D2C7702A320AA000D15901 /* CrowdNodeModel.swift in Sources */, 7596091A2C4550F500F3BF04 /* DWDashPaySetupModel.m in Sources */, 759063E92C411673002F2AA9 /* ZenLedgerInfoSheet.swift in Sources */, C9D2C7712A320AA000D15901 /* UIDevice+Compatibility.swift in Sources */, @@ -11434,7 +10999,6 @@ C9D2C77C2A320AA000D15901 /* DWVerifySeedPhraseModel.m in Sources */, C9D2C77D2A320AA000D15901 /* ReceiveViewController.swift in Sources */, 75AA33D62BF9E1D400F12465 /* Font+DWStyle.swift in Sources */, - C9D2C77E2A320AA000D15901 /* ConfirmationTransactionQRController.swift in Sources */, C9D2C7812A320AA000D15901 /* Numbers+Dash.swift in Sources */, 750CEFA12CCA6EA100E87A32 /* TextInput.swift in Sources */, 512C760BD00B172C4E65B8F8 /* HardwareNumericKeyboardView.swift in Sources */, @@ -11453,19 +11017,16 @@ C9D2C78B2A320AA000D15901 /* OrderPreviewModel.swift in Sources */, C9D2C78D2A320AA000D15901 /* UIView+DWFindConstraints.m in Sources */, C9D2C78E2A320AA000D15901 /* DWModalPopupPresentationController.m in Sources */, - C9D2C78F2A320AA000D15901 /* CrowdNodeBalance.swift in Sources */, C9D2C7902A320AA000D15901 /* String+DashWallet.swift in Sources */, C9D2C7932A320AA000D15901 /* DWBaseModalViewController.m in Sources */, C943B32C2A408CED00AF23C5 /* DWAvatarExternalSourceConfig.m in Sources */, C9D2C7952A320AA000D15901 /* KeysOverviewCell.swift in Sources */, C93078482A6AD4F500906E4B /* ConfirmPaymentViewController.swift in Sources */, C9D2C7962A320AA000D15901 /* UIViewController+DWShareReceiveInfo.m in Sources */, - C9D2C7972A320AA000D15901 /* OnlineAccountConfirmationController.swift in Sources */, C9D2C7982A320AA000D15901 /* BaseResponse.swift in Sources */, C9D2C7992A320AA000D15901 /* DWDemoAdvancedSecurityViewController.m in Sources */, C943B3212A408CED00AF23C5 /* DWImgurItemView.m in Sources */, 756FE7062CDCBB1B00E6C195 /* CreateUsernameViewModel.swift in Sources */, - C9D2C79C2A320AA000D15901 /* TxWithinTimePeriod.swift in Sources */, C956AF1E2A5C3397002FAB75 /* DWBaseActionButton.m in Sources */, C9D2C79D2A320AA000D15901 /* CoinbaseSwapeTradeRequest.swift in Sources */, C943B4DB2A40A54600AF23C5 /* DWDPWelcomeCollectionViewController.m in Sources */, @@ -11497,12 +11058,10 @@ C0172000000000000009A3 /* SpecifyAmountView.swift in Sources */, C017200000000000000BA3 /* RequestAmountHostingController.swift in Sources */, C017200000000000000AA3 /* RequestAmountScreen.swift in Sources */, - 756557B62CE84FFA0060348D /* FeeInfo.swift in Sources */, C943B5922A40ED7B00AF23C5 /* DWTextField.m in Sources */, 75EBAA0D2BB9792F004488E3 /* FeatureTopText.swift in Sources */, C9D2C7B42A320AA000D15901 /* DWUpholdTransactionObject+DWView.m in Sources */, C943B54A2A40B52F00AF23C5 /* NSLayoutConstraint+DWAutolayout.m in Sources */, - C9D2C7B62A320AA000D15901 /* CrowdNodeDepositTx.swift in Sources */, C943B5962A40EDC400AF23C5 /* DWRegistrationCompletedViewController.m in Sources */, C9D2C7B92A320AA000D15901 /* DWIntrinsicTableView.m in Sources */, C9D2C7BA2A320AA000D15901 /* DWURLActions.m in Sources */, @@ -11531,17 +11090,14 @@ C9D2C7CB2A320AA000D15901 /* (null) in Sources */, C9D2C7CD2A320AA000D15901 /* UIViewController+DashWallet.swift in Sources */, 75D5D5332CC928630049ED7B /* UIHostingController+DashWallet.swift in Sources */, - C9D2C7CE2A320AA000D15901 /* CrowdNodeCell.swift in Sources */, 751B61C62ADFFD0A00D1C2EF /* IntegrationViewController+Coinbase.swift in Sources */, C9D2C7CF2A320AA000D15901 /* MerchantListLocationOffCell.swift in Sources */, - C9D2C7D32A320AA000D15901 /* CrowdNodeAPIConfirmationTx.swift in Sources */, C9D2C7D42A320AA000D15901 /* UIViewController+DWEmbedding.m in Sources */, C9D2C7D62A320AA000D15901 /* CALayer+DWShadow.m in Sources */, C9D2C7D72A320AA000D15901 /* MerchantDAO.swift in Sources */, C9D2C7D82A320AA000D15901 /* ExploreDatabaseSyncManager.swift in Sources */, 751B61C42ADFF9D000D1C2EF /* CoinbaseDepositRequest.swift in Sources */, C9D2C7D92A320AA000D15901 /* DWOnboardingCollectionViewCell.m in Sources */, - C9D2C7DA2A320AA000D15901 /* CrowdNodeErrorResponse.swift in Sources */, C9D2C7DC2A320AA000D15901 /* DWHomeModelStub.m in Sources */, C9D2C7DD2A320AA000D15901 /* UISearchBar+DWAdditions.m in Sources */, 51A57B022FBB41DE00FB4097 /* OrderPreviewTableRow.swift in Sources */, @@ -11549,7 +11105,6 @@ 751B61C22ADFF99D00D1C2EF /* CoinbaseDepositResponse.swift in Sources */, 753E46E92DE1E24300A3FF2A /* CTXSpendModels.swift in Sources */, C9D2C7E02A320AA000D15901 /* TransactionFilter.swift in Sources */, - C9D2C7E22A320AA000D15901 /* CrowdNodeWithdrawalReceivedTx.swift in Sources */, 7549BE612DEAF628004F0BAF /* AddIconBitmapsTable.swift in Sources */, AA0000022DUMMYID001234567 /* AddProviderToGiftCardsTable.swift in Sources */, F4C406090000000100000002 /* AddRedeemUrlChallengeToGiftCardsTable.swift in Sources */, @@ -11591,7 +11146,6 @@ C9D2C7EA2A320AA000D15901 /* App.swift in Sources */, C9D2C7EB2A320AA000D15901 /* DWPaymentProcessor.m in Sources */, C9D2C7ED2A320AA000D15901 /* SyncingHeaderView.swift in Sources */, - C9D2C7EE2A320AA000D15901 /* MinimumDepositBanner.swift in Sources */, C9D2C7EF2A320AA000D15901 /* BalanceView.swift in Sources */, C9D2C7F02A320AA000D15901 /* DWQRScanStatusView.m in Sources */, C9D2C7F12A320AA000D15901 /* DWURLParser.m in Sources */, @@ -11633,10 +11187,8 @@ C9D2C8172A320AA000D15901 /* DWBiometricAuthModel.m in Sources */, C943B52A2A40A54600AF23C5 /* UIImageView+DWDPAvatar.m in Sources */, C9D2C8182A320AA000D15901 /* DWNumberKeyboardInputViewAudioFeedback.m in Sources */, - C9D2C8192A320AA000D15901 /* CrowdNode+Constants.swift in Sources */, C9D2C81A2A320AA000D15901 /* CurrencyExchanger.swift in Sources */, C930784D2A6AD59A00906E4B /* TitleCell.swift in Sources */, - C9D2C81D2A320AA000D15901 /* MessageStatus.swift in Sources */, C9D2C81E2A320AA000D15901 /* DWGlobalOptions.m in Sources */, C9D2C81F2A320AA000D15901 /* AppDelegate.m in Sources */, 1535CD04CB1E10BA219A614E /* SceneDelegate.m in Sources */, @@ -11649,7 +11201,6 @@ C943B5982A40EDEF00AF23C5 /* DWConfirmUsernameContentView.m in Sources */, C943B58C2A40ED6F00AF23C5 /* DWUsernameValidationRule.m in Sources */, 756FE70A2CDCD6D600E6C195 /* ValidationCheck.swift in Sources */, - C9D2C82A2A320AA000D15901 /* OnlineAccountEmailController.swift in Sources */, C9D2C82B2A320AA000D15901 /* DWBaseActionButtonViewController.m in Sources */, C9D2C82C2A320AA000D15901 /* CoinbasePaymentMethodsResponse.swift in Sources */, C9D2C82D2A320AA000D15901 /* UIView+DWEmbedding.m in Sources */, @@ -11708,7 +11259,6 @@ C9D2C8562A320AA000D15901 /* TransactionItemView.swift in Sources */, C9D2C8572A320AA000D15901 /* UIView+Reuse.swift in Sources */, C9D2C8582A320AA000D15901 /* DWUpholdClient.m in Sources */, - C9D2C8592A320AA000D15901 /* CrowdNodePortalViewController.swift in Sources */, C9D2C85A2A320AA000D15901 /* ConfirmOrderModel.swift in Sources */, C943B53F2A40A6BE00AF23C5 /* DPAlertChildContentsView.m in Sources */, C9D2C85B2A320AA000D15901 /* PointOfUseListEmptyResultsView.swift in Sources */, @@ -11754,13 +11304,11 @@ C9D2C8812A320AA000D15901 /* DWModalTransition.m in Sources */, C943B4E12A40A54600AF23C5 /* DWGetStartedItemView.m in Sources */, C9D2C8832A320AA000D15901 /* MerchantsDataProvider.swift in Sources */, - C9D2C8842A320AA000D15901 /* FullCrowdNodeSignUpTxSet.swift in Sources */, C9D2C8852A320AA000D15901 /* DWSeedPhraseModel.m in Sources */, C9D2C8862A320AA000D15901 /* Constants.swift in Sources */, C9D2C8872A320AA000D15901 /* DWBaseFormCellModel.m in Sources */, C9D2C8882A320AA000D15901 /* ExploreMapAnnotationView.swift in Sources */, C9D2C88A2A320AA000D15901 /* DWHomeModel.m in Sources */, - C9D2C88D2A320AA000D15901 /* IsAddressInUse.swift in Sources */, 751B61C12ADFF98800D1C2EF /* BaseIntegrationModel.swift in Sources */, C943B3342A408CED00AF23C5 /* DWTextViewFormCellModel.m in Sources */, C9D2C88F2A320AA000D15901 /* DWSegmentedControl.m in Sources */, @@ -11791,16 +11339,12 @@ C9D2C8A62A320AA000D15901 /* CoinbaseRatesProvider.swift in Sources */, C943B5952A40EDAB00AF23C5 /* DWLengthUsernameValidationRule.m in Sources */, C9D2C8A72A320AA000D15901 /* TaxReportGenerator.swift in Sources */, - C9D2C8A82A320AA000D15901 /* CrowdNodeError.swift in Sources */, - C9D2C8A92A320AA000D15901 /* WithdrawalLimit.swift in Sources */, 7569D6842DE6DA6800768BFF /* ExploreViewController.swift in Sources */, C9D2C8AA2A320AA000D15901 /* DWPayModel.m in Sources */, C943B54B2A40B52F00AF23C5 /* UIView+DWAutolayout.m in Sources */, C943B3332A408CED00AF23C5 /* DWTextFieldFormCellModel.m in Sources */, C9D2C8AD2A320AA000D15901 /* POIDetailsView.swift in Sources */, - C9D2C8AF2A320AA000D15901 /* FromLabel.swift in Sources */, C9D2C8B02A320AA000D15901 /* DWPhraseRepairChildViewController.m in Sources */, - C9D2C8B12A320AA000D15901 /* SingleInputAddressSelector.swift in Sources */, 757422212DF87B5200CB0175 /* TerritoryPickerView.swift in Sources */, 757422222DF87B5200CB0175 /* MerchantFiltersView.swift in Sources */, C943B5382A40A65B00AF23C5 /* DWScrollingViewController.m in Sources */, @@ -11809,7 +11353,6 @@ 754565CA2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendRepository.swift in Sources */, 754565CB2DAA52A000DA4E8E /* DashSpend/CTX/CTXSpendEndpoint.swift in Sources */, C930784E2A6AD59E00906E4B /* ConfirmPaymentModel.swift in Sources */, - C9D2C8B42A320AA000D15901 /* CrowdNodeTransferViewController.swift in Sources */, C9D2C8B62A320AA000D15901 /* CBAuthInterop.swift in Sources */, C9D2C8B82A320AA000D15901 /* CoinbaseAmountViewController.swift in Sources */, C9D2C8BA2A320AA000D15901 /* DWSegmentSliderFormCellModel.m in Sources */, @@ -11830,7 +11373,6 @@ 7549BE572DEAECB8004F0BAF /* CustomIconMetadataProvider.swift in Sources */, C9D2C8CA2A320AA000D15901 /* ConverterView.swift in Sources */, C9D2C8CB2A320AA000D15901 /* DWModalBaseAnimation.m in Sources */, - C9D2C8CD2A320AA000D15901 /* StakingInfoDialogController.swift in Sources */, C9D2C8CF2A320AA000D15901 /* TwoFactorAuthViewController.swift in Sources */, C9D2C8D02A320AA000D15901 /* Taxes.swift in Sources */, C9D2C8D12A320AA000D15901 /* DWSeedWordModel+DWLayoutSupport.m in Sources */, @@ -11841,12 +11383,10 @@ C9D2C8D52A320AA000D15901 /* AccountService.swift in Sources */, 752F81A92E323FDB00ADA76D /* ToolsMenuViewModel.swift in Sources */, C9D2C8D62A320AA000D15901 /* ListHandlerView.swift in Sources */, - C9D2C8D82A320AA000D15901 /* CrowdNode.swift in Sources */, 755B4B232B0C903500B844F0 /* DWDateFormatter.swift in Sources */, C9D2C8D92A320AA000D15901 /* SQLite+ExloreDash.swift in Sources */, C9D2C8DC2A320AA000D15901 /* DWAdvancedSecurityModel.m in Sources */, C9D2C8DD2A320AA000D15901 /* AtmDataProvider.swift in Sources */, - C9D2C8DE2A320AA000D15901 /* GettingStartedViewController.swift in Sources */, C9D2C8DF2A320AA000D15901 /* NetworkUnavailableView.swift in Sources */, C9D2C8E02A320AA000D15901 /* (null) in Sources */, 751B61C32ADFF9AE00D1C2EF /* UpholdPortalModel.swift in Sources */, @@ -11862,7 +11402,6 @@ C943B3262A408CED00AF23C5 /* DWCropAvatarViewController.m in Sources */, C9D2C8EA2A320AA000D15901 /* ConvertCryptoOrderPreviewViews.swift in Sources */, C9D2C8EB2A320AA000D15901 /* DWAboutModel.m in Sources */, - C9D2C8EE2A320AA000D15901 /* WelcomeToCrowdNodeViewController.swift in Sources */, C943B3282A408CED00AF23C5 /* DWAvatarEditSelectorContentView.m in Sources */, 51A577492FBB3A6000FB4097 /* OrderPreviewViewModel.swift in Sources */, C9D2C8F02A320AA000D15901 /* DWProgressView.m in Sources */, @@ -11909,7 +11448,6 @@ AA0004052DA0F58E00C1C502 /* ExchangeAddressProvider.swift in Sources */, F8BA4B9BBB650F7F50AD936F /* SwapMenuStyles.swift in Sources */, C124DF94278D4238FAE0975D /* OrderPreviewFeeRow.swift in Sources */, - C20BF8237F3E1009AD3B7716 /* DarkCoinMessageFraming.swift in Sources */, 8DD6758D2AC6F5BB23D5504D /* WalletSendService.swift in Sources */, 90BCB843A2C5965C115C04CC /* WalletsScreen.swift in Sources */, 756F67E27604B9C680848733 /* IdentitiesViewModel.swift in Sources */, @@ -12048,6 +11586,7 @@ DECAF00000000000000000B1 /* DevnetConfiguration.swift in Sources */, 66B50619EC898EEE8C8FE13E /* DWLogger.m in Sources */, 66B50619EC898EEE8C8FEB01 /* MainThreadStallMonitor.swift in Sources */, + 82AFEEB726DB44F3D52B2CAC /* RetiredCrowdNodeDefaults.swift in Sources */, 94CE86155CB8D4DBCB18F6F7 /* SecureTimeService.swift in Sources */, EB070F38F6A474B4A1A7489F /* PinPromptView.swift in Sources */, 3116F910F54D310002090CBB /* PinPromptPresenter.swift in Sources */, @@ -12058,7 +11597,6 @@ D0525BF736516E4EB50DF703 /* SwiftDashSDKReceiveAddressReader.swift in Sources */, 5BBF50F1EFB3EC99854ECE69 /* SwiftDashSDKTransactionSender.swift in Sources */, 43001E4B0F1FD846676FCE1F /* NetworkReachability.swift in Sources */, - E623DF8B207A512573314A83 /* MasternodeAPYCalculator.swift in Sources */, 44A49D70CBFD36A9A68B56B0 /* WalletSwitchDialog.swift in Sources */, 1BA3482EEBB453D45365772F /* DWAboutModel+MasternodeSync.swift in Sources */, 7408C11E2FBCCD879AE9CFFC /* SwiftDashSDKCoinJoinBalanceReader.swift in Sources */, diff --git a/DashWallet/AppDelegate.m b/DashWallet/AppDelegate.m index 3a151e8a2a..dd12b62f48 100644 --- a/DashWallet/AppDelegate.m +++ b/DashWallet/AppDelegate.m @@ -140,7 +140,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( [ExploreDashObjcWrapper configure]; [CurrencyExchangerObjcWrapper startExchangeRateFetching]; [CoinbaseObjcWrapper start]; - [CrowdNodeObjcWrapper start]; + [DWRetiredCrowdNodeDefaults removeAllOnce]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationTerminationRequestNotification:) diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/Contents.json deleted file mode 100644 index 73c00596a7..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/Contents.json deleted file mode 100644 index add923b2af..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/icon.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.link.imageset/icon.png deleted file mode 100644 index c5d0ee4fbcac15504b9e28d6a53bd116840f8201..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1025 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 QhyVZp07*qoM6N<$f&`OE$p8QV diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/Contents.json deleted file mode 100644 index add923b2af..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/icon.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.account.new.imageset/icon.png deleted file mode 100644 index 520dc68956b2038c24edbe2177037d26cea11f7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 971 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 diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/Contents.json deleted file mode 100644 index d6886adf9d..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon-apy.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon-apy@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon-apy@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/icon-apy.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/icon-apy.png deleted file mode 100644 index 901f8929417ce603d3814bdb690a23913e3d3768..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP)SO44FgrsNs&-u@H9^d&0F7s^#i_OC1I0*yXC<2Ffl0N?jyC`?4RK=-957|hBYqX0K@mkm~9xqyP1Gj_n@z`1#8#4C^xeC zl8o!_fCQ@j!d+7sJ6Xkg+Zg+=IDfve|1%^3cW$r*sS)Gf2`0va#fvZotJ>YOMm4_8 zrW+_(R3paIr1;s7x%MO>qU76SwS0ZvDrW1v70hD7Aw&|^Sz3=nUcrvZb6BF;7C>iY zIv@z^$iesulTtmJbPoN?8^WSVS?ym0|FMQgvLvTWswf2n1yQ3qlO#{_peK#cet*y@ Z`~zh+xm@nkuXZo0egy}Q{S`oOmD_B}hF^Yfk~$OC#~qXR;S^O9(Q z1O-USJ?cV;bv`EqiG-B$$?H&bp^`4)cG(vj9cGDfCJK-Tu(DN>bbBcjz2_oRj)B-{ zASc8uk?f{j0K_$tPA-I^tM)s?{zL!s$km)7;=3gS5E1C;dm0(i7_$usNJGw26=4W5 zym)%@ei@+(BRnebuxf;n)P7u;|CI?YLba*w{`tSrIH+*+^1oUk^=mUnx@* zYVDy*Y*aGyi(FxG7-(u;pMe0F`0$v<;ty!~_ZkKF?x%*@x}r==eIs4#7^HMAtK{4O z4saRFJfst7W@W&SOiF!1Dd6{Q6OJ4hRC3cRFIcXEhbHR~LfWOfOXo7K|3xSfg*fN- z(YH6`2{qybdnmLG9#4H$pW(J%>T5cr!U->unf1R4r40d}Q!C7{)lgihR49+cAF8`T zDDQrnS4Q|bug!I43YNLR9Kl>Za={cUjD3Hn&dF>_wS+yCo&HvuI(D5JtlYv-{LcwK zYs5G<{PM+%Ni5EEJCrg}Y>|{w7IIf9UIlS(p8ny&dq+1jJk44xHOlk~IPC%C$ mXC6xYg diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/icon-apy@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.apy.imageset/icon-apy@3x.png deleted file mode 100644 index 97e5c1dede65ef568919a134993dae401d94c662..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1370 zcmV-g1*Q6lP)>Y z)HS9}pKa~M)N-)Iq*UP`U=Mavh|qL*$L}}0Gy9hA&YQQeCH*BYZ+QC+?>FDS`R03q z>O}h6@zz{&t5*ndTng$GQuazAT1m=QB_KqWBrOq1+<)dL!L^~Ofa-*xm^hjlOP9!< zG^Cv0CbGPsxxD91Uw>zEKGsxMK@eo=vph`G?jZ0bjRZqeOD@8ZL}B9m{s(8Jl&7fy zVC$Sq{MR%Qyg#0`%GrKQXU017f-Xy?h z1n;aRQ&ppw;7NHocChRe9Bc(42C4H2mCKwy8Ap#wTVBOT<80?TDIaB2oCv zCJnRoA9`7huijmtp-U4qeC10+7-VZVk@a?z+~WGG8Mp5* zYq#gA4l@of06zUeDZuJBd6=h1ovcw2xu1uL4nJEYfRvMJ>oR0+mt1lQ+jd5xeL7b3l&+!2ETY( zbgw(LR=1;;$%hUfq0txLQ)9hBfG{?YN#2sN_((8Ek57eJ+97NvKh-^GNRC{eQM;O6 ztoC^aEP0YdtYhnT*h~&z)LI5P{XAThbi4Q~E0ZH%F4GQRi}J8f-oC$L#^H436jZu4q6U{c-FZ-<(~bp(xPw zwRfjXW3J*{?>8mK(XgUD1~~W+lH=iL6-1E%&{eA^UF{Z3XKz~@@`-7ZRc$*$5ECA& z8(2uHpKWuWh(<1eiHW9UiigwGC~$NqHj}BSUcU3khEfv^{i!tV4g%zE*H1dJKi?qG z68XYu>51d@e7>PP*A;^1;(l|AO*D*B11nwZ4e+sBooLG+#Bh4x6XZOTTLw9QD>)za c^`jR42OJSv@%$`~&Hw-a07*qoM6N<$fHVXR>l@}fr&gqb|^)qKT~av<0NXF zq%=K}701r~eC+ERrVOdc#3hnVBF0md%_w{5qlq><&d`ow3xFW?i00B}Xd<)2!d6>2oUqne}_bSRf@KntOOu?D1&D<@?AC;3SuC zBig^ZrsLa28YIcZ*2ao*q#Z>t4LM0|Y0VUE5@&WZrMKpzmFJ{rHKssv?WPLliFkwJX03|Xfku@8lgLTH#a*_5UWjnmt--9jcD@W|Hb5;!xo9`*O z?uCUI4sLA#GF7~)Q8AdVvs&~Ah|_PXSX3$aMf@iohQ%6xn|VFd zSllQ~l-h(e5iRlcJzwHF>DfLfPV$#dxt!nGKfibP?#>Kiid$9|z*)lT8~`)0C5`oT z=dz7$CjMe^J^-XDOxI0_A*O1`t^Ef8+I_4U5KF9raBrBNd97p}Wq=+r@P@CjnuXzH z;tS=_W4mES8id2FAxt>|7!dbxcJQ80!;Dw}NV)?u4 zMA8c%H|>LcsIM2`a8sT8aH|N`i)U`%a8c-f86J?xz!5j!+DSA0z7cP4Bf8V~~o392!5lrjTwzO}s$V*lhJ=8W7 ztl`qFJ8=H$b?^WGT2%_w4|5LtOx;}uH91QNq}^6ArMJ`{Jqd)OLgS?$hWcnq9s(Lb za}4tUO?Bnm!#fW?uI>3Ad<`!k;LqydFhV8)S#Y|a85qj10bxkC78iyj3ts{-q_hSD zic{e{;L6}4AUkd+cL3*Cd&W#xL9L?Bj3pJz2Chd@c_s*o)u{+7td3eWH9ctBfEIF_DIdRTY`>t6wmN=(0ELJXY%7>$s(;*7^-00000NkvXX Hu0mjfedvF) diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.bullet.point.imageset/icon@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.bullet.point.imageset/icon@3x.png deleted file mode 100644 index 18dce421e81dcee617c003eaf786359b89e23a53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1168 zcmV;B1aJF^P)AAY`m35OrIKpxhC z3;p)jn@#xf;yE1cegy`(&_U6R7$;gJRe7`mekgSE`~`3qSHKw=HMxzFs;)hNqi;LS zWA5TTICbeVm?28S9iOE=6|tZ{Wge}1@oiIzINIHT0~94;U81B2DgoyBdB3`sr@gQ! zs!pOYA|f&*MGvYY*Go!0m|@ggemSQ;!*6+DaCY_guZpfBF!PD|=n%8V{VhR6yD39`oaq6uFF~h%t;<#Rtp8MXr^Uq!e0X9;U=a zu6a$0Qba0ZO?;ns&H|~3=`_$L843py^S~k|51gW$M`AUwL{dA&O~1?$B<62}1#}u; zPWr_|ey7Z%41J=TQJAJ*d_;+I#lFN$)1++VWLfo~v5~Ft(GNJ=aij}s*@l01u?oHM7|z7A!fCcVKAn zm!p z9OUlAupCgP`P0Bl(X76a+ zY|*G}(PYt>_kd%U<5@>8*V~txDhj@wjGfgYRLhwCRxQS9qtzqBQ{q}$NBr3`3&ge= z3ML)$%qTE86nt~lg9A%!Hg-!_#W>yAvGLWv50f|kU!ybQ@6wXwqqht{%dHl@DRV9) xUu1=)?l&J_pEFVt8vM%tgm`L~B`yuR<77Xbt$p^*HlXtuJYD@<);T3K0RVtvStkGh diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/deposit@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/deposit@2x.png deleted file mode 100644 index 82396ef5b9b80cf6a1ba122454266297f3f7a9f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^56keHy_f*|&W;=0Dk#~zLV(HuceXFlG!w+f8=Y10TJl%oLc?(w- z%HIwC&2=NfI)VL<5Ci{t#>XuS6BlmS&QlfOG$%;9>4=|EbwptBDak2|!jiW*J3czG z@_51f1yxxsDwBqoQl^%Sg_7M4q0%V64cuZC&T`8&-Q!g4pyUO#aW_xq+h|E=~0 zt&(RD+h-rLlVR$kuUj_su4-D=Xl{ODy?W(-MnPT^vBN5FK>^9&>FVdQ&MBb@0E`ER A$N&HU diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/deposit@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.deposit.imageset/deposit@3x.png deleted file mode 100644 index 49d0807e2b140b9131ac77c4e193d81cbcc96adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^N1|JrI!lztIj&Q|%ILjE6 zV1DgKZxf?VqKwy#>!%|oCZq^@i7kW@r)pf6ozi__=WSH6?doCC+jdSWR^KYEyx`$PH&2F6Qi~Mush^Wt< zg~_ppSA9K^!?JPKkvH|z1WxQ&UURoYd&Z31qQHq5YZomZO~na24QfS?O%OQYVIVN6(TFYS!{VOC84C3`eYF**7#gVR8mTT} zu-D%wyoBZXhu5#(M_l2pNe>8?|9E*?(L>cOYtK!XV3i&^VMf#wzRpUX__Br>?%)K)(BLj?~Dubb#$}_T-!ABh$vTTY=UhxqN+Tu!)*19AptD*G){GmqD zsQsf@T(y-!+wwBHRuoMX5}>Z8p*#$TiZ}xbgFNPa=f2L_{l0zncg{ZNo;%D0u+3U- zJ)V8`d;j+L{l0JSeMbNcQc8g@fp3V0xHPV#>y?y^rWPCZzlrJ~V zxTkFSFT?+JFjhxIzj^gIt(7Xi=(0VK)?D^{$a zenfkF`{cg9z6Wx-{0sQ(&gJum^ZC46C>CAyE)<=7zHm63%Wci&a!+S6nFp}W*CEU& z7gYbxYvU{hdSTUfM@PrBWM$>7q;3D1ZQFIc=>7B^%5z-_j_b5w!ZrkRWnEoe3%6~w z_5UuIe4tjbySw|3vf1p`Vxb_5#iDc^$JK8Y*KhS0=_L=>rFa3`%JlVZrM9sj%ix>y zwXh-q=NL>LK-CcK-Q7*uZ0@mCDs>}esFgI!WqPG^>Vzn?9tQW+=ju@-5mW|eIea8o z>1wbqyBsS1U;=R4)D-=vGMSv_CKA(7T7Ge&vvWa1ZEef)<;%rmk3B|Z&q-Q%tmhI0 zi!Qx;dwZX*tgL*%vMgdi0SXUX#Y`{cw*MS*|MOqq9Q_2`-W~{{phltNe#_p_l3yDS zRX0pWa3)GoKf)`i^IX>jl)@D?H8m?jgE|Lbek(wt#CGDui7|C`7i~%;?8$mS3Lskj zzBgZm+>W0k2)&VBO)wx}0yWuEiV^8FR9<~8r04u8*drPwkAo(k%N6$J^VvDiJo8K| zN{ZzE2Mdg94+a?w6;a=42_`2JiOoouje7Z%1P~CJS6(jH3dA5`q(|RoIY3b6LG|2u z(jal-msTY3>CZj)TnmAsGr|=I5R^F_Xkq3FiqpHJBQv?8qT(F{WHk4je}5lzJp9*? z+5D0x0kIE6;t)xPKz-Q%@XG=8V%w(|FAyk!KAGbf8td!pcip#m@njksFWO+uv@p!q zSS_#dUR`nEWzO}8b5v|DE3O(2ne17HMuUfT&zH#hwAl|J7XJKJerS7@so-tKb z6_0A0CyFQAMDND6VS@Bm(hYP(lcaX&OQppmS(WDEzpf@!-H!i`=na+A@!qwofgC=D z51qJ27cE-U=w%OxLX`U(n_=!QNjh%3?KUxD#E5?eCRcnqS1yg8RMdKC5TtA5yAjLd zPf$kMgc4OM>B9};-9KKgI7N>eYHMp>*uQ_jZyo!yJd|hkL#loQ6xOU+Lz}ZEp;aY= zYT}%13nt8uKf!*!2NRE`$(S~c$N9VsvafIU;iEA>|NQe!1d2KL*a;&RRvDyxg=Oie zs;au1iOD&60x}!cMkL}K9~fkMKlzzAHiMh#Q2^kI18yfC-LPSUZy2B-->aM-60$7! z-FM&Q+M%_(gyog%S-lFf+uk%v1N6^C<$BlkLXHT;w^hQ;5$DBpPB5fzyBpHC-mT&^ zm(S0f`PTREzkl1fapP10BH3t9%E60M8IxB?)KaPR0|M^Yj^{s{`QAnJxW2M z>|JzwN%>N)kl>t4P&kTxMWKj=1B+mtUTQ zl^gX?W#6_fTo^o4=*5N9?vt;}o|$y3(g5`%JTRyp##76lROcQcQ|em{Yzx7tTK0r0 z>sz~28r)P$l@YqUP_G!Xte^a^b^x1uA*{M%$Bs=lxTKUPqNFOkK$4-HFsv*ts;OyW zGNq^Rn>~if)FA7(Z&rQmrCQmpjm-g2)DKRyN`cYusi6rLrO~G;ahpu(!hGu`YSyC#OJ>jd8Dyt=f(ufbZY$t+|#WpNn0PZi&EF0glryKdI zO>q;YCX>lY)Pm`kM1vJUh#8o;Lu}i&4Fnzx`(^YBnc^Kc7%5F~0IF;OxmVVyiG}Ld zk5m9yBM=k>p<>zNN-}s+=-s(~EdtsMY1?CqvgQ`z$5lLh$d^njk(hM&@L`KVi7_ZL zVVsbw0*oAiK~iE1>oPWKg-;FzY7!zrhWXKSC^5jWcY&Who%W%*A!4R2} zx}eRb)aZnHvH?BOJUjA3K7yWvSKfTK}S6NUc7^7o;ZO6FY+OBIFUk zG=gFI?L-JzrMupKhSQ9_4duBfjt5I6tkDQWlsCb=DDycax~IX4{$9+SoJo$M;07!& zBZK!r#{s4jwp#UW!_$?KH%SKZjxQN*ph6|88UbFF34szGD=sqNHHPxO$#^g*97D6t5Uiv>86!;?-w>%!c{I`D_Mf2z=ne4&m2r@#iog6>0ETKSn3(=5 z?bjHqG{&j=^oUL6;QWBq28=OtRUZ(2??I-PR7OdNzabI33fwc^Q9K|GT@V@P=L_fD3At7=?_|wt7Vv7 zbr?&CF^YJ!kBjE)6}m!l%vjx#F?k7*ftkPrc{H&EPEc7B1FUYeI0Yoo;^t-*=Q^qk zf|5|6G=#vGW`EH!L>4A7=J#2)Ae+k{VM!obKuwUQgGMqDB2~KJAwckC%$K2DF1L>x zw6Sq3JtWe(tKDwb7#M^_9VcX?WRTC{4;AxzP%?^SS`!vjqn|?Y9+DIdh*BY}V=MJ( zh-p6th|oABB*%YUebS=h#ra-58!JzzAX5et5H1UEmt+=6bJ&%^0w<7u}J#ajtMeKs_KKRjCS2sKvdUp3zgrRp$=VQc|%43!Z*3j#RL2NwrHY07$yno zhd@b1)Q3Xf>zlys=?V7{U6ja^oNzU(Evd^d(Le}t%#68}024C1rY<4rND?h2=9-)lft6DqfBZr`1~{O%*-DPmMOTN zFO!TM-uQbj;~dr8j}7~mSHW%=rO2T#o85WE6<2&4&qJJ>Zo0|A8-$3B4w@~wm(iwI z5|6Oyr60iHY18ApqE^FKAT|5D5V9o3O8fqY>-B3P7!^3!3ZZtKTF>1OkPM1$$UEh7 zT~()2fTv#E7q`vr=yXo2p7$4Elh1^UOKS4jXKhd5b%d<0u6D@>F%O9#vIhO#%P60p zh?U|^O-`tXm`*cjAz-+lKlPn|mDkfc+ZwxA(32>}w75H>dC)>35>F_MyD!-kRm z{i3I*XEhUH;;UCc&AktnpOhP(e2L5L#+Mr`$oy2#Td2mQ7g?TeZ+~*hk|iw+0M5mi zGoEYo2({cDr{FChT|*GL;x5s`bA$vEY@)UG$o9&LJzw|lfg}pW;*qUe-$<8vIMu#sTr25Ui6TX3=T!d z>3r+0w`ML_u%HD2QDY_^G#$-;f+CD^zp7CTeEaRUE70hU2F)<-aqJI2{Lt#_>r4J* zfN|PBgN~)&1GnwC(Ug*6BhEK&;NSFdeRcU{dhh-t9Yg&canW;vEu!L}v)<*S-$bcijtM_zuEfVlXb5WO&8h@FkQw zo%8GHc5vH3Z4X=h?>-n53WefP0%PIAg}X^rMvopXCrp^2oE-u~A9nFitIEw;MDJz% zU=o_X#Z!LC8*jYfUVH7eq?<+T$hqT=JN9hav}rc!Ew@Fr(swO_Va=~Y)lD-?tb~kk zh=`=gkjm*YXiDivyLHd~hiaQmD`ldu@!qSiy*g{|+_`&^_#ND8xLsXc4ob1ZmWAfP zyZQcnuktxYKJy8gVmcb2Q|pl=?`{Lh&#MrOldsN8DGR-aSPyQ3b z!*||!=RQ=C!X=kn;*e`jZ@ir&|4FGiJD7%Lk^Rm0tbjzzk+jfd53#lh3QCDZJ_<<+ z4$R)TapMhFUU}uxbSiaSs39@XF7=9u(2o;DHkaM`!3Q6#nmTprj@sH<7yEW5PMjD5 zgH)T`1=HUEeZq0JJ_kHHlWSN~SbZ+P{Bnw0WPK16+i@H^oVIFeYAhU3<1M$`va~u? zeVv`OFSSf(3&LDw{OVYB3EI*jX?LMY{2R8vWyXvdJ8`2{q{*RV6v?zsnl#D5zUZz+ zktq94dfWq&44&hl05JxvZoagmcgM z;*hU_YN7xksbCc`fIq*0aJ!M!^?!Im=O-jB1kBK(L+#_ok4qw42Bog94sarD)s+8( zVosziaepLmg#o`+yOgFUAbG!mfVfEHZbwIlOI!JLI;}iV-octu0b%JFkgE7|fO-Aa!tq z6D6k!$kEf^QNcmNMd~lSKUDXog+t% zkZ<8I7}O6gfQoB}OGd^w=rABZWB`q@Xoh~<%7HJ;`L>;ShTb??bpp--x8`u*zyT_+ zE|TcYUC^O01yeQX%|8w_1Z2>h5jP=Q@WA72*bMnc&cyC#=71295K<08*!Md#Vq(5aE0x zTqcAh1~hL)0b>w2Zc2kZzkjTJ*1>*Zf%!%Te_UWXdm&dn&YL|aZWzQM;mZ(&FXVrh e@n!fO4*v^H1)6ig%=nxD00001K~#7F?R^Qn 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 T-vA8V00000NkvXXu0mjff#cd0 diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.first.deposit.imageset/icon.first.minimum.deposit@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.first.deposit.imageset/icon.first.minimum.deposit@2x.png deleted file mode 100644 index b6bb0328412aeb820ed9f3debffab92bc361c3ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 956 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 bZTayR&>vtwjA}H>00000NkvXXu0mjf+#szQ diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.history.imageset/history@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.history.imageset/history@3x.png deleted file mode 100644 index 375d37ed7d2d7d597edff9f79480caafec234a6e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 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 FV1n%Zd;kCd diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/Contents.json deleted file mode 100644 index b650470e61..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.join.the.pool.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon.join.the.pool@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon.join.the.pool@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool.png deleted file mode 100644 index 3946d4c0e6dafdaf96f3d6811bd9c317a60100b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 745 zcmV7M z(?Ar4e>)ASgxY39C8Qu+i3f<-b>}<*c>yHy1R)^UmaI!i*&`)vSrt~Ws#&q58+Mf% zQA-F_0#k`gOX6Y9#C9C#QjaGospLdbKt|Xc^g$91P z4*#Ts+6@beBp22^%mY`da2c(ue8k#;uC;-)=csKsNI)`S%`XPr-X6}+!MMOoDakIC z7ZzWXPa<*hN75KkW+6A!#W{7cfBe_48eqK^FQrZbIge4S0$Smw;JoO$HI(0c>l-rK7Qb7FiKH-Q zhHEr9VI7@$BD-GwRCsZ1IdtMNk!{3Ac8vvL;mPI-wl-G-1Bu#r@wMM6r%!!%9>N@d z0Gh)3hm*kIdyOcrXGQt?;CJ-hISJEv;^*aF?N7f%lRusQbNSXX_vDJG?;iXaepgD^ zV5e2^u+Sc|Ms19}=OdWDdD4!ga8Y^d40a^J@N(=oCyXcOF}=G3H%mEw-WL#_&VC!? z-ux-bfPV65K?3>6KPHyNVAMP3AfLg~04}S??oWLsMG?ufi|r$m2hA2=JH~`BTRhFK z%S8L(*Hs~bI_*^Lrl>RagNxlwD(Dh2?FZZi+D600w8_0_TS`hw6gn3hHuKKM`P)J) b?61y$A>0Qf>-6Pc00000NkvXXu0mjfU^iCx diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool@2x.png deleted file mode 100644 index 5c21b324522ba40b8d23e3a8e81fce4a91a879a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1386 zcmV-w1(o`VP){{lBlwxY^kP^(D_bh0#cN@V>7QP)mhJ4v28 zwbs&31+2g>0@Oj^{DxzZmwU%37A287M!Y*(xeq`>;_*o8t9y6v-aW}d+PL@ddoXv0 zzdC`Ft>MS3zaj->kT#fGRwzlVP?A`o zB(XwCVug~#3MGjZN)juSBo0i{cvytjuLKV|+rjs&9(bF{wNSmd%*BBd8k%6KA(0=7xqa9N|1HgYm!|Ls_nZvx|(^M0K?T&6p7?wm@U_ zkl~R8jn1fk&%E*9HaD^M3?dOU)j1H?(uBSiCHkSo20T_lvb1<);U*NLuSI!__Z5gl zRB-p`J`|%zC}AS(Td0G?YCs|CP4Dheh3}Pr;{uOu;EtLRQHM|m2qv&jq;~D&$nuj@ zhVK7o=p3C!oyJGQvvn2zmf8hSzcm%7omO7SWBb|?WavG0(fa!Z>VG_&RLn=i9IevS zkT9zID5>GQa7q3#ic4AE`j*fre-d(r^8*y1&h*HsB!5YQt@X>;{OVF@d1-k8h5Wdf z8^1l8Y>Eo{Ds`sEAU(?M>^~P<6qT<(60K;s^_8yVCJU7n_wFD;6q=s1h6HK-^AgPw zG1rzCq2u0!%FetPR#3=0D6i%xn$v*Ye_x4_ZkXA8#|fj*^w=KXMfy@CKp`LAUy+}*#+}WrZ!QN$NHSe=7s7EmNElzJ z_x&AjRK3hu3*JIx=%d8_p!SVV5eFI($s>;>lih{vb4D>#&;Od<_jkNe^+YyZw0B%y zT|^wHC6P#>eG@_V9F3(X@c9O&R~WicoDfBHJ(tyyamrzp!#(SBs0GpJws-iN4+77| zoY0B)jQgD7ysI}5s>(00EeiS)X@ciO*Q1H)y`xUpLc-18AEVlday;GX!USoBOonIv zeCh*tqsd{apv*i+-4d31&zv6IW7nY?&r_NVt7i)1n}fO~C6{0O_UF4$h`za=pVdoZ zB^S@8j+sRINqxq!{v~zlvzXhSITS+E6iVjTw5)C}NrM(1XhexCnBR)(xU-`5e_PC_ z{fLzsXA=%9Pntvv!~~m9OFXZsYTa%c>B=*wOyFF<7&z9?_3*Pzp|;E$(@jrBWZ?qV zo9;)ch%8*ddNK~Dn#jTht0yB=)t_+ki^QLK&vQMC#bU8oEEbE!qMg|Sck>=u7-F_n sn0b#Z3^D6+)x1X*-Z86CA54Vc4bde@EE@ANWB>pF07*qoM6N<$g1FeAegFUf diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.joining.pool.imageset/icon.join.the.pool@3x.png deleted file mode 100644 index 20564b2bd7801d66b776a6ac6b23e21a0a977e44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2051 zcmV+e2>kbnP)3)0pY@}!ubmllhSLPYYRBsD`Bp^V2(W{oVYcq z)b<3zG;XQXN=<16jhx+O-flt?vbOh^z4JEjBSDh&?u)Zu&%8HpX5T1emFBYoaBL2? zGrx1Bg@s}r86$_xGP$V5Yv^wZJOAc!d!vDjkzE08%pX3e=8!Qm+yZ?mAY&Xg0W*gP z$Q%)nIU*o)L_p?|T274-|7U2~@2VED zgSe25Tz&}*;VmFVjFvNtxF}pj{cHye;Xjb~y1nQRt=P^I>cw?1h5tZ)mpk1RJrt-Q z6snDdb63Hb?4;7d`a{?6<=8)NmK_1Z`a?RGso&dAwvyT856PzugU(?%Wbh+9K5##S z{2`4UZxpM@2-%!YQu$e5e@MsZwG5F>0m--d`NNF(z5Qgf3*F_`uQNK*^d76W?YsE$ z(>4S_5ClOG1VIo4K@id+JDHf~ixO;$)^$$rtQRflgm&q`IbMFWqmR?qN66(@xu@26 z3%FYo)NyKu#0m1^8D_S+ZHS(Abq-i1BS{tKy1O-Ja_-3O5gE7Aa-g$8y zj@3e%sC*4K&fbTCnB4;J{63eucm%x%`XCvIxh=4%yDnR;z$9#^YT9ZxGX?YpW)g9!efB<9u1&cghT*6=FPWY$<_Kt8 z6~xGImQLo81Y~FB+UX$nD4||M%9tadLadFcrW0s^yO2L!ynJ%_i3(ScGG+uZUhwh^ zF({o3?#`)oQI|V+>4U!4ZEo4P@a-SN1Djm$<1~XAGlCee`;0|LN0VXBUF~jR`G^0| z&@FB8@<)fxp;k!ZQiM7XuewtUDPcwzs+@7oG8~|xqfQdjk3fM@itn8;#0RQrq{yR< zEkq~X_ioBKuoU#f!f}O}i|>VsI;pE18{+z<@V_L|gmfjO(Am(0Kgs zP`iFmrX~QXjs;mgq1&t!LW|eWzwKvw>X`3wibMk-0tTg0JQns6-2ds-&~r+s4!1xO zZ)gN+0Hz2ybR0!_&cccCt*`y`^}uu7F`-ZDjDvWD89q>H0iD5J5slquzyBLSA^#Pm z`>dSzPk=vs@)`l@AVmxbV$}MuYPl3C(riJ}^h=qwpZt$NsB{H1WFT)pM+#5|#xDY; zmK%I%;rxgcF{lNO4;o8S%bUOSq3`QK0-v|o&MH#G3;}b!w$3SrUTZ=^l&6A4riByA z&23KWfMw?5iN3=T>ZV)2gb*-4nQE=kz1axbK*K@PUGqUt?C6*QU&Snh8pdXXdY{yS znw3*X3JR2}-~AQ5`y5nvZA|ym`xv^@IoP{_w1I$@!W#3J^#{OW4xc{WMbS&QRi-$ zOUkF?3AigWkxo^&@H2U;=4@~YUOoMBck6s)uip|{ivc6^x0rHC!gtVUq9INev zmJyOzZ9PyAv5fE_)cPhST76$13*8|Y(%6A^kc%Xioa&gM)a$=n>Gek{54ZRdirM@w4X!jLBd;HA7H!&5FS-3yy)w}*cTAFK99OhbN5!_v7~~! zQSPy2@FLO1VIo4A!-n_S9FzV>6BOeoTb=|WHY>g&2AGm<_{ipmauTX zfvAYh$Tq{L(rmX*^*g9o6(+=Hbeq}S!Se_aK|r6CV~!KEnyuK3YBO38b8BN+XFI$K zwv<1-8N&yN&C%Et1VIo4K@bE%5ClOG1VIo4K@fydugp%n`cu|y`Y<{Hz0EwZcU5{)t|Ctvk$VUi8-Sa(69EHa`&KZBPvJPX1`yBQ9*sZg{teo39qtH hHCCC9qinMeZvc61gzHZzK`;OS002ovPDHLkV1fbp(Hj5& diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/Contents.json deleted file mode 100644 index c32cff329a..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.leaving.the.pool.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon.leaving.the.pool@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon.leaving.the.pool@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/icon.leaving.the.pool.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.leaning.pool.imageset/icon.leaving.the.pool.png deleted file mode 100644 index 2758eeee69ca2d79c88a566eda017dbb838ae2cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 784 zcmV+r1MmEaP)7zs1#5l*jNf%H#0Fd{RAYRprpL4ZD-V^e1e8=P&&a>GqFJym?|}h z07FGFtyCIP-*JyGPMtVOeRfh($v-KH@1A@4=kB@Z?hFiKt)3Sj?);vI&4Z4Zn3!>A zt-kAg{#Fu-&8uy_rQZYX$AkA1(&LY@=J0k-miGxoKZf%3Ij_iOrp3 zN~XY)kLf=kAZk-ts*_(CgNn@Fm_YvS6c+DK;q}fRd4GuNUK8sd4jp0FCiR|mhcB!htHi=IQpnwzY#XY3e;r{`v~2eGG3!}(6v8aG zgTmW=6wSn`q0x49JZg<(%fGyJMp5 z!fd`Of~Mgn$kSm%{OZcpHlcuefc30QS^%y;xlrt)(dz1@CRSt?3aI)R zMe%|dIue(WBJ4BD3sG7kaF{r)76#e@xDT92zHb&NFLW>2z`XaY&e9w<982xR5uW&I_$85GSipxD|C1Z7TI-1-*{Uw6RND z_@)sBnkvQ@eEEzOqf8?a-TCRI3Fj}{X*%vay`^-F9xZg_F4aF`Nc;m$Tnye3jWOH+ O000078YT)%vKqVoB$U>vwx$JYXGrH=W!rJ%F2! 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 diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/Contents.json deleted file mode 100644 index add923b2af..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/icon.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/icon.png deleted file mode 100644 index c4aca2be69a55cf892168491fe9ff46bcc869b32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1027 zcmV+e1pNDnP)GPBvOmGED%qJ$X1?j}ucw>AxM-Yg0vBa4E*GJi?R5QV_kZ}#!&{idx)cqoOAIKQX(B8ze$!^a?GF&8#xD3A~_+61W+VC zM0)Fz6E->vQY2&*6T52V#6FCHctR2hhXXn0yb6LnMPdi4vuzjy@r15RWJoHufEgJ% z7BH4O<3Vw&cLZ#A4&|Jl+npo021Z-B{dqZzn^}=@6i~pA1OJ_n;wE@aju|Y;cyYEY z=UiONootYdlKaM6@Z+|Tt102QN7CBWY#y$G!Mju@x3KUmP1wlR)H~OfPr+K~+A>6f zccFT}nT*h{05WbyRr^J`6NHT^VnZZklvq4rL&-%da534*-AWNUFMdRWWfNQp=X%Lfay9(N) z(TnJMTOT3{Stomzw=D`M+Zwif0)2i4jI|*S0zE)tx=KdXpFs&jQs~o4z0(GRVS%3O ziz$O7sLNE?1Ks5$CUN6H-agSl;!uRi$`e^2|80h+O-4pgf>f32+TXagKqT_nFSYvb9@f@7hi)V-3vDumpsc! zIH85&Y&4-#CU|!wiASXb7cER^k3it32P+t-%w(w0$GJ%;WGAJ?&5!5Wrpy_g_~HEu zK_T`*y^WTGVs)->sY;2zD3%|7S|}K1ez=9Y5~(HB$p|hUz+eS`s=JjymJNUoy*Aq( ze$#NHME$k*XkY-=$`>-haOJI#DaQig?Ny(hTqf`L{}Gqo%(9F=ud|e3fM&p xim~1G8Ww89T$GyzDhA~ldPjS#=T`J3{{ZVop@<>}tRw&c002ovPDHLkV1hyp!7u;- diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/icon@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.lightning.imageset/icon@2x.png deleted file mode 100644 index ecf54432493c6ea5650666c083f138c05803b408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1901 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 Hu0mjfX53kU diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/Contents.json deleted file mode 100644 index b54d4d9a0a..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "logo.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "logo@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "logo@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/logo.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/logo.png deleted file mode 100644 index 15d1a22aaca22f3ad01c68d329cdbbb68269bf56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2144 zcmV-m2%qyv6JlS**_?VKB8zSkyzDPDCA2NBVr@j-R-wEuYUX`*;_9Vtdu`G zdf`)w2`P#RO{*V&OEC}x*c0*}^c?7>m=Fs|xG2wlJH?1JiQ!z%&rl3-CfUO??yv>} z!7|&(dpt}rz?q~VF-XZFDW6{_vP$nXayj|f>Y##fKv+b$Qz>-fDrRjs}b6hdH!fsJYhRqh$FP9|7E>moqO@_B5l zA#03f70D8HWKHnMv#gSh90=;;aZl98Z61CDIc+?STgu8<$Ql%lFT|9gaGovtP8;?2M5*u)HhXb_+ihC-)a3Z4>% zwqHM#dGGVz>nf!Ig5T_ag<6_q(X?0399)JEK4#m$e1~iR&-mi~m-WBf5tNjy+aP%A z+ALw%z#s~XZj^B1Wo0XTW1u(Uj3l3vT%=b#jKk6KKz5F6BZvY%R&%sOKHW< zmDz^|CP$%L4f={*H3|yLvV0!xn5cTOAqcZfPz58DZt!?lnBS-9q%3%^JOmFLZxCSM zrh4`dZEun54nR%>L0A{jvtEKP7bkb+wYbN~r*&a0qasMkBn}1YtqVZAC=?5mPjwo= z{fAZgRh1hX0@vamZP`Y8s(_U*cNxm1&kzWn*|je4MpzLymh0JYVO{4_JmZ8a;iBX} z1Rt$S5MV)L5@fllP1nz(w3~f6uYy4}5CnknTMsA-w1U754lZGf1ppI;zy$q*bTr&~ zKySSyNtl!mour83LTxz>eSUR0|AfK~BM)DVkl;0R{@b~sNgm-Hy7tZQS+AEI2=?oH zmRNu_M_Lf=XF|Oy$H<_dQ-l6L3TBP_i~=Gw^z*TEsoJUmB`WV^DmL{Mkp@J0_no0SxZ+^yB#wNHM3p-5Ufh+Ca)Lc>K zA;QAl5X6G2pp zL)P6o)gHMACEw)gsNUMFRkE2|IgrFP2yQwZ*ldiAauWIPAXy?*OOlDAHPHu4qLQfv z5JRNH@hq2eNFDViq+H*wTdHq^h+N> z_GE{BmlFlViRCw2)-|aulGq&X*vWOFjgfsKKqJE!o@#X{BpP5r# z2CP5bfL5qzSv(a`ufR`RyaK;+lMVK>T}L!@XsU?ouq_#+svz1}J6-`zE?uBq@nR%PT&IF2*U7#kPQ;pdmyjJXcc zB}TNupR-h9+gF;+hD#;Kp_1Y&?#2u;r^ZifG&n7C*c;T|(JHG#OQ*!CBS&gZn`XF` z9j2^ts6p+K6J=9oX_PoMRj)dgo3G}gJe86ua~qX_>FFag|dl6hQWBL{6&WQ8nb zdb&Qr=f7pLLxI5SP}9@XMGfbDVVxxg3z%hjk7ogi!QPRYm_)Ob>ukNuRsqztWMl^`^Isy1S{r5EEw9%S*EhF z%{kb7^UW3+#tKX13Oq|Cgl)1{$pVZkaf*MR!H!jkUVQOA9Vu@F;-l)Nu}YN;U}jFNI8_=#nBy4foK~i1Y|$TEN*n^VlsE(!QKG|`5%*N?RG3Q! zFrq}pZm!S}QfarpKEBh@(b1u_#M7rw8|j=zl-OuAE;$Yjl{K3DKIRrS%vqu#0ynOb zA&e=JF#m1=v_ic!Rh>KUu6tC#lO|KN45$U{^T_+sK%vw7w{vH)vJ zpqxMdw{!a+cyKS3Aqx(}=$TW$Axp3-o;bR5WVQr8Rd@Z%tH;P9tWu)q0BCPMNhmpD zCoZwgg9{4_R?Xj5*0GtInyQks&9?jZJq0$KO_wag%JdAcp?HJYv-NOV>({PM+NeNa zeSyBIsUvedL}2XJF-C0utuv=*$zn=TWsxhg#ua&ziXC40Xy6?6oe_3Zs(Pn^RpQ3f zD&+(!6tgzXudjdcnr#c1D9Tr~7KuqptnWTs5!D{qmdV~rnm$_VBw?>I}|p`tj+vQlOsP?oH*l#Rx+=~OCbS;|IZey3Vv z+0xU|;lv13q@3Lsf0J+}#$2Cu;%lur(btgaeak(JVLwiP}-rnWMF)ml% zIk8+W6zkJ^b|AyMTqe<0pIo`=T^Dlw$dhR&Z?_#3BiF&GIn#*{sLCI@9MBM^`O#JS z13%DMNqFqOUG&W49Z?O}AivQPEq;PtIj3GnqrAmsdVTr-o{YUf$3mn1`iFN$b+W`A zjQP_86j)dP@52l0^zykY-eVFV3uJog{@Zo`?NWpy9gR>`(kKvu%)I}3rx*1L1dC|2 z1{dsTuh&N@@a1!t6Dv;#WWu2Vo$Iw;ujg`MRH)0>&_-yhq{>r?QKm~8MLLQ==v7@+ z@LyQE=rvSYAlyq2-$jS+yG{MC*SKJjfmY_PA{XUrXsDy_{4eo{&`YjA{p{Pi4u%G6 zQM6oL9ScMGbMJpPaHo=q=wL2CCgssfRbp4Kn&ARrsLGQ0NAKpn><;zvle)P`H!?th zKmFr>2Obr4L@3fFrNJb*>g3PO9p3ur3(o?x1lBnJ=r`5Nq0!5U6DlhU)X{i+w`!4S zsJ&`~sU0g11qvb**)`njIu zvFhR1eV&T~ftbq_>a5!-5Q?PWbr?ePLM+-8ItJ${F|fiaNkU;&l_yyKYZ`2Zg`EMR zj)gBX=wcx$cz;cUb>s*-R;aT*&qu5*=D;{!;R`sW^HziHR>u-U#bdGJ%UdXb22+#* z1=jJ0&I%z{5xmm<{cBR^s*$uu#W0E^Z_w#A-+u=GRD#B;iK}AIRTLVFes+wJntT;rm?D8CM)dknV-?x4fX2F>2;{1X3+PmN z5AQ0v&IKhtAzvxFv4BRf8cFUxD7omy(sV8nN|K&aY=;M$&UFAvtjbri*gW^k`R>nz z6?Wzw^!OORVlH5t@p1R+IkeC!x?=%NTTNg?R264vtRfaPGVrOwzp8LpK7lj+&%gLi z$0A|5c`PO%3-)A>@%^iC<}1|X6Fd*|XAuh<0X`3UlJ>Gy2eA%u1}*>O)PE>%&_K^l ze#1K=8mlM%Ht2Hd;ol}%lJb{demCThC|rr??QpxrgsA!=O#|j3OB%;_Qs7mRqe74# zZZ2>B8MG%Rtqy?+0gnmS9x+fPV*x7EJH2@|DNBV|}T3(Tg936^Ji~xi`(K z4ig4p9Bl0mkCC5`9$8c{7o7Jp)AiehqGeGt7od=SqA@Y4lt<;<(@-}JR;tHzZxoT0 z+{KUg>EZA7nI>dWV~!6g?Gpt?Gqk%#=_k}&*e(?#>p6&EcVcJ4KM4VlP7&9e z_jGwsHmGQ#KGTFOsuK70utYz>dc4a)5 xsTZ~5B%T-qH$p*Btd4MqNgD#H3ROJ{ zmIRqSOvs|PkIp|0#lcesM@!7EK&wCyIoSn@Y>}VeSe5@z-hyD;@Uaw3R?WZYATzie z@tG!MQI&|%48tVA9C;5{V2{P4Oa2_#ih4rqiUlv^iabdE{RU6#p40DS{dEWJ)yEzj z+rGJ8ca8PjKVTKak2?PoWh_y!+@&q@1Pa3@9=9~iCb{h|@!la=($?{Jkk*dy)dBJ| zz#@H081IW*){D=yMV5WNM=3Wr5KUU30g6=&oe}3)=oHa#Vpu

wTdVam0bWFWxW9;4Q%3uPYxWhk`@7lm+9~h%x_Fah_$a zNyJ^oozH=5?Om^WMz`Yjd&B97m#iF>!SFjCEY2$Ksj))r_ZpNjc_|S?>KaL_)-3Ki zR`V?dew6-7Uz_>3N)=h$wyn9l*QJPC$J3Haj-oC;8B=Z~5xV(LWVRua-mf>t&v5%p zo81RXk4m;mLQMQGmvn+$t1P0r5@k>@L03fr*7E!S%8NobOb?O-996)9D{wF6MBYk- zBVbv+)~_Pb7?@jRFns2bBcoF!WbLPzP(=K1uajd1#a#3DgOZfm_+-)*t8f+z(4cuG zIq4FJlO~Oc_@73B$DEu?VCMdl3PDw-P>C&}$XJmMV!bm!v;rm5Yz7nWgB;n%2zA`4+ zIx_y3HHDUs4oY@l|5%NB4py8Oy!p}zH4v;2E6Jkx`>*zd+<5PC7aj2Lii&k=yVN88 zmoooza z|Ec>!O@vgH71K&nvGP~jh{C@wY$8hy=n}4MQy{QaiB+-yjZ3de7GkRsZN)k(1hy*C zl~2ZYnpuBo(ml46*axnBa?jWZnLu-Y{FV}v60BIIn_iRMgpxJt_QEOnH>Q$e^PJde zusrf~dZFH;M>%AvWrfX3T#`?Uw#H{CyYhJ6CQGqdi4FNAO#!`r(Nw7b3uGzQDlwQB zTjE?)Lo5O{jtM#P4(z7ExbHL$-7nKTa_Zl?-Ylw12caInRAU;eH~YGKK2AQqJ5|

f+z=)tvWfZ@TF#57e`d7Py)U##r))*Em-e%3mPz#Y&A$#k2vr? zA84vClAmJXlI4`bcN(O=Ym=>#R`rNN+}9D2Y|aVa=Zp~5BKjb>$R ba1g!%zry`;*C*OT00000NkvXXu0mjf+&BuR diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/logo@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.logo.imageset/logo@3x.png deleted file mode 100644 index 5da01a1886ff21864f47c8eacfaa813bd2e52e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6126 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 A?f?J) diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/Contents.json deleted file mode 100644 index eb6b758211..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "online.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "online@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "online@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/online.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.online.imageset/online.png deleted file mode 100644 index 7b328bc724e5b7530afb93b0ecf34a042c4bed01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^d_XL~!3HGNrubO_Db50q$YKTtZeb8+WSBKa0w~B> z9OUlAuz2rT&lW$?Orou1YzbAej^LgZJqWqCJ z`o+3q#%=s<6Hli7zuvRh=0ES^yt5zfba2jDc7fYEa^)xHsG3px9JET>lS6p&^x3g2e%hTfBgZ-Cps%*16{n430qqUi7NXdA#C!opQG@>(BE>b3RR*zy3+;wSxiLla|TuGz*C^I$RreJnK;=NxyUf))0_c-ra^D=Y4$+ES2Z-f=EI2F#?W~g3T6q0%%Ht$It z+x25s8V+~LnWYlv7tRg3n3ljhEyqwM{aW>u(4LPg$_jdwE?#52A^7}G5Ysls3+B`Q ibp|%wH4*o{uRrOmOZR5hx)xwiGkCiCxvXug34EQn2uT?P_o1U$`fnV&*uMDQ`b_=nS@qYjS diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/Contents.json deleted file mode 100644 index 2253e6bec1..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "payout.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "payout@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "payout@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/payout.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.payout.imageset/payout.png deleted file mode 100644 index b557eaec7c331a8f1b9ef422254b6a9ef92ef65d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 576 zcmV-G0>Ax^i5=&4^;euNm~&x32THl#TkW-q($}T!3k@sA|;A+?W*YXkdj0p%xog4jFjkT zt5+w)FFGw5TCjw|nlRTR?t|o(j37|ZJkGbVOi2B4c+KDoWQ56CZg7WNEuqay)sTRa!;$4^h!f&pN&H#Gz`_KlRW67{uY$zz6(tpnbOjke zb3Ss`BdqU`F_J9rr{`uoB8QPze|YUNR3^1a6u!>#@HI4#_u8<`dS_O{Z!0%aIBg!~ zQ+qTyYBWndi4Ic2luLc`E)-%aC>c7igoQ`+^I%msceaS%@LT=x|nb>YIzs#J$m9 zD(5#v8GQtB5s84#NO80FF5mvw^U$b#xjF*FMiL=q*S8j{UQ=HZEyg_r`dHguYEb3t zjYa*z1rrsJU}R==bG<)rGjIpR$HkEK<@TGL&2|tYsMlL(rApG;AMIzLaF@-MGt%0h zcow5t-&wK|PaJu)E9aM8u^k7aH&`|kB}!SNoqFmZqfQWW7W#eLd#~fHi6F2>dl>ZS z{v0>#z16PF2){Y7)Wk?42g%`wze6Eqj0{4cw`%m=GE5-$%;XXdB?t!YsaRhNCK&Lp zT=!szsh5m>`cwNX77RgPqYmTrf{1knyHyxKqSCIsLL>j{fly1PzO!P>4;wKg-DP~F zg7`=U@sSGR<4H!<%duYH9uT`F9VTOj&;cA1I#8kDaGjM;;SmvwO_ zi{e9Vcy7ag2wXC^*OGlV=!m@{mQDZ#4GOj)j3Q!!WCquQ#w5$AGFw4ILV2o0Xk##F ziQ?Tb&xaxltaSayLc|CqNNp?s0neoJ`L`D47!hOYC8M{o`-t~>%psCYJwv>7{e13N z%AQSxMEscoGma2JLM<6)mO?m}5E3RtmV~+P{3~cgpdj*L#;0;e+zuKNC`hi?JCVQS zVCErbVJROdNN_A8zQ2wE?y}jk7}WQeF-UwRcHM6a%gYUWBiL_xTC_V1h#L2gSd->M ze58W-NCokc3gRPNZP(D5G-B=|Gj~|qTx`J*;Yyi?4(RElUOaGZ7$jUN)2O3n)+r2E z{hy;f^tp^zhKRel{L%>w60Wv8Oy}E(A?YsTV^R=ySCJgv_&c;9&S-~(`@1iaB8)iR z32xB3uiH@)4UXkIycA(B7s>SAi{iTblVw?QGO|QINn

$Sxm>^HqSWT4Ht`#0cuS z>#XQN@}R}Zn{JEr^0>>+f1kA?_DiFWZ*fL#sG+09M$d6Y5t$H8?M`^ROl^C)Vd@}V zB=NrNkhgWy_Z73tqPT}*P^pMSKxg2Ah_Q0^(DN5wr717rF`Lx@0000-+%H00009a7bBm001F4 z001F40Y#QEU;qFB0drDELIAGL9O(c600d`2O+f$vv5yP=#xqMsL9-<8OZdAGPz#Lm&u1xPMRujm?$%_~FeDBFg+hz=NBS z6AM%O^V)|l?7=D8Z9Mz21wvlJ(Y0Co@OKr^Goyn1q{jV+4_=t544*?9 z9&U>$?y!BSP`^xXQYw2p60RW4#Fd%d0c9&GrE&p25ulZJf2&|MTK<#qCr!&^wT_%VPoQz@Ewi zbKDApDaI-z(9`S>0UZltj!Kz>1YJVK-ad0GOk;DcX{L(0ee=K&v+8vS^vgwXGdbUt z87Ey}E&&KLA$AN?L>Q)sFia6)m?FY3MTB9>%-iL$(^42yUMqKkr#O=>ms^-&*b|)? zr)3p5`YY#%=@Y26uUg>YZeC+H*HmUj!9jFkJc3ma5}+zZ`r^%bFV}36Z;grcnPdY@ z#s*br!rveVnT3f1*0{U&dEw_dX2>iIBFaLa5k$(|XPJc|k|``JM3lMD#ExN#bGQFZ zRsa-*f~t9qSFq$b76!w{)}w7Gmgehr&m4H+udu{8oyv@z`3~-Zqph{$VN&VxvaoB+ zvez1LEDYVt+;3CfVaaj2#+d)&O09kQ34z{`E@rC1l6s;w?Zc8&z^)AZcwsJRk|a&= zJs@@rQ*yXuNOEQ}V%%7n`z(h`h9t`@BgT!Dxz92SGt6M776?;rW{n|FK?oPGYz^8Cq$7V*Z$3fP*Hz#PZIPzZ~F_CjEeQ(?-3!7+QUGeLb3Dlj=+ z{6|&mHbxl%>`)53Z@1PK;-IgHU<{CQz_TNE3{ylHrlePqU4Z@mqB5y(tuSHI&3>sY z*<%IKFO?Ge)&|V0^r-oWy&<-+D3uuJO@JLmKp&GDAmS@I&v#GUrxeFaBtU=J5tF#D zk5e5YeJ0|#BhFwpeVW<`=@jiE)PL~sGfcpYo>Kz-d+g3AC9g}uZIt%bb@Zh&oW7_@|FuI>)E%W-6-zyhV>V%@PYHZBZ-4nUYM*1 zHsREk<^^Fs#9r^!;O612f>y8Fy?p|;m-gXif;-|kXQX;OFuvknPam#sY6N(Z00000 LNkvXXu0mjf;LL%H diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/Contents.json deleted file mode 100644 index f46f630238..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.receiving.rewards.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon.receiving.rewards@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon.receiving.rewards@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/icon.receiving.rewards.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/icon.receiving.rewards.png deleted file mode 100644 index eed642ff58500ec8f64a13470b4c52f150ae2986..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1243 zcmV<11SI>3P)H;l~T5V|K%^7hF8Big5H+$Tm%F@=n(`De`u_~! zU`#Fb8#&lVZ~iNDF!~7`$qbjm+pYU5DIEfIv zjAZQLSJ%kN2DX2FPL55ICA+w{d5H5cINq0}27Sc68~at$XbU(rHkH^Bes(_Jkau{h z;cggsG<^HIb+G^EtE@Ay>(_@|OxOW`e46e^7XI-Wdj1J68sv})ik-pBDe7Z>{VH(c z`0rBG0xSbgPK{oz{8<7vWY*{*ej2xlj>I_13+3E|GHyE4ki*8DK+%pw@XOAS^?(nq z%UI8B9*j-Q>Po1Xj^9w*hoc`;6oZ9li#RZ$gVXtf{_E1#9W0{pvPf9wiE-_8*A_#C35Xtb;F++L? z6Hx1jHrvmpNM7wZKO)KxrAX5h8B(q=%^Kk6NOt6`;p4|ogHlKC|9hA8Yag*DGP<`u z5Xs3RJT(|SpU6QBt80D!I3-T>DvX~8sSY;WbbUq_S!TMoK9qNY!++k03UJ?}J0GL7 zd8Md}y{43vgK<5UB@Q6!P&jVWLk>(2Xk_0`nCT+#z=OYD=XQtNS4ktUkwf8IgWca> z6m`+9W*L_Vwp57cQV2AMA;L1?U0DXr1uU`k%ely`H&no>RfS{Wc=$O#~8j-)~DwE=8szjNk!rD1cSQAHR zO@gc~%QCzTYyChGNe!NmfE{QygZE->Y|F9?t-BaJ^JyEN*g}3fDs@ntkKFjcW0viR zmQkrK;|}%fXb<E)!%&AwEP+KVg|0-x|9 z?_N+HYl{&j_AH8a%&h60qeX5kCkxn?S+AEQMiIo))mRoYBklX1?rTnCi$3C)+!?mm z4n=^%&bEl91(s1_O`B~v%nGg+SwB<+4(6P(VvyDCYIUcCYG&1 zf71Ru%YvG=0%4hIY|pcd@gDk9i5Y7>*u&RNceH|K?*LwO9|p4lg>L`=002ovPDHLk FV1h4}M|uDN diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/icon.receiving.rewards@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.receiving.rewards.imageset/icon.receiving.rewards@2x.png deleted file mode 100644 index 179dc0bef59be25a64d94fc0e84724d325d5eada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2162 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 diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/Contents.json deleted file mode 100644 index fcd654cbb4..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "recovery.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "recovery@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "recovery@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/recovery.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/recovery.png deleted file mode 100644 index 7ec7fe8b31b9174c5975e97d1a61c26a94d99397..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1123 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 diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/recovery@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.recovery.imageset/recovery@3x.png deleted file mode 100644 index ab9d3f1ea0b6ddedd11219d78eaf51ff4d8bdced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3022 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

$iU5>kt0bZ~exr`lq^or23{R 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[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 eG1Ub`m9{gg7^z3f~~adMu04xoagNm-CIF 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�gj`xFdr7WpGD36=4D_zy51qr%%21kJG#F zJ);lbe@vP04T}{+8B!@iG4F>50rp4_ur=2X$(=nsqlb^qCvZ-5-7*uvVULKeuCD0m zlgl25^SPHe$pA{$KobQZmt-qAC;>tb9&G5r`8hp#{EYk%Ublx~wNmS~^m@o%O|ZIB zJip3w76-Su?wMpDSXOCu!!QmzX|Kj+c%vUKGVSA8=~n`)2|Eexu7S3Gm3#kWi+}XR zSj@cwgf-U=r%P6f*%LPjP2aER8(;q({p`G9)BO0C!F8zn7z2<^t|N?~K7 zeMo406AjoGHR@l}Cj)-b3UHQyXJx=!nt7L0*3{y2I+oX$rgrzi1fVZ2E+|_miN#XH zAGfL7B8FFFNvM01w_VH6rK?fI8u1vE694!$$Md z^;z57wN_aRmZA*MX<1<%G%<3sUwC0ugFaWXnU76Crl%8^J6tO;wj9mUhhW>easWfm zni}x`JAdcjp629{-hA`bNgHVg3SHYsX>q`I0ffwCV6rkCP^ZCvL+1}3(95s9LJwbh z&`mOJM>Df03PYB9a{Rcs+?v@w-FhGUWhAk6jRgQWseSvi2H3r(fA9Wz0*TM)Km7mx zI=%Pqy9z=GRw~$TJPZ)$Wn*?TW7W)5HBi|vSt!L0um$fnw)gu?Xf?gng~NtBf3=(| zaN3S)aYJo*8~kDe-&WtbES*YVmEk)A0>Drc{MCPTCm`(5I`>$#{{EeR=Rcy?Uw@5$ z?8iRSHUG^OT)N|Jl$<8vv=dRQB0UUS4zZu@Z4_K_qR{ZqcPe`O?s4i)P7^_kH(St9 zFdyG_(V`16=RN~C1GrnaYDqnQ{Dgk}|Nooxz3;z6Zt{;*`_61T3%zmMegYOpY@k_G zli&NBgcX@+zgBjN^AK$zgoBEDO^!sSa3I!dtK^2?RiSZ+l_>fgs6T=&1IWuI&LQ}l zgWnv-8rV2BzGK{>IpbQI{f;7`L}jr*NdUR}N1|m}Vh}fnf2aF&p@I^WirojT45(Av z^wWwI<{nwc6u&au`XZyxTI=b3K-jI<^rNh-3)3p)7}5y11P7vG zP2v#JV-+7DDOuWZ(1!;=CSHXlX;iBVSMALfKgZX#d^T4$08^YTU=y^F^Lknw2bIY4 zou+IN2Zg`=t?$tP?qB)a^rN4BgC3j>6f=%#acxiCIi~=KMQxY5$*wl}O!<2B@F9Kq z%Rfnf`piG-;(G}L_H*hadx2q?8LP=<}&I5^?}69mx$k2YDSIEnnC8uDhvAx%bpsOP7& zOG5em&-6MHo6u_o&?Z;Q_Gp>C{%|O-FXGa! zMj3`)p3yAJD6}(xVU!-H!1Rh}%b1NWNW9L(b_fgt88X&a26hd+Ljw$Z+`ivpa(ZV1 z&cF5bZ+2?ZrqPuMhX93Uhb&z~kNOLFc8#KgWJHfeZV5{YL=OJNTg(E73VEEp|FPXX z*q#sSr|`n8A6x&mHbrI<(bwKBu7RGX%RuCL0<2}cyVFUGi?orU)n3!H8e>c{?vms2 zaj5?k{4=J2O2rA!Ha_;gF-An5hZ1d|wFlTH1%JAGGMg}BiW820qUH-5mE$A|#~K#M z^L6&K4?Gh+pSpd~+^)sqy>d4N(94GLyxsFo=MV_y8-zQ?&nYXhLyhfF#}vBWk+Tyz zuH(v{^zfWk-mRs%FAkYy%)prr(BKj40T7uT_eja-;mAjJ8}~vle=EYQ~C}DyIE(Ut9Bz@4Q+LndHY)PHR7ao zsS6)1dXcmkX^&F5SnqoeJT408`}^tl#ltaLM}ur-UZG3B(t4q=2`S5}H*~a2zHUX(nf~cFb5!0#H-D2AHq5i0WmZ!fb}j zTPJc}vLP!!+h9OCmb#{~=P~WbD0u461x)zbcU};3E}b;&NMF7AVnLU0=B3*nQwinmPN5l+pN1sbgNOx==%7(C_KTOZX& z*RsV{WCkrdKsWk=_~jTax{bzWq`#K8c5y?~VpTirM%dmiW{wNs&cK+)W83-!9;;5$ zWwV*UoZiOPw1}>CodIZa?VC41XsQiNlyXKFmkP>C*(G`QTl@qM4KR({k-q)yw|n?u zIJZM!8Gw1hgoA)ELxqJ$r&^eXh`VOA_(4iCt!3e)c{CbFpNtFpbAVH&kH%O{YZlesenET}^3W18fYa1N3jEQqw(gL8>TL~awsfH;!^TRsnvgfLHfL9f+ zs}>apSQ!-%9CsGgf;Oul!MT^vI*aX!@Pf8O^M0Uo2yH)I=0oHghgBKix6zYC4`w<= ziDS`Npvmiq2x>+4E7`FDP>ohY-lm1l47k)X*n$B7-6X^cqE#+L*nQ~zPcngR z+TLyg01nMBOm{z5=D3%0#4a%7?;1DQ@H2%C@BqlZ5tG(f8H&o{i*3}z!)kTza+mn* zZ3wrPT3wc0Al-q`mek(k41~nu%c9jD2|AX>sSF<-M>mIMcj~*eoS?Ni{*&Ntf`#sF z+3yR5<4~hK*3T*Kw(;)kVA+o>K6k|-D|uS3_HxHu>!kbgDJO=J9r0v$XkoAx-z@H7 z5QChKUP#im9j~q#(xH-$2}-g#TwFt^*S!|ML?U!~b|?@WI;n1np@Ihs%M3Mu5;+jo zxH@<=&6Q3l3Q$4|DMqIpI{@f8tWnltlXr`vU9_SgrSu7;0WLN`B9;yg&Nwf)gVwoF z!Rd9t<-Aw`HQNHW8Lv?hVA(=7>p0*Atj!LJdVLJVIKC>60&XHHVAd?^mC3oPAbCI7 zBbb1dx}rQq@Qw|fn-;kG)+>|UA4hIOnH7w84g8=x4I?0uVP1n(^piDMn={df3z21=%8^x2uirVgN68sdm$bfmKVc=#(cI`WQx3wv6a>??B^=m(9>C0xzQxcF-Z5?!hW7~VYb((^_ z03i;lfgbI**dnjXJ}4Z!#?WKO)}_ni;!WdNbG-O2E6-)|z5CNW8nBHQxnnbMA&ZC? z!?d$A5VV?v*I9c$)lS4+p=i(=)`zYBS_*-;13C=sQWQJBF?0 zY`D=(D$I1dpnhWs1*U+ehChCLK!&Cjxf z&<*0q&v=iYLjZIcCTpROZH&8syBrZFf69(Hc6FFt@y%Sb3c;J|psxzRRq!EWznNlW z_FRN^ZVtBrfT|rLvs3?7HLA^sKCYQ&*M>sb!JZGj>f3G_GhiES zhyW21od-PfHla5yXxEAp7H%aJp)5wd*yzrPm6JJh%8hqj$~7w<9c-6@Bp=8s(ASsH zMl-vnn$xv&3~L1h9y;kIeBPE5Uf?veF|Js*rH9F+w-+odtvz&FNr$P>8dg8(g(aMh zbO@Jt=;X^3NQP#^N-;3q@lzi9Og`O+ON_kGXyIbQj`jH4{#mpyT<0rNcg^TO|1nA{0? zPdd8>m$hee`JSCM?W|z?O|`7h_8QR2r&!Vi=bC2HFglsml#mU+U9&dYWe*1GOvMUi z7YP5dK;X++ya5VHu<7YU$6Sn&-O>P|p$ zIco{XW#BEd6sPWZKe4(1)@AEE>>#H0oe%(F)LXO>IBlEac{9L`e36h_*Pvi)qYity zIBx6&xVE*Vw>2^<2X2Sc!;4o&>Bt8PL2KfaPr26aQ4c7*KsIEF7duSqbS>;sB$|>? z)P2Mj#X0}T9FRONhe_)*V(89LScqWHGZCF4vh}%Ib)07 zMJGlR;Ns;e2BcK;OB6E-&(1LHD<5!u)Wi#xucG`sjFV zGc$q1j(D=^J>3CV$kt>%~o&Qf-g9<#{fJQr!NQ%0QZF{ z>^X~T+kaTE~f+pbKuxKmJpV2nUX~<%euZczq`N2iXRegP&+vnECy;Fe1vFWUZ zLq0Qb-WA{M9WQbyifLo96~mRvD!N=WrA12Kl&nALnV0J3KrtSAcE!eLuO7BOYoon2 zc5&KUF3sreSuYi$plsQg&t=$GH^;a`^WrJ*?u*MULuhxOSeA9)yBF4dTpH*X$(_<6 zmQJ2iylZitGN?8uM?71C=4InQG_dkY`22UOyH>_&avV)pO0vi;06~V%?AbP$+W~6( zR^!>MD3!>}XcY&giZUCx8F)iW<&pzH;u%n(%$KA9L1Y?gRjg$&PNr?Eu}$uAW#|;$ zw9nsmaA`i`ND>}fsIr)z4Q8#h0`X5V4q!5a1|UYE-9~zV$C2l>a3Ky26c#|U3DzFi zdj)P*NcR-~`YtY!O^&cDoH*~ZZx&wzIYoJpu;hS6Qs1&4B{W!+IK3>(9JquLbuPME z3L#=Q(?$-|qDawB0Qf;oK-yl5Zh6DxhJ%Dul0N`JJ6I)}jg!cPeq_Nq}CG)nCjHJo-OT*c|jDhet` z3Wo)Tp!DgT?{?^KHA9(JY(#U@#2w^w?uxga_;-!9vf}5qZVk|!p8qsj$bK!IHi>#14jM9&2AJ*xAAn9|AvC}S`Z!PW)p7{C%W(jyM{CwJ3J_{lj9vGvl28I<~6kv z+uc;^^)+~ONLG3Nl9hM+>Uo#DZ5@A{ju)TV$${U8p1%<8K5(F4MEATK{#`Vh=NZQu z%%hcOYn|lSLA(3gaxv&c$;=p#0U0>f=ly`y?6xXdd}SS>8~-$Izk}zS`OyH9<9O+o zH`I1BliPMCgGG|IjK$b=5+Gg-oKvPFn0Y0oK{J7V(WxI|r^Hhk9F&qIa55LIY5=+0 z-PJj!T=R4N=Tb&y!&T=bLUk32ZF2E{$*hkM!D@-sgie5F47T9F4&|8?)-K2n)5q34 zEwrm70sO$%rKBYez^ZlV<_=4vyR-$$SvP&wx0xqxYXd%w-@Vzeb8B@MLMZ@!=eDN@ zj`6%cO@-al5pPS@4pOy1LmTD=5l?_uvN{)Qhp-$F7n%TY>btJB<)}M$&UB3`?GK8- z^W0=j9(e_al@-*F*SZ8?*T!k>DzxW{SF~J(Li^koI{onJ5E0rttWTUjZ+vMnq?G{= zqd3?}0)|rcunz^$mW%OS)jt4rsypOmh~tnr-{7a;W?c*EMBN4G0~O0}Qpuob*+KV> zdAY$;`YtPe*8JYq@s961+=lYm3|o&xd!QtBla+s`m5k@A>209SU#2l5|905h7M8R2 zF5b?tx=ro|dHgN9?pBwXXuqL|R(3#d7|8kID8}#>047B2Z=14juB(6CV=kC^7l09_$S;RoKZ6R|2MICK*((Qg+(^q5L+2LY{ z!=DN^m(>Rj=)sJ$+26uXom;~oo{ua z!8*xyO_kM69j)zzM%<|wGg>Y5mJK+m7OcQ(htKe#U9A$9NyPF9Thl{n6p9+4H1#4* z7vlf~!vY5EN{1P_>b9OcfT#xUvAD4Y-c9$}flbB5IN%6PU-xndk?O5&UOC5nDip;e|dLs{MRLxJRDWdBkrb~`Xm_V<;j#90VN{Sl4~ zrd>T#V4#Keb0sC`aQ1!Q{3Q#2`{a37^>-g!uJJ>1xi{{ULgBcH;~Ts`6ehb}1LRHJ zsbTZ%!8_h9XP9Lp$9Fyu|FT1@rO9-fOmz+}cF!B;Yf|%GaqAp8h>}&2>%d#xo|pmC zT5a%*q1(6a-D~M~kOyYRk(${WAg5bT(6nPv29?3Ij2P21rNcFQ2DD_GfJ1Co!;Uh+ zj8SwV& zqJ3dw3m&^c(yg*^Ox)fU9860BU1_3s*`WOr#m#y|lE5rM=8~y}cS21CU zyqRpnk_@|q*ZPjQ*4um=kO4TIQ6LyplT@x|(PXT%kwN=K)1nhC{Z@t&qJp*($!uBBAK^o(tchfqB9%jWi|YFm9gI{KM2;+6A+e z?I5vU+wOz0zf&a)qi^=IXzwj`6&}fs@A>yJ^~ERn{Uo_rE!yV|+Te@f?mK|am9eW5 z_C1#!et1XtKw z=Te{bQLQT;+Tdt>OKgpIJ)x*MBNFw~w&yGEt`?h|s{+{VI1)@C5j4~lphzd_u9d3d zpw$Ot=D04{G*N}Zrmhx*{ZI;SWpgk_65tpGb&a@cCEdb?XgocC9jxgrrItIYT^Vk) z51daa4Liu4me4f$)xfu3^=|FLcRVD3FQd%vi*Vy2zE=yaCmSTX) zrPqFM$q%FvyT-ftw*N@^z?wkht^9o@YL^FD8cH$5x_jd8PYJY#FakEDB*q6Mbe}Xr9}%3YE9{ZG7g| z2a7luFBo^5x2^%#z6T3KB4ySTmD00uT3s#4L{iG`;y3Mhzt11h^*Q&G?3S1)xA}YR zJ}v-#SAxs&tTpDf=WFlygm@3-eTI)#-pPTm+269E9V*jWXXhR1%fjC&jXIZ+Xg&z< z8x&-Z|79oZ@2|Fln;b2({%1NvA0%zd*FakzDo0qw2o0iQP4&N(+Q;U?b|D3u?r_wJ zUqRB?tv7UyW8&KOiyow6@>IX1+HnF19k(_am_OSR=WfnU?G7t7WYq2Uj=I|SD+BZf zngsEWghN|8>6GA@Li-ySk|-Va>Vmb21yT;+kpwOPWaL0J4u2({f0lI8uYVZ z?IN1#^J@CroNqb|tw!hA_Ieom!lo@;8aQv@wwM))9zQOFQ40(SAjZP3*sX;wQ}n@IBe9uvXgRb0ShpSR#M5@yR}L-zI0Vi zcmZHem#6q(;j|H@myFJ)00+ALp`U1fRIhC9NOX*7-$!jlzBh$SI0TDdlYg~^Q$0`uAy!1 z2gRVx>!3gnpcMmu?RGf7jKcwfiNf;iFwrjEKpAjphvIu!ih!Uc307w;ounjzI?ER{ zxAv@Si0$xJ*LoX2xWC7?=|~QSJC_$4MoenNzJ(eWwHPnBl3ip;aw(G z>lqUzx6ZaKx<4&+r#b zPtchJUkM8W-I-D8<{>JpFWK6c?lx&&Y-}hr+u1@J!(t|bG3WAUfWCW7TN|H=*2lxO z@Ia-hnwGId)kbDd=(36c94CKe2^MuefNRTL0+l z7{Aa`YDrU=>oK}#E;8r|r>l%~-8>n$(9CP)2_u-wH;)-ycjH_*YyCt?H zIRSWK1#0ATd$yp!ln>{j890yJYDZ}+fFh>ZwC|%+PyieZU4ZYLP6q*OftRjxnbs9s z-pJ#(g0OA97cZD;qat4KfMSb=q&))XT}7Zk8X#ROU-OI0IH=WWHCxcrMA_&*ZJr#8 zex6Sg^k5g)45ranAU2p5+`uaqU7}@xE#YEFA}?+#Vb{T=U-8VcN4ULG%Uhf}AgRr2 zAsGkgU^T<@DBfFC2HMt&0XrZZ&?*9`OGk>$e+8JRW)+5YcVuo?xyc2GvBb6cmI-pp zH%(hF#z3|{iyaXhw$nN-wm#IwY4i{D3tf2VI$)SBz8nD=z{XAl7P(qydYhb^JH)47 z1Y~`{d`ZGNJjGMI9kR=rN9*4-*T%bbkXnW48i+bHSI{0m%kXyzI^=}kvV6bkn=LNH zXoKck&t8!21X{+c;$E$P^7Y*^Ocy2IxJgIbF#ye`rif+q{--Wk%`p?BeF08-D6pIS z6b0kGHgO5hRKLSG=#EOKPQ?rW&K!0y^Ryk8rj50#sD#J>idm%k4U+&Lfm?y^r{ z!Zw-fyemeZQ13VpRIANnHaT}Y&NWTGWSY9F;d_`-DHwflucom~Cc$I^($&n2sWUEc zr&Ek>NdN=31FDwYqJUF1uIi_M2W~Xboo$a69C(q@($g((yJy-#afKBSw-%xA_0XZ^ zR{|P{fnIhDi*x~$W2|S>T6PU5D}aRtx66W|0axR1TD+p?DXUt7z?IRVnPs~G#-X=r z_t@&wY)EsKP0p*Arx>LLGqA#fYY$@` zO(ScvsAj&943LuoY>}+t)c24no0eKtn&!iH7c`$S^g>rZKRC$>Fs14agT!S!y^R-d zp-zQRlxlo!TXcw-Tm&b&B#rW{&P|K&3otPre&^%ZZcOUY1#~1kXbP^kFD@lC);%@m zNIk`){xcniY;i@YE~BiFqp#_REFXjW3`h)fkQTeOHwV9-Lql{OsKqUk#j~or3_i#i zy#|Zf9>dHI<28V_Yy92kmgE01VUBhCz}}kQdH%PXMvr3~imo|OnAO4!#c_p{&}>p* zN}6G^9k`y5jWbHk>AYuKz=oo__zsm;L5+q{ir2AIh{j5?BHF$a!b;uhw;Q%sSJyf? zFJ!W-Zg$oAE_YY;`n=pBfV}nzhyJi8GosVv^uoE113(`Ff~UBfg6BhV=0R}z?xuNP zEBCP={?rbc!|nsAOTUNW;~n7-g>2 z0c+TN_QQvHyV^jSIFhU2!)a{&(AyQwIhWYdB|Yp%L}6C1QnvokLj|IpYuAtg@KgcB zz&f@`8(YXYOvSeU4uGnZ4)B48xnw6Mw z+BM%D8vBXX!P~yDr@CY2m23I0rJ1qg*~1tW$Ye&odDUggQIKVd?dRCr1EYFUL_J0G z2!tJN)aiP4-hPzkrK5x{By|U;o3rd`nOVv1H#(jww>#yFhhbQ&w_R>Iw|Q~X`wfZ;)CLATCzupvF++$Sq$`-HEq=8e zfs@~PLbtp@J8fI}I*|kzP*2FyNaT69>A<(d&1#2fZCh@fy2h|?TwL~1Kap0o|0KT0rDD{m4%-}jt~64sZ4UXW!{*s=kwZFd^stg zA9W2HcYD2vLcuKgAdNwlWmyoO4b1nw+8mm~4AyL7S37;|;hTnK+-@iNO`lgn zmru9!?D5k8R#`5>ZnL@39L^@dd46_g+I;Z2HSJzeMl}b?{5No!M!X4&qkhW-#-zuxCwy136Q#pi~0Fx?xta%SDJF9pT*ELn+euBYL1r= z_*qNu7{@F5TfRFso_%S`uBUEOnTTS`T7l@8G{N(v%%6qVNj4v*VvkQfs2ZP%tIg&^=D%<8#mCjr=CpJ+O8vF%0Jnr(x8HO{Ep8a8tm0S>hck^zL} z55;-<^n(6B|L@$QMCz2VL5MmJ+PY&J^z-~g|bbd+qs5ACFH0XxVi2d~vZX9k?%hXJ-ZxXaZ6IrXh(NuXN) zFWt7WmMYq&%eNE;`u4+#YycfyQcGa1t$3RQ%+-^{#z}`sLdZ}Q z>2+}JfGxQ9kgMdjJ5H&b>GP42<}=(WbC^WIuZ`u0#?52hGCynJhF9LLMFmLe>-O9v z{ka$|LTGnsIQL*nzM<|hMZ$~h_pikli)hd_ao)SBQMLo%ecV*@cKzUL_hNBd+xLa9 zKA)OGS({6*3F63S`<{PN-RX1vJ#!z22Kp}DDFf79#Cc45`}~|Tm}dX7<9+tCmJaXm zvu}`G=6@e}&S8kw2j}H1$#mSH)BQ1T6)pn|2&@+vxUj*H35P>4jV9nGvHk#!LJY*@ z3^9R9VL+^##@niGTizN~4)JrOVuugKv>|>pNhClMgF<5B01y!}9mSKopsnQKNJBc}HW=z-Rt zv6rB#KqHGf6tn$I3X;dIT2$Da6$?q-^jaCv3MNSo8$0YL4xS{_EXYi=QCbvG0&|=+ zx_0mnT5I)}Xdww3plOt(IaS5xmIPe*o<(ps+0Do~u1ho~=PEbt+EkANFK9ECc;1cZ zRyaiFa;2yr&J|=55HHBQ-x0CLy`%^O^-b`8CUmgo^&Omn}O2mOhB2#Rlut9z1W5Cv$TN@v99BX6cuII<5M=4FAIe0%5 zFGNrIGl$}Yc|BrD0fhp$62)$Vj`ZX^EI1U{cLAAVw~qB0+97sF`fH9z?M#S*chn;Y+@{W6beG#t{><;Q`^3oNQ~-VKpzu+-o92g~!@GTc zZko^K;F<@&<-o@~!tQgYK6 zVhtg7D-ztnso&)0Hg*G4001bI8Fg#7TV7BgqZcfgl?|V?$-~Cw3T+H7J~@CY!U)Tz z?dr?{E4BbQ8Bn&Osd+I9;Av^<`k=bj6JV|7;#+UOLx1Q0@$b@056`;Y>TXKU0Dl39 zw>@(<@cZoYV$xVY?%S`!aOTw&hZdu%LgOqD9g)cvwSg;|6*!xuP(}_aKpb=*i#v(dLvs&UHn^FT5a*`{#wn_nPXp^BK zz6RWYJOR9!V!JvWrVI@|5f1SAmGi<$3l4BuLL-YhvB=cqT)Dn|o)#{OKNQixEFXC+ zX5*ZB0Vs3-Gn>)?AdrQFA#F2lQ7}s0^%1jdfaR{K@WxU6{yG{Iu8XO;p z?-+mC&#~n=eGH7IQ4+jSYaQO z`hXd_BLl77WRhyUi>aIZ%HRe-`%Q(LK4^Qvn(4D*-Pq&nCdrUT)3%0vY$Du7*l#JUVUn-qQ$e(8iv`>Kw!ncE zkpxuKmNWN@4y59+5bFZO$d!TB57qr+C6HXEq!^6y#4 zwcWPuTgf%YB8VIC7~nBk9ATY|6$k4=f^0z*yAj6Uw^py$g>ThY+L>s6`xWF#v&Pye ztS@k&6vFZknrAW7aqMZ&d)&PHNupJ|)^FA~v<>w7a_zrbz$k;={3aCi9pSV{VAJ+m zTC7~v+7@(JXo}Knq_=A2IE&(X2dsK4p?dH8O*Mvdaass15Lz0Z`s#@K4R!4=bj#M} znhCoB&>Le;p*S=u@w|PLI855EfKQ1M9UecAokyN0_{eeZ`hLyX=>WMlf?E?ovz)QD z_Kg0%crt&sWU>Q-y@%Q&T*v3A*5dJW^PkO6sn=#3v9{6<5bF+&-p~y@>zFU}HcCA} zt>Y2z1BT1r%Xdq6m-TiZ-QG5JU)`wy`nCY^l<>Dn=TQ1L8QggBNju)}0>Jyitqn1> z$A6A@*YiC?*38eoJP{o?$S>2}H}LFpOaDR-9sre*!l86PM8pSY<+ZVCgQ@eDo5rhS zw{GLJ>%dfFW)pKy&@_nEW@$ZO65G+x8gn2M3s%rd}+-&|aH1So5M>)M|2S;B>>ADgDwX z{=y1U`o!Zv(DLgu8f>e^rYGbgeQ{!3+R9EJAOrdx{Ed~eg^A!YE9r!cGUF5w*T^#Y zVLoU|3G^8I4O&Uj#S5B`WjbFTT-5Krgu+qEwBeD2N)0 zf;4DTo8J;17```@2v|B0QG~2y-{?0lHD~M%i z)KEvFDT&=)(euwn$&d)&+C`Pnh<87$8t*(PFu_htaoYujIaRAr;8<&;V&)K8 zyze$Yquor{TS=oGk@2~W7ocr67B0OO%4S+17PL;nVlRgKR&KknrS{Aj&m5r71!~XO zweze4OpFuGutEHdOD{_>b!aRv-XN}zd&{{b|2{VULv9VEFVk6doUB%^W-vNDVOTKH zl2bX7cDD&)OF`H1i)>)qo0BymSso^gu?ohd)&9EZLXBZ$v(?=d`7NU8U!>O?X&$XK z7}v%!()wJsCjWhN?GKAv!yUBp>@M2x3*lZ=4fJvV+2?21yL}b3Hh3J0dtYAgKF7Bl z40q*C7V)3buy%FkwN6iqbPmaQEsPw<%dSEBknFPmoFsA=SyB8qrWub`WB> zl_|Xg$F|zhmC`lI&?1JG@QTO|brBA@n6|rX=tfXBEI))TaRoxkH`YTjKq}aV2MB_u z8=#z6HP1qE&awik{v^ZAA~Z9bash zqNdyRw8(aKc+rEVdV`)WZrC*KXpbFy)k3gG%{KAlraf&j93YtNz^EY()E9R!UwQ+LSxW8+j*cI2YbLhUfnAYdNgFOV<*ata3I?ur zm3QlLT{%#DpIg>4(|Wxf3!V?np|^3*GwxIJu=ac3V&h)BkD3F043L7qL+S1FvoD=B zKuL5Qz&rLm)A0i$t@u5Z|6P8M0pon&H|+_-d*1Dfn-}?_9lw{~<%+MwEJhLVl7p%~ zpsKm7Vq8~js*YO)1UhHhc5BDaIw+6hXme#8CK(N|D&JW_ROwebPXq1tiWJ(7cB5Vc z-d9s}gBkW$arYb1U=~c503-yyF1Xn`86Zq?07Q0xi+h}P+;$+X!eFC$w1}z!&K7*@ zlMLG=(#gC<)6Sx2)pe7DNT+!WHc_c2wUa^;)qw1lud#2{2l8N~N&1Oo#7_@N z*j%=n*2mRBdEqz|2Oj&J<4d-!Yu$+r-$4IqtsB5<+5Fu~#IRAV`}C_di@F_qxqJGp z&Zq77vDNcn`8O>yuxK$#gkSxf!M*b_#cx(r?j-DzSF6|2>X`k2BIpe;Q)jiTbp;?= zRT70uS}OqH6$8B-Z6tMhzvzb(C!CZ9p-tTm&2mr^uyYaDgz~VCN^Ey4rsg9qJ1_EX1nIQ zU7FG+*$x1kR&%SLJ+8~?`(@{PiUD{~8US_-N_GE@qYR+i?UfoA)Im4fN6|t71Qer{ zU_0LdCxuoA^a-g61SXBGUsBNl-C#4E(N$^yDxgXg9|$$#00jW4Q$MOi19Vyl5xBr$ zUc=G{GqjG7Q?cvN*=Q=5Jnga$TQJnouIe_8r{+)FN#}W2@$0Y41n4$p)9pVuAiLS< z0;t)p?g}T-@+xo+3WMGrXp|k%9Rw{Od!t5Pdz}=$;u^B)$JA^wp*I$4ow{sDT#Fsx zMEu5Yv|aD$MJ1@R7Ow*59(OZ&RvsW7^oJ@A6v-C~s5@<&xT4+%ZD_Lboo(lX(qTej zTX>Smo(SeDOu_FXfKm26pG{hgN9=Z^Ib;Dk3)`*&>|vukU2AFAuLnoDq`@W)EiHe8 zE|9fnlbuHs&mazuvLCFBw(4uhLH+B^b+a*kIgTCU*2eoheiNNOe;%9W$?*<360I7K zrGJQSMBsaKZoLF4$~+^3k3WDUpahY5*2|di*t7-YS9FuO2~dHh7S?#W_r3wBiyz(D zDS9^CGT6;sVj&29wOp&eob$DJcUeC#n&Tbcce$JNgL~&bN(x6BJ`cLvHbma@eAnvf zl>8mz)&{_RZXXEW<(GG)xi8GA@92m$7DM9f86Ob`@5qyEN86hvOw45CDu7%2F*-+A z$3vXXE(Qdu9TqfgSJ$TMK;7vXtRTE=OwD9LHM`GeQx8#ab)`U3#3&4UxUT_bH7BN% zHY_s~+qNbH^iYy2$Zkb2yUqomjO|lQYf}ief+bKTLA%|+oN8oDpf+ha$;8z|bF+Gw zrwW75YxxwNq;wV(2QqqTih&wThKQ5>3J_Eg0d4|rfm=(sz{9s$gUegHOhn_egL)kR z`ywD|2Z7$T6a;Q0OX?DyQQO)bwa(i5WRSk(QBHbMO{~&vY??Ohs{%#x^bu_w5>$S! z?k=F<;1ZMGWXTG=0Z`o=%8|eT>INFKF7sL)Jm&5-=fP{)XF!}dw#k`h8t(wk7M9Zx z#Zl&nA7KHCIM8nyJWLMCzMc|_ronTwag_M<=9gh*#@_chEw9xM{)QlTwo4;Fu z#TOeB!p1um0C}j`r;R#@~f}@ba~^A*ZAyn|9JT{zgqZ>m&#jbb@cuDJHazbjw!cNZ7^W8f|E=GipRKAXN@OatYUY4UtVW77uH)dX@cb=s_$ zlG~3>I|$OJNyQd+sI8c$%m7N?`t1k!bfDI)X3I$5!flbN_Suzr4m1aws0X{0qB#55 z_W%oyTp7?~4#4a%Vopow+2sJFHu8tbJvNIYT=XKDemf#j-cJQY>3rRy6pd=&QH)pZ zns5eyCkMpfxw31v)1D?H_eK){Kh+|Eg_I(pSw?BxcCqIYKfrl3*-4s}4G^hSj^eOjAmrkYKT z+9Uw*$mPwm79ae~0M;fcCbu%f3CLSBQ0rYBm+zpm0z4ac-e@0TnS*D&Tl1uT1N7@+ zz%N<>Xa--E!SPlLF8%gS66ao5J8(H4sl@Bn)qU;jAgStwW)vYGxj33i|7nyQS>l`} z{!v|K1JTWJM)4H@dtE2X&z=@I2VrlVyyAN9MNS!eXMVr>)&I%EKl9K2GhhD6-}jkc zc=OfG8?Qd#vxjHhPE4~Qc|J7bJv^L=uC~t#*9p3pvnsqfKj-sF)SF56(=*!C`q}2^ zoZ2OuJb_?o@$lKyKhLIeoloOH>ylHP-4@LRueq%ehG|!#Zv&Z$aou3q%J}T6es}w+ zSHAJen{WQs7k>1A`t`5;>HqO>z5To6XQW-#mvAi*Boc3c7S=F@$n7c9df%s?6tx2hHlZ@XK~MGhxxl4el5OTP7dS)-)T>p zC%L!YdW(PI7k>Zwm%sd_vmgKQ&z%pCUV7>575VfR-}>y&|L*tSKKt4?p3--I@QfZ` zHao?y&~|)-uBJ)w@^YlBNhfl3sal2cs*To{)9=Rz z)l}Qofi>Pkld8aveG*eDg*ChWVPI4ApJE616lbcx*-ofXRv1y<0U35^}F|Gpf zzMI5;iok?eTx0K-6J_UsZ%TL*I~%d+49$J}8G0S(%hZ4K zU;ID6{4>A&XZ|}6UVG!e{bb;`E+^df-DlGp;)?jul*GfS8Mixsnx(}7ly;L{Pkn2x z9_ZCkBssKIjEsZJ&N&!cn%2@gH(|Gy$51$Ob_}<0CI=)=T;WIK`UdZ|M zlD3n6gWKPe3E5vVT|T2eMDmu&6umyCcoyvkx|$!#w1Nmx8urqTgY8lw0$Xa5uR=xJ zNnfBF-K!rs1p%7U!k9uv!OO?tRBe0P?YOHR*Pb7$_fLY`1(fkFW0U2xPo#TMDI71F zJ0#18o+<^%{PZ%{^c(}{EL72FMRGxU;42hfBCgf z{eef1&VO>VdHDHh^80)#n@>-}*c+Eu+egD&Kl)&N{m1G2`&abAW1+`SnLd14>FLF! zUYP*%<<&InOn=*HKyQOOPa5gX*0^kP)l?~yzh~3XcrpEaLgU2*uEz_ydOCf7c0t=G z7t=H8lR+IDur6+a;Mv7f+V)w&IL;<^Y)N<1SXInA1^2W%OliPvs0y;H0dom};e&s7 zgH1GpaWir8OSZvGgoB69Ig|{{$m6(1tFRd~t_?R(#|98x`g)!3L7V0I9evnPQ>9KI_K6fXAUVhjj*MBlTATt!zNn_}X3LxEcD*gdGNT zmP9s-C2kd~$Kdj=h7H-%3p$KY)?P!i-zQ|>QYM0ZZr5@f0F$H%lN7g4?aWcvMt=ba zjH7>Iizmc^N+D z&DIF7KEjemKtHmQSMMi&Sl3&K%<~RWqy11=qtSi=IK`d9q0Km91_RfyibGUrL6bds z?Eizm^e6uK*{5Is8{3gzc~TX)_A`oCiUE5Yw>oc=^Lb@|W z0YR(xSzU&VBjl@`ceR9RJo#P^8gDcI*o+}vO)Bv1R?0L)o{eXs`Fn-B<)U_9Y|}Ph zT}-3zhf`kPC3^7g1L8{@f_4$cXQ~>)bFl(cTgBkyU-x4No(uN)F#Zwcw$g0Avma(o zAi4jj-ptXpXvVkKg=Bj%4A-vmMs6j2Qsn-J#+}s0X;#CZEO(zZ&?gU82jZfY_?DgI z7f9kC_-}uFc4#_ zkyc>P4F1DT0J}C4+x4-G9}Qe!i;~ksq<%pYaQ>%R)R=?Y1d@CPGXN+7)y1@aHmfAC zNC93z8L+VV@S(;W;7`2=6#)UWW>7I=e9PX-ZnLQoKC+n7Dbp~74#^smac>Pa|rMz;bXO}w>sSRh7KA``hH^oU1 z(#22J!_iMBp#A=&OnCfs>t{q7aIQ7l0XZ<1w3}duZmT%x#&zoowrk&M!eXuiY+}0@ zsRq!sc)(%qbuyv+;pIzu>uR7+Z@)0DPYXo0b7s=@TY8y5G2!qaRyAY?h0}t_=^R$S zu`tyVwFOc|Tqz&g#dQa%^^Xy}`2Kjzb(ib&hutmPavD^2VwF#%`=~k4AGcc_#7=m> z%kd4K%aLLB`Q7Jk8t%^Aq-8FD{crr$ANeQ$$zS~aufO){&!0Vd^a~FkzWkL5Y<^~2 z`K2e*1aR?8rb%F+4=>Ipjq*UxuFfaWdQKlaJ)5-5)3XUcKYcdP#RRCY#$nP9bJrU7 z0e>2(`_|^!w0+nPhZ*If0nf3vTlcP}-xrhr2_%n?r@{Ye=S}nUIZU5L8jt#N0>~G1 zes(!+mtIWIA5T(ymtH-8La)E{9)0k=C-j4FUeflgX|Jb&dOUMYv>wD8?Z6QL%`ky= zeXo{4*lzre!!3nJ2V~U%EI75$wxJm~h-8PfPR<}VBL{vmY*(9OT!bR7A#_lfw&w9W z>nt8IPHONMBj6oEQ6D~u$$erZc*RjI|NpD0F4}{o=_W*Z)|fL7-ej6$8Jd0`8xfE zg<$_Y7I)y3q7Jnl{n8mAJufdM^u%2z_!VaWigCDw)I?-+wCf-5*@iW#gn(m4C48t5L3W(Nz^G_rymBy;}Bai-WLm zB(d-%y?n?m;XoFx-PHiu1$3P4v+4aM{YcY#eE51WwPwJVuFp`qLO{h^L4{~mA3gUJ zBDMC=+ba4#Ss!GRl?k@*!VQG$>&aR^qaQI;BpY|HvWfb+w%XY}BF(pZ-#)1>g2KD@l74_}%--+W54y`ZZPrhUoxJ|LdJ z{$>KwYVOSPTMYb;&DQW}n&nLbJJX;%H1NIc6Hzye)sR1fA374b4QaL1F%&b`CUF2u z4}lrDA#r}AUAYmnIyA1ZQUP#f;LaJkJ+Ep_p_Qj`fqO~%-tpi7oYItRC{8h%?I{-l z_t~0d1s|K|t;00f{U$^+B`Ba35C=eV;I47tas_}{<+$QP4pI%2&8>cj(+;(5r^Yv& z4|a;^M+EqV-iX$Jj?H%XhPXkI|#n zSctd@#opGc-6Co?fr3im;90pP)egiK5wk|3N@9)UiZ04D);)Smo5!zH&0|1z7Bz6Q zKTAAjrC6C{`pqnA&akK0X>--aosEHL?fadU)2nhzSU9%bL71P6m47V9h7PXnNttc0 z?W)V0zPnE@&;Q3_i607g3V=QZh<%)nPkb(Wo*x5JdFA`APdYJgYwy<5*_X#t>g<#_ zX3u{9=YRa{fAPQim%jYDAN%|tdFj#1fA;LbOJCX2=F{&ytL4Kb{OC#he17pBJ(|Gud6|H6eUIw)L%O(nLfi9aboSPd z(B}20boC?Oqx$rHx_tjb;twbAIcd-9_N<@k@A}6+PwPRWX7nE>+k|n;pILxtz^WP; zE1*trpMh9xRu!`AsBO6Knr{W%op8W|{}#+XUMm_W7tlL|W~TB0#?m3MKEZaI&$iuf z;H!t>j2Ud=EXBE?u(F^j#FoF?>;=do=q+&|jR_~_6~M-gZVDfXaILx0AUMjLwA*1W zORa4v&>edD8hEY-A~(aP=O0{bBJ3s@FgL!lf?)Q1w1tmeI->|d4|I-h6$J-FwWJE@ zR3k^Y+|FcUa%c6Y?Sm~(Z07rvJ1;Xp3SeLo=HSw!%@@;zcc2U0BSAyJ?gm?2QaP0s zZAa6D={uMV1aQWoFI?hc(y>CuLa)iGU9a7vn4S+N6AV>Y1X$yX`rvdUCj9m$!l8)l zrYDOjtA}outSyYj{(2-p>luAR8zbQ&pAt~jETfQP?Y0ydoX7zVJ6Ss+!fukv*y9wM zgXcr8`>_jDVFr)vg4DG0LV77l8~Yl^m~1?p{+>OX*7NUO(L3)xqh}vHq047aU1{16 zkD5l^NjfdR28^*7@Pb3QSk%##9e8H1b6l0({|eb+C>D7QC07Owr0Rt#CEd`7A*xzZ z*5)8v^!KQGh_Tp0Ol*-?tz4OYWc@SCGCA6d*8ET-W_uMzyCk} z&;Gz4{KJ3b&%FG~>%Sty*_WSPl~><=TFSTIeVN{V_mxRI@-jW0G|poKn$rsZoSJPW zopT%C?{bIf-{mwrG@}~ZYG79s*i-@iQ0!2gWq<&33~(6Q1DNZ>bK%%V zY!l%$@opMO;YpJ`0qdrrem1^Nk1szvy?r``dUwj}dsCS2Ph0=*keol9X1Av_46o4e z=tC+mO#u7JyHp=fpA(oqn>6Uu=p8)~)f~&HWDjECA zq1&VGZ@1mvbG2La^nf4{w74+S)NdBFi$U_iIu%Uy?RfA{3jl*_vdMs2mT1X{nY@wM z%#Q1;65n0sxw8PFGmx zJYL%!$OEK7#{GB74JUp#nkdDtfGz}?e4$n>{sx|n032nNELQImxR{0^4LhR% z83RC(fhZJAq&m>^xSL<)sxQazU1K^g-bwatxGt5Qu0s?9+HK9J@*bXoE z9X6Az_dk=TSTdpuomjl2Z3&||AVUl=+JW>)1ZtV}^UxTVdDw1AM!F_Do#jh~O23^E zBJ=070<(c?i7}n4XB*>O`&9FJ$eYZwX4W{gJ?f5!o_x?~y4`0e4BAqxUsFnX4yKjg zKMZb(Iq+=l`45%5uN02E27+tgbUE1V3%mAt2(T{w>`Q-F+Hp#{|IyF>=#T!zmtOgizx;H|uYUW3fxrLw5q<0XpQ3l(dzHp#59vYab|~nP zf#qk@--i>fZ06`LCbja@>F>h+^fo~pfRO|)5*bZQJ2lf{2HSHvRZ^BI9n~?qcG@N~E0@9C( z-}sQO-h79~55Gt9{`C9t6vy~*3a8dE8klYe*ZQD8jnMr@HWoEWRgFq843_`Vc7sg| zG`+8Em#|<;&w+|XDu;7V)Cod6d8yj zfI~7~q-j$PbQyXvFh-`-R6o_t@C6hHe;Ia%!)l4lKx!|k0V)-V%3C#0+HSb$0%qu% zXAmUjFdJ4-0$su0bO1jw?SJ1fFu-rb1Zz_@^&)W26>O;1%Wm#tONYhjJ<-Vx>=1yO zJ`MZE=Bu}b8X9PDlWTS0t@sFSqB!_aYDQCO4w?r@1XXPZB0~cW%`ZE6CG*1^6{-{p z@=?pdv$ePOq5`}a5EgGsmWF9H3odA}_qay1x8+WyF)h7ay^ORWqF4x!*SDCR>ZTPR zqQ)r}e0r4*#uNwPvl~K;I%0rc&l2kaw~<`ax^LbPx`rp2!H}T&3-=8`PdtAG`Hikw z==&bCB=q7S_8lZpEy5vjG5Omr3q}twJDY-{8hu6rP$Nz7nL56$9bLepP_d*&6H`Hv zS7tf%Q1J8to@qg0vPOa7g`#chSZ8YqzZG$2_q_L8+vl*=1rrv^s<3GLqjbG4Wl=*v zjE?s_`=OG_i>QI-BmA5Sly~{h0~)WqI~2#-??Vkpc7)v(Z_eMYeDdP=T0A#(voihp zKmV2Uzwtl%Z~d{)fAJ^&tL5y$pSh6o=5M|8pnU5GuhF-@^Cn$hJemOHKrfSOdm3o| zzyR}yS3)0L$fRwqleSsS&M9x%uIDDxBD+ZEJBGcsk!S&Gcp(@HZ2fKA+0*@}wyKu?aZ;fXeXQsf^#8^7ziA37X0~yhP>v z4Wd`yqs#ZdN0;xuPyFPZ%GD$4nww%g+6K~lx_Z$B7ro688db(ZpaYMMfeAZ=*3Gev ze(klmm4c>8Hx4x^D8jaUakQ$M*RF+kv_u5!3dOHTR?}4MyaO_AeleV6lWGZGr2{Vj zx%M5``k~%1X?4&(*hH<9R|B@$T%KDU*+i3PX!IR6%mMwfmGOS>rJ+!h5!x$tQl z6F*t}7JMd-mamA8jB%|kb$opN?b1D_Ofv}u7pi%Ka6Ls zUT-`c6Octe*jRf-(h|2zirM70ZTFr>LcO!S-}r*3$7AaUU0~YI4YT({rXdERYT%gT zpr`{&169~H(4R~I-spGOEpm$;tC7bdlIhN;gMqkxb> zAeWEr>U1z_h}7$;Q>V0>fSnNKuqI;*9_RAbL_sOC9P{_h1M~4&*YrU_vMj-uj%WCy zSsx{higx{I&=yQvPFf!$a3`TlvmsZR<&u#O*#d#}pdB0UU)zubAIU*B5n%_Y_fwo} zKpI1rnTaqC5NZ?g@!Nr|u9zv)hX|Tsr-IpBpxOps_iBXJZb*m|N=N^2Gn4(XjU#rj zChS04404(0-F@}=!{YYgt{+Bu+*=9yCBV7K&p$Q=WYclqTb;#u>XhorSI zw{`N?Tg3nTU;F1@{R@BYt3UsRFZ}qgmf_{EesFd6*4y8E`0#h%d4s+?{S6b)JR7-N zIcQXj_olyhFDB4DjX{qm(EPO7YilPgReJE?4cb0>n;w7vZMt~-TSQOV!9u3926kAvyhG6gWlhW1G~OLvH_&GXUzEZD zD-oMcx#%|?lAgNn+*038Z9ws?Q$3X8u~FdMZbWR)raW)@K|clY9aK*KRc1v^x|NOc zsaX&A0o)BXi4Gk=pZSEQV4t04p@2UfD6{HmpuX@KWlG1uB@U~J#6i3&#&gw)66^(W z3QEKs7n&Gku(pB&k1a3FjA4E0iXJvOOfn#EBA{`E#u1CJ7Ws!Ce1F{%)oMhXx|xu=ARW9=tUqLbc^T>1R#NOy495&AE);2THdO_2Y}W% zJDd*kx&3WCH{f45?I0MqjH|e9fysI?O$N&ipbwn1z!0<$ftu6#>(RkOrcxa^=>ozI zX_8)Iq=nP5qS#`g|E{BzGi;c*-JpE{A00R< zprjZEeQ`-z7nmNgbESz|9TFu@oV`m(pS%?jHliryozj>t^Cg9PHm$HG)AGBeumS^4 zw?zAq^xXQCD@q0=$>3@D?vK*GP>we4jlN7Q8t|n0{DiwTjIw-wav!+Q?nML8cMbjy z#eJx<59LSbW_dm}4BztojonZF!cPu=^I!V!{`AlO;h+DjXAfWgi%-UfKlzRCyx0|1VnaWA-w(HSE$Lvk zO9$1n76r8}cP*{B3c4sjE_Q818H}%6`r$b40J`Wk)pmHRY&Hg>2i07+8wsc1o6Wg? z?|}M&0q-`^Xq?4)sRrbG*)4qr=U3&^768Iw! z@q*rY=R5Suqp#5$ul~p+rw5&O(d)zb#O$pYTGMo2UEP|dJKC07?jVXA1NEjqU9jOA zdA&6cwv+)qfHF1)Y`_I4B0rpnw7bSQQ$$QVUO42dOHTk3J1E$<+tV&V@~a0bjizFq zwm7gi?X=m|t|BS_6#4DDCOE`Jl(*l}o>0yTztYT8Ce3%x)6?E|#THw|PTMv5Leab0 zr!j`<{r8_tT37Ci!rmT@01r7}w}jECaA;uc4J&{u8I;5qv{CY^r9`I!BX~KNrG?P*32I>n3mH2r5}YHl)|>=jqBa@_62d|2f>pC?yUE4_ z@`I`UyakVQw#)CiHTOI*+Y9erG%FmrSMGAh=3xnrcjbQ&LilkaygRondC4=X)sm!DjXbUBX3Rg{Pxb2CxWV&QjKEdcn%jb+3ETgWD@0KExR z^YsE#ddEI;hpl967d!Vc=5yC}=vZxB;s&=ir30Vsq;(%@0@L*+x}?ufAo@%6pnh!{ zfWJA-HSg1-Hy_c135Y#<9(&H2lKjgs#<(%aSfyv zMlk7gJ&mQM2Qdv?vYG(vT-P3#*;^fL0&9zd9!Kq9UAl=uXw;QDL9l|+%4G|I{?Ayu z*02B9>(jKD4tR=hH8+iD+g0DxOZx89CzP-#sh!}_!f2c7H8I8a^vS#QjoBH~- zCcU;943rvqXwra518^dvLJ3T#~Ifx5aJw z6XRS|KBtSbm+0LO-uHB&5zfs(Gj?)Ml5@L&5%O^8MKSfzM%tvaa z43WoT)V5APQH{KKUFw3fsV?-$gKF(@9%UT2AH}@<#(5WRO(tuNp8xg#+rRv$zW9Y7`_=96>aTq52ah)2c>68- z;N92gLE|@1GdjcB_ZVbkmj4w_!mY^ya8 zY}MV)1wIlX#b(+61_N43tf#vit^9rxPc>8(<gw(@S^|c6J_a8;&ow>(9YX(;z{ zvT9Fw{U!CetAJPhs*wVI#)g5t?bWYY*$~lmhDf$Y zzA-R>L!j4W-VOMO(L+}`XQ2QMctsr-lp)mll>FMUH7RNK>;yz~c&*S;$=vw|#VAvn z#Z)qXKMk-De2>ALZ8ID^GpK5Wz?GO@V!)bTsPrKqP#LJrU5(UlWDhG{qNg0x5m1_C z3z6RA*>?cIjvfks5v`CvTAI8#RTO;8CM3MkM{_NKpixq@f%zlpWQnEFK-e_wkVknM8^C(rLULct^c-t7A~!&ux?z8V1f%>>U@ z2+jtS3Eo^Vy7|60vY6hgww;t@Xx5AwUocqzSqef|a=e0NNjzDHIloG&%AW16F>`2OgRj9ey zmOlwtEmZ-R+|{+Hk&757z`1UKt2o&X6fo&i`lz^%Vrr*?X7jz)w)A(h-=znvh0yB$ z%h*{A2l5>_uk_g8GU&k+#G3H6Yf?>^%KJKcTw?$@pRL z8ty{CzSOxh$pV7#EX$hNk|c{`)Kt4`tgFyK9mCxM$w0pFjhaZrSg&seJSQ~hi^iZ0 zj<>K}=IXA4a=NA{brWqNZSXL&7 z;F;%>)=lAmts4nc9T%1Ot8DmaoSw97h3XI^#0{ z(>1-VuA_)%6U}V<8&0V6H20l!&vE5AVxN?Lir|0wfBoP6!nFq;`Q>MBUw+~@zVtAT zx39wG_T6D)GSBZ1@Z282%X<}GJ7~apHS%d)7Uf-Os#O-=NBW(~_Ub3IvT@q-%cf{+ zaE(O!PIEO$}vJ_ft!sePm%y+2Vwd?stsNn$ChKm<|7Z&A9a2Xfyu8+*%wHw#rwcqGK5`rNSoGQj*x2e5fWk+G z&yfLi&#tg)G}yD1Fr+H7i4$MyH6R3_Cdxutb1Gxxx|K{0;^NTugYL>A**0v-M{#pe zK<&<){pV0YX_v+;?R*i9S4ZS%d5rt(4?z@a!zlS3*<+_DP*?(_Ofdq?QKu6ny;~nl z?K6(#vguN@bB36{6SadZ=6Vk)DC_sOb;1J;+78~=tre`xII^$yP-5+JyRtPV=&~la z+diO@qg#J^o^{hw8}!AJww0hX0K8E_5?^?jI31%Z!bvtwYtk$r1QR&z=hpk8Jr$3h z_Y6N9Pq4!l=6->1lS|rX3HwD|+vt0_LHQ$T1-1|3bdEef;0%o*ZHzQ!AZuhvKYFUS zY7wb2$CRvO=H6k?q0J>ulorN~Y=4LOcYlHq?5K6;YurrP0DJJ@WQdIiS`&o+NCCZX ziEQsmHOLmpH_Nsm=|3(*BgL74hY|GeVagY z6Tspz??bp3d>_|7I^mhk`;M#Yq;ev7{(&F(#O$y9^}qP!M?U)Dzpx%2{-6AdFJHg( z>1j?K=woRy9k2Tl*ll%fONTtpdnQye2R$FrS}FhmA-h!o4F} zE104KP|g4#evzDIW3_Hzul>E(eWc3+aOuLsusi!*D6=^%77I@E_WCnlg1av~qo)km z%M29vzIQFPoLmT;+`n#2@d#5uod$L*xnz({s_l~v2J3s(l$o`N{M{IkvinoBlB!h2 zTS+@hatOlOPH$5UAO~x4)7vu|gs7R~V0ow-CloDi2SVN9fR(u&G`1VpD?LPKEg+yY z5KY}8uK~loj=Z=kd4q>3A`eQD0)-fOHJYyN^*)bM<=$@fohG z4zAa7?+V<{xwosL&{8pMRAh+x&7IzQ8}_RN3-aPDU;zp2y3*-+kO$<{ON|4VR|dA` z%HL1ME2D09`r=(HosDKG(M2`ty6X@0vFsW^Ly>e1CsQtgt_Bo=#H9#(&r^cXV#S> zdF*}DlLkkyGwD81{EvkP%PlS!>{q(Z4q7#z&Z#Kg{8Knlw`$r^T$s#`!1bb9GRWKm zN1r?y#~2gqQ#H%xXoe&7wjyF`$TxL4NuYewmeT_06T#RqG!_>L%)1`y!M&TfANuv`>$Vyi|Yc*wP>AR zxJ&TtogP@VmP1e6m7r$+tOsmFx7?_?u}v_*D#{7VBp{z9Ye0YpiS!2#{18SrxF*8_ zO)8jQvXZi;ZPJ%&P6@Doxb^%l)sneQ6F870`_)Z}0w<B4g7x{sp)!v0Zi}A zL4^(stp8op+RvC*O%=Ns2w?63i0s3y9q8^Q<9Y?Cz3bUfx{FHfpjCsGWTw`vL99AI zqG1%!z=~}UlXB0W&eoVw1LJyM8aSP4)>;Bk2bjuqH)?+^hjiBtGw|2II!hN!M^P>yi6|mc68eU+$tNC*t1fS)z6M5f6=`d}NedgOB29EVvp@5u#E zanCn=c{}+)(<$z~UvPO+c_W~;m$MKdZh6kGp9I3;6!o82e)^|>?81NiKm7}T?8-ad z`!~Pv^7Rk=-cygl<@LZ;(ia01?UvY+!R0I`|90bGMz3H>_KvGjbk zNNx=bdmeg+Ek&86OOxP2iR_nRc^=4wp+|lzH`c(C0gbtK#=VvlMRun$`(YqRNIU=% z&w!;Rv*8zpPH9?9>{xK2XozT{Ea6mY-N$#1EU;H&(?kzV3w=0)Tgw?74AN|gL9I8jjJ{1f$rMs z!_^9Qcjn+{B=cMwI3B!hL8+j1k^(|W^d_*a)AfqAqzqn1=|cyL;>I*`57rF0i=Psw z?v)IhB^=Mp{gT7FhxiR-5P(c)3MtNx0@=h~8 zvr`Ix!-rQ_3BbgjGrK#?ko8{2yaQ>jbfr%h-$aD7cg@fh1k%81Tl9$Pa0&blit@ChuNaZCUrjp zoj>=HR!a^l@aAS0rnGN@k_AF8bj-a+J@ZXhz8ZO;@AtX0)OA1g<0-D6_I;;$KOR%( zHiA6MxE)2%o7eFZpLpN!KmVKm{-58u{McXkS6_MO<2PTv1`jliRnM;R!hV4--2!;2 zr=>ewiBGWB;AXL!Omd)5Mimogc4UTbIEn8SCN>(g2h-fDX0mIqisY#!b%W@2jjR+9 zEo9aAfL_mOmF!eEQHm4^EMo;$6UhjCC<6;$^>O55N;uc7q-FC%0vuG6Xeli17Fx)m zjs+$?2tjfONdvCq)ir(d#i9v%HPd!?=Ej$oON7_TN8rlt4qPa|1veg9%ll>scc1w( ztnc267dWupoZ=jq)hiy;JsBkTvI(XQfLq;mPu=pKe2>+=sd1|t_lwj ztf~^Ew6{kAtQ5>5paxY6+!SC)43gzu0mbC+kf+F>kDSl~;g)=-v_y~m2Jsy?I9t;= zsoj9TlR!-MAJuVM`CJ$+t^9AbBLKm4Luz@FNrCEG`yy0h>tP9@&RMxSu16CBX1u0r!UE#du8zqB{TqcWR)+%4+yN`h<2IvW*R!@ckt2&B+PI@+fKJHzcb>`=B<9UMP z!98vHOvk*_%is7Lzx2S*|KgweclXO<|Nd|M{=-)fZ(hco2A*#oB7EgefoJbjc=_%K zhwD+zV4 zU4S(6_1??RzUQ8zwk^2+yTu$-UC>GrZ4$tDWe zcCBu_E5KVkQ#Y=khCd7F>zd>qtk&mtHXq<#kdBFVY5MM_rDb=Aew|~NME}~aR|Rh? zFz5@eZOw`2M^O$DIV0+ei8{HQLs@8`w{f^BNI#^fVdVb#uLKKAt*xo>i=4sM8)jalX zLk}2iN`S>M>gkZfg#0ko01@ftU{Vf@!7%OX!;>5mYHhO(vsud2%^YC+0@^GSU{d8= z&hT>vn8b!m9#Z^k#kJE#M;0Yhd3ekyeK8Nla6m={km2YI6K%3uzqoJNZ;j-oehj=L zU#+It*s7b6eXp^W84_gJfSLwfHuaeh(kViPXW9EZ#~%*tr4Tt zV|44AAvr*%8Bo6=0d!`>$6=35znggEC`Nn|bN+@aUkw+IJSlIdx{fP&pWmHSwzZ$$ zgnLgcf8tO4!0ylg;?Mkt`}pXe{`KE`*EQJN<#?PI4+=be2jS`46>jgZ;ILNL{N-a} zN!81I3^8a!)K}KhxW&=g3Y-BP8i>DY)6q5HI4WrFO1*xd$h!MZGH6*bNE!R_z$$#% zhm=BFC_#V5jREYWH;2=xLYXCR7a9Z0wzX<3y02_M>8~McSTrCzYpUvpBx)ZB0VnkFO&Pg5VUG;dS>Z6MY_BtUEk3Isp|*bct)-@qHN^>S>=!Clry#+;ev z6(BFMUi&*{jrMx7>p?9ZbKbwfiiDCo+{yY}vy^bUG^8}$=HG2|wbs#yK9g(I6l`=j zrJEs4)Ft}gywM5&(ilA(H#-VN)AL!bF3?Q?x5+lgqs}jYMGly@)>fS9)1|#@Ff)+$ zAiY=aHttX%Yqw<`h_%XSBDNdq{VeU_di3--zEi%Feh+CZMt$0jSQh}eT(`d#J3hZ? z=nRD&K$*_H9P@7UB7vKzADl+{m&RJyr1Q%SAhuDAfHQ!5LCKM&KUwq%SxHer2AGOn zqehCYi)SCQfNiC4bMKIg2;f1gIanEVZxC}Q(cow5^(5kLLc zruphcxR;-L<_(;@ZnBfWO)nYaySmXsp*;_G(J0};Vh{Ls*^=_1NosK{W%kv;8eglj z4O`#|_vCxe3%vdEK;KVYC)H0!+;^Ji?x*c1J$KUg_e%ET>pHF;e%F8gpZ|w9{^Xzf z@xSuyoyULa_nvxWzO$S|$Er`=9pFp18;HKMZXhmcd4WPirqL7Gp`tc}Yvt||Ya(f= zs-_EDGZUM^x(Cs9pUq|xUo}LsUN>{?*nax&CYTG3ssSRltQGZ5<^w=b1)G6o|E=N% zh56+n6Mzo_{y=qtC_r6+bz#5M!}iv_VbSpP9CjKIOUHe_;3+`9fMuP&`y#}NY@sn`*>MmUOytoA}j?cpNU4+{= zA8kNx4*jG(KM+9W#9#mcBoLBaL5j?g0SL*vj4IKRC-NEd8c?sZ#FRymYe39{94-Oyd zV~ed_i}}k?&|YH{!g3 z-ioYJcA^gVt*#`n(@*Wha9`ERbCQV@ENh3yPf%=dHzMuN>O@8jAXS2vU z>ihdCXC+>~_kaDr{c8{X@z4JF-+1QkyMO)*UwU+YaV$;H6nJJ2;fps3UQ(Bhk<2#} zCa)nf4@N52W0vg72tIi*`+mFD@BMb@3h;yhI&x*Bxi&uqxu+<)bT)7RnoXFk@(e@F3!1StyhFB{X2476PX+JlCwIcehrn_7DX zte9*pE=)6A;lD9MUEH7+AN}-f*|R`9tnR66DDF zxLP~XsoVjjP~f?R1xn3SbS8tL=0hM z?@PrL-VtLGKZ3`A$48~#74@G-H!EQ09-X7@jcNLLM57!F(dGe5d-%GaxK6c zWi#DV@>!oYk(!h3W~a>Rv_a2NiSSGhJb@rkGPe{ax8i=;yr19*MnUbQ);8u+sD9HR ziWal)3|Q`CPQT`5B67}n4{rIMwmf%Uw0ym3pf@<}iPuk4&I+)%UElnioi|S+=uM)9 zW7>0;g8%XV;#aQ!*k^z8SDxQ{{O7;;)H`;2in_f9(!O*D;VZX@{hj-1g2r?vE2Wb2 zFK4yMMMD_6Xyw?1&A~*?;MzdS3TLc&K5S}-1+HCt5gxel2k`o+FTQN^`F$&JiRo*flLYlEBMM+IRJ zDuqB&^R#q9gpO%+NKK=-!CpOG7DV6>m6||M_`xDXK5;Zc!z82~)z}N_q}{Oy_1+ZK zN$e7I06X&v@3^o7Pv2=**)0Rubw{ZO%u%6hoO-b7r8dFcXC8KTm5!{57|AM#sYv5yz&ST=LWllpFgF>W)1<-P zpc)+q3IMC^GHvK|ikGn1v%< zZ2Gn+bMtx$cO_K!xlGwL{Z6m*K=M9NX6~@lRZ$O9L8Ubfiseh<=Pdgq87HYlHuvl^ zUK%BruS*|j-1tne9j|Po*R$MvUf`_<&O1ZC+unWJXX%7{PWt}D zw*2M4{Igen?&p8%m!H1*?mzqGuROYYv3>LE{s2$kMfm;KE8ITlxt;a!6{iolhc48)YK^VCmUr!=T3uUxLF!@ku^7 z0NBHi!tT`qm)aoTeU;z~&%O-rx&FJbT0IZ@w;pe|&3R1v@!@=WSO4j0^W2?5gqyt& zG5ZgLX#7!vget&9!Rbe!he}QXv}%F9FGEOkm%A!dL21U^X0!0sF&6!gy_b?!8Nf7I z3}Xzi+27XCQoMQD{h=%7AA8sPV0rUtxcl0d;pwUb+x=$;IphXY037IMqt{t)zXJ8n zEm+>Y39ID_CJrb`d+&Az!xwpU(@I36JIr7(Xw&hobp+J}Z~bxChhQ@@4(8K21rYwI z;Z#U~Hen*Pxz_ec*Xo3uO`n}Q+0+cgqv;6-B|x8A?l(_{GXhn!(E%LDA_V7&kv8|J z{!LRrw+%b8F9o0U2*exW!Mq6;IGrGObt>8d^!XB`Y@N|SLGjBHu;py0q_uwPGMP*c zIT_-Mi8n7!A5w1=$X}suB5XruiiWC(;be4HPf$5a)ou zWVyn~?~aMat&c^ku%#OtOVHL$DhJOB!UGZcs*Rtx&$W$@7^)(*9p#w{IGH)=(_CQqn_VZ&uQCmn)jUbUE99jtn0Yz zXDMDsKbrgB{`Y?Fr=Gs~fj|HJa}Qp<+`hSaApXvr-}zt(<2d0|$`kv)vV%8mP<3!2 zf3y2=?ZSyf+uU>0HZZqp9A~d-`BtlD_HMu#scD;0f&mAV2>t%Mn^ZZ+rU5u8Dj3j( z7piMSDT%3~xOen26xAM@dPc6sgkS^}k=C0qmI#{kLEK~IX*q18yG6>;xO42sRrm2) z!`;~chqY;>#{w6dpx){J+Qo7xROadASwaLP_rHs~9jfa>wcr+M2cKfrRiGr-``8~e zfph>Lg4va({qEzs*DVGw!3~@Zt_Y_GVITlo^1r?5-i9YlZAjb9b*B^$x)Lx z8O6s26ihKFbwFsqOiJ-w$~smkK*TiJ003HTB9hA*ORXx;XBvH+C^Fk&r*JBOjz5bC7=q0&G}CUF6{7R-u)I&`h@6zKP) z?+E6E5vJ2H*l5t9o4^n7h&DGvLq-MC+Hv!L^^diO`CD{G=XLx#Gqc z5~!9t)10~TsD@Zyc5o;M!W5Fkdcpy!O{;{l0(hcwPC)tYxF-;ktH%!}QsHz$iz=Pi{F90H~pajz(zBU%PI z1?IU+5-14o=D`tS#X*{P`J2?;0nPQJSY6r{wJyq{sB*-(#eLVPl8h_>JOfH}8P)y5 zkg)kar%il*fA1roFkZpa= z&7c4IpSoGU^*?*|>33Y&Y5e5n2A-d4n&&@weS|y9p5;QLwas3?GEW zwYC{4{|fe-iTYB*#pUv=0stC_9_t{d*QrLPl(}qn`YCxdQ+J0B%+{{`_xKzY7&1=c zFBr$A>k+vm!CR)uHlpB-6p`oN79pi$jkZBh0SL*Ty}wtj3zCImR1B0dh@b%$P#P#( zHa{|_a-yDs@f0vrRQt}U3Ht`4hhMG5TEI|aw$`*?0`6HbCz?P_^(9qfSb=rk?0u%W zvw79glliFuPUJa-1{%z10Khfb8ehOTNNENYl;l%8?YMApmocrV>e2F8Bt$|JWNdwe z1OZ7c83qy)`O-?$ z*m3jDW4bE8zi6Zww=|FuuL7JOnhlnq=UVCkI_6HK3!mWaUrs}7o8>s1l1Z92uAP@H z{_?18S z@1S>VgJ5uU!&fZySo!Lx&t4RCDcKH-OISgk6iNe)7(rE8rVaBd8Aujg%E z?Kj?gr-A0frrldIvz!lI+uYN|N$zD9P~8zxLA7LR2!pnPC-XfN*{jF(+9eG#bb)T8 zTIF7k4rdUcFvh#7zy&nWNx@w{sH6Bl=n5Co`WWO_(eCweST|v_S`yqIn?|~U=*z8- zyG`ra4{RBD9M^gXjR8~vg~;|=1MF2Zi-@2ZRYN%MKDxUXrPU-p)=PK-cCQ`)-Mqtx zV(ct>CXv^nu6LUqEHvtUl9+B1zKnjNC zLpTad*@bTYK;O$74RfC&#W$gKpU{?pU|or(2S?Wk>tqvne=26Fo>-~%domAXdxNxb zMolx=w*5UbhiP8*J?^8fRX7l@LRUhk;-}BuBm&GFMYZYcx<1L=pXGow`pGA8HI8k6 zH-sV>15`qKU{inu?~Hks1E6&7)Cwolswan14X{f}qZmypw)x@j076SG*Thpx4yvko zgO*%3qIaewC_w|##0Z8YU$zo9ND5-Do~eKW+qsm=;pdVquYv+~)td9NHr}M!Hgvrr z*&#zwR|nl)V{bN%;*{B+9KM=qIMOJc>G~#FY?gcv9dR8tz9%>@rz&qJ0DZp&kNJ*{ zxsLZyCvExuBm&-iX4|{7#M}H#$F$MEyK&=2`M>;E|HY^84&VO2{K_A^^T`WM+t!ce z{^Cu9FWp?Tdqs7%iJC9@Y0;upWmuu8lA{^;7~ZaZ?P=&5x$M)TnZ|p*)k9bx-fY&s zeFlvkv(07-oKb)?XPE#ITH>Dz!pH#J2buw8LFd)t1So-e;bZC^a@uor&0J^=a56A% z`UXmZSA{qll$I-510i@p5Huye?HX?e$(4^N>DuV-r1E;}+fEbCms@{#3o)P_n--;O ztV1YB9UN9} z`r0^im+dg^8hwy?o5~ZzR^;?&^9JF=4DucORuWD$=bj0LCBK4Z)X9MWATrL#76Ee~ zabIQ2%?mO|4nws)p3y@QnFo7<^)1$iuNkXTwcmD(x5PuBZ$xaPOZsl!Ebzv%{oP{% zcyLOO5Y^2? z>4BX+csWK8v(16KB^dpo)LlvUMxbd76@bpVdF^-rvMC1;ey?$j#ybvFv)n6Kr=^vV zvt{D&&y0uV1CscA%cec$geTkB={jRSrXhh{1)VNKQ{F6z<)=1!*!lIdr3 z`hesEhAxR-dPjXnARQ{wB%GaRdaBHd3b%?hKEzW2aobGt&@1V_w(%q*&p zv>l?-o*77upK`|lU)3~rc%RoZX4ov7xWewIjeEA$eH<;H7cHj&&3^*nM1asxkt&Ulb98oLSoJV76N+mFh`@)R^ptdmja=@mYSX^nX_oi9Fz;GtBF<0R zP5!KT?#HWkkXa;ERM7}`1H=O+u*^(U;Vq@0G8d3G3gMQ)g2n-%K2K_dHw|*t;ZZOU z^?+*KfCW8TIwrE{Y%_U+e8;9xa=|5|Rz-`BqKzsnxTpz1;?#XzK=1bKARQ1kZE{bY zG*&s4t*Ulb`e>V#qFP%ub%TJXc>{NKae?bzuloTvD_HJ)sP(2n>BGCQm^E$xg=MSz zWmw(1$eAR%>KPTx_W9sreEGc%EV2aSV`9Kltf`tENrD&opp0Hq1qUStlz^r_il`e8 zIZ~NCl@$);^JE%U6NZ+GutLiHjNlqon^blSC><1xzHvbh)&vEL zlK~y&)G@}-RZz-I(jJllDHGHx%$XK-H;HN{mRDG25>x|l_(q2YRcaI8Wa%JpmK+hK z(=FAX#x|{p;Ln-{UYa4#nTF2XXTmo(HVsCslGd1*)?M)i6K5tJPTNrHWMH+$;`10{ zRQ+Tzo<&myVytCrw{)zk*4qj?P~)*C8)La60u&w6#_zz+I=6zxT=QCG{w*n>B_-?h zziMrq7j3)d^Tr|NLhqk#L!dC5)Ep(vjj?3 z6qFV)j4Z>TP<6BeuOQsBgzT#AVg$VoN@zxKvg?CD?lsRAm{#5#ZASJf58mqbM3RQO zCV!*jR;($Mn&FrolxBUjbZwez2|01=Js2Jr>Nm|nwj6LSdCYmf2UO}U9E6BkFUkP6 zx$kizhUi&oMDVpK$I1R}IAPoO+wQ|t+_$aH^KwKv4S+swGEY-Z`|PQ~;t}8D8Ll5! z*GbQ9)|j2>vqJdtozgVV6>jdW z8HmtCY^H!BQ0Aqe%6QYNALree&k`h1@St{I=R<&|bspAtS(`IcKs+1fEL?_R24)6h z08QY5f9w*%n&>j^9ERcs(IAO3Rx?jJ7*60qhspV-Yn;IaIrmk86^f&92xcVp!xS`b z`FvSW4iUHp1QQKjQLs_9@6uvEj2D(mg4cTh+q|%U^lsO}k0OZHbp+Fe*gQn05Xl6> zvdpyV&{N!XJ@;<=e3kDzXmuRmx5J$7z^rLgcXxVPz}FhUeh%vXwb4C-(1Zj(aFaa4pR~X}GW?BIW1*Z9?Yw~|Bq1{QY7Y?L=9DvBsd&fmnq?#b6 zKa_eLSW~!-p8ZZ_oJ8QSm8@t;usT!yh zA?$w2_n<~l5CdR`*-Y*G(oq{LOzRH4>*NYJadi<;YloExz)$1Ltr{R7njzpFbzPIM zeoQMcHXgdx+;1Hw_t`-EW=9~MjytI<2|&1q`NDw!I*G~U-I$IO=)9w@$#^vGE!JP% z(8V#$0l>hw6MdD=VjgM)i5b1{;Uz^5aVkzfsFoPbFK<&uv6*IT2D>iJbS}60%$_7; zx>W*)wwdcb&@?J^RSak2W#HN3=&I3+1>_aeP|InKKK?~~p=mT4(0Ln5ESFl7)Upb3 z>gwU6r4|kl{H?|`h+OCu!V)FHe^u!&0+XfGEwGR8E3k>X(^Hh(PLvOz^piN6p*rBU zIFEi93L4>9^FZA3q-tXSb@BzPG)jDKE_{s&p5eP~_ikbm+PHqy{paP3<*Sj#F0Y&8 z?mJD{R#zsF`>ppZ&*VOBd+$;GJ!w(oI*+Sk^8KIw)1O)VTYvFC`iW;>f8yuM;bO7Z z!1L303w*hO=UWFW2G5Za44k2vKmf-T!gOk5IIG4~M?`kn=&l3%jS(Im-U4cx=b%gWCeIl-M^=YH^Eiuk2iydmgPPnF4kEG!w3vEjgbEOf1rjL(bWSYDf&n8< zz_SVdu#1{MuDgS{>xZ^W1*4d|1LSgjX3i|2Dc?vp1KO1;ZM2jAx?H`p?#Gn3dlupk zzUW%{W)&E#m|0_@T}SF}6y1#=PJL_7E*5ec9!U`6;Q_&|`M0%x@53AqVc1=@d3mjY z=9i(a9_AAuhaO0%ZVhE%kqmNFt(h1^QV4)EfdPuOM)$|&!&tZ}qk@p?z$OHu2{auK zt*E=_u*V_aR3Hw(AU~~7Kso5d8n_X+A3NLt983y$Bn4tl&1Kbf?-PLw@Zj3DWLEaX@*PE zrd2QNZ_S;YKqT3&Q8@rPh#)Y~mrd1nk|%1QANyA)00C(ku?0k*HrEsiCA43&pgw!H z=o)5Rlhz+(K4Z<)9U@uVb*?E}o502d9jx^>4Q{p3sZ(EZ1JMp@iBv0!5UxVx{bI`+ zZ`ep_uAA-~WwiC$cBSAhW2tz?4(X&E_1qsH(A^W@Z1HAEZX7nUCW+gtL2{Ju#K5tB zo#K^twvgox5(8m+PU^*73tX z^OwHoxw{|z%gfuBFE<+{JbSlmo(W#vTe<6i30V;|bjYeARjgCvtX5G3nIk$DaPX43#UbDfUN`FroVW7 z)zjTU`zh=((1Go0y>4UNpB$}a(l*P{is0=PIbGnw&aP;RyYOr6++V*7ZqvtMG48>o z*%EdyuV4kQ0o_@&Ie)0#+Ycdc!nDo>tQ0Y3vuguy7S@2OK}F0NGyvkL>=+YLHyBb$ z@7iCz&4j-BjvK&n?Vy4*1MQfFB*mN?N{D$x*Te~ew_rChSyw-C0-Vl7L#tU|$^g?8 zTl&tf#p+tQL9~$_V6J;0(FkCvyeyTK?=UiHfo(t_(HS@>tQ4R^w93|BxfZS~K}_bt zAmoT{9WgC3KZ$BFAV_qL)-lMw$2JyVfG4NoQ>%}3&s=V-4h1Z>xwSC>(11Cc5IaoB zsYUa%hkt+GjCP;!NL6N_H0rkBVi5s5FajxdB0Th9R2tEcqGljO8dnO+45PfnN zk+_fSooWe@XVF-Oc2eDobWAMsNf~Cd_r3ok@BD>7`?(K6v)K)^IafEXSN`Y{dPv&b zN&8N_@cixla#=XX*Le!wtb)0_XSm6quY{e52UqkJO-5n91xuF(nK z=W^V=wB>t(>7qF8!g#~wGoSg)&baf5KevD9#z%GBOM1Uq=1agO16`>nvaNRS{ymLey66-AYp zG(p0UFSvG^ zb6=o9PE%#~BavGQgwWgnrX1_nJ76vvc!g6@?iyk%DNr&{j(v{4RkA>=5|5hzhb+7S zTsxZP+eSXUI9)M!DB6&e2EgqCL0}w;CI-Pp-Du;ga}NL(+?d-63Sxy^)2c>{4Fhei zzo6-2CxG&Mbb~^h5*#O=ZNHsI1`|J!H5VIfPlbr~OwsR)15N>RL9v43XhQdpfS3%K zj*9|y$8!oMFI~EJ?R&rPNB)C%zxVN9L`{S($w}B`)i;#H8H}pfCC0}0UT>Bp+yi*! zh1Ca|9vb%B^(zm|V7@?@2$@W7upwM1ezCQOd8)AzN&~31(PS~n&Hi0dfrDCSj9r4n z8(5AC-%w4)nLCO95X5S;DZ=jBZueYR4lk%}Y{IU7Z{s;f*&)&ZC*pFUV&1SDQ@ch&rgqIq4 zUXFIEmoZ946KXCsV5Dq?0z9v=pC;Hf&jZ|9?ExL$hM|Gy4*a^?=zwzu&9h;~+UCOG zxhQDX(*spAWZH*&M0GRTH`gYdL@k z-(N5dHQJnn(B-xjbrLjCLD4{qdKdX>W0ZtANxCRI0WrG|$y{KXUV9FlRt3Bb>bG23 zFyh8RVGc$qTp9SpNuH?cb&3*8-#=5I-+ll^*IZJWP)+_lIW1Ag&NXt@=R~sr;J{V7 zSEj&CH<)O313+E~3dwZ};`BtMfY@YhO8_F%w7iCVUGbd`5)5%6Py*J|eF&xTwRYhI zixm&qgXoL3C7_eP-wE627QL~)*#}BE3FAHky9)ZlH(cn3r?pJmY>%VqH)<>nSW@JE%r9XPM6T9(?FU1;rG z_Cu|jmG9;O!qYDhyzhxiuzO($01wk4vXKKF-l5n$S|BJm&+rWqOtBf}ne}*tEW)hc zRoz2^7A%`aADbSq=*dcKd|X4^QvuC{XBaKl;FFmLPk6hnQA^L!>*1i_3UgNZX0BJ z6}~mJk!1I04dq60ttln`ou)us$Z>L&(sTBZN0yWM{t1vC6-0Nja%JcVAVe$N)6K2< zkOS*qLN1;uz+2I@(ESjU-6n9a@;%)r`qtrx;bM6SE-qFuySQxH>ARepdsb(hm4o98X{LLS_ZzPZ=5@;Wfgg>_qtZDjkwgVqTfC%bEpC;0=zzz1`pcu?IcuJcHDOk}*#>UJ{`l<~_vm&Ja zTjyargC!Z^_NCPS58MwCXJ?s>UcD7<#1HwI0nB~2L`druiX>0|#>k&X$VbXj61sRY5N#GMJzx4F$@Y?<>;(}5kFAeYxfokh@BVY%kbP~MU zEKIMzKEm@0g7<##TGGhIpl^;bknIDjk1%0se-$fakhH}>P)w2ytmX06KIYuv5u>1a z<+U{>@oOp8anko>fErby(?{x$%O{)j{`?9e_{HWz+UQoB6bs5-e~o zUF-hNYhrI%Se6~wYhvYY1J7moI?P8o6s5ath`%$#Xa*pI0_Q<@?5LsBXuJ~?AZbrB zn8gG}Pz7KXtyw@@oq2Ser%y%<6ffObtd@~0Z7r+UgB0^T*xc{aPTGT&b*y>W? zb@&+A_u_xtt67evjWNKbw(92dK>!a*;3khq)&gxr!E?4Q6jzSj-3ttMSIf(AFg^^g z)o+2F;V#S;doa7uuJ7Gy+USeoi>{jAt~#3aJf~I6psY*gwuyF!)bCeXo%0dsUuah% zR6UPRq))TMH!uOBs4eE+0_1|!B|uDlXFX#||8@vqsLt+b8UQ>{)<+L4>r3C%^xva{ z1AS;F&L6DRt>Q;nk{d|?K1#GyVnd(~otYFV(W8L55cHVAm)-6C1Mi;%^p(vD_21$x zLkD%S&Lr>>9Edx3QFF*dbL%x58VpT1Y^+C{G0=2$`MUzP`BGZ&$0;EP$y#E8p|VEP zMu75$*MNMvmn&L}t=oB>`l#w0CmxeWu2cGe65z?-8(r8*b^w!kk`w#{h=HCm%A1kY z-Q{Wpzx@Xt^4rH8DsNCCLve(@lrcx7=zKVv+|k!$#m$=bzl=Ngig`J0y((8TdHwlo%+{&*+yn3g%XB z+;i0Zo7ZWhuH)`KZFwWlo|pS5rv=amZ(VsS>+WSL5l;7hI_A66JpV?^k#%0betmf2 zQ-9{O2Z!(e6PM~Rf8nr!=R43$fRa5UKv!h4Fc9DhE|LRMRt-$8HDIv8X4pTx3+3?j zroB9r6m8i3c4s{(Ml)*^K5|l9%#CH20VF1E zEhJa_mVXr=Mm*fCqtV1F&<^6we%4&yWAg|NaBB`ICR)2N|x~JxiR!9<`stJ)q?+D0L~P3bub2Jy5V|o;zTc z%p1jhp0nvz{GGvl|D3l`92e{pfdWd=at@~=XA{WXqUE;AG%vGOLKA=mVA^MSrvQKe zp5Ow$SV}tuMyMT`47Li-NXwOT9OwGvRs+ZE|E&&zsNkq;QTZ5f{#-?{wz1!9mdSm! zrY>d!?966zjIIMR1V}lTZLIa|2IzTXcNROavvUy^J6GEEYw+6ogRnomyH$7zb}sEe zoxj{(wGX5EBlfoNAq(u%At#shlgUVJsus0wQTwPlTzTX)f9~k6F~~wjvOJ;x*gc+I zqSyf~s(A#__)+9jlm0>$ z=o_c%{7&XI+_4mTyJFcg7}>c#CJ%Vo85^m|HOo7!pqc+1?OR{NV9QPUh8)bJx$RZ4 z!3RkVd_mg7U|C$-?AUtdbNn8bK-4S}N4aqLl8DA`Ewu3)j`;j$mA9(i^KwLaJNQ5w zZ@?4oJBkQTdhWP-@R&9o^-R9D3C8h+_u>)nqAm5@bN_e!$zQqj@VkHDFJ8urpIA3u z{K7uKbGND-)9pbQCiL_;Q%J&(MANZcuh?y4)!jClCh}n116;lav&Q5*kLkX)3kA;o zIOw8>a&S-u1#lLB$<){sL>Ss*%aaVMCEV<~KCj#q)#uhl6$xN)4I7~gW7iAYFjmtSQY{=%#=<*W7EL?c_jGlP=oHTUA{nG>}VuWGllf5AYDpz9cCHkDh###nhV*rmrN((o6Q1-Wpn^5o?S8%ahORN zt|CU@PIXADAh9H}Horru6SMhT=azFxD`;g6Rt=Y#$Pyt!-0GI<^w1av>n0dM=0SnH zXrb4#kz-#a7xw@ZC;p++8OXi-s-pLhQIQ-=pUl<{MljL3{#`IAJaVI3U7?+iU_X)r zJzUETuEEB{Dln}Xd!^h3U^dC) zs=2@Drj1=81{*&N&ngs}w+$%!8`mYTW68|3(r0DICg}&)GTK-)m=;`N0Bt?*?p$aa z;!7~zIaJz3kEQb%0gUP6uRZM?F<(Hnx9|pqvem>)Efl{!ZHG>oOCIC91G_abMy=}J zgcb^GE?>cT1!ybHXk|8cZgtU#tudhxESTc`HaF@^ZS!uE%yT2B#ORaOFFQ(J=((0E zCk(PYEFdl^(ihwGRkd!(X2}9#$uj&U32|gO%{}Mk8?d}xG|*`|Z7snekG@7n)NvN# z##7uwTkfS3+OT;a9P#Y2ZTaA*f9yloE?ocNIpXfk6~c>m32q;bobOqfDkT{!AVE(t zWk$yNZoAtC^7Wc_ zr1G}{9W()mVE)q9TU1Sx#D*x-Re_s@XoA`sBSrQq*L+s85g-T398j(r6;q*OG=eK| zC6<9PNI`dIYM0v zP@~EhEOeX3xoM#nJC|Xf9);WRUZDA9*tvKC%I-lEe5(LFe0;5$=!;8cn)ow@pLCyR z&Lxha{j7#sl+=qJjVu~^(=Mxzrv?A$c+1e4UnBYk&&FP8l-%WktpG)I{FJza`qBX`^N6DK zs~aYZqbSLppVC}q4Kya+V;h6mfL5Oi3m}wvpjfkp%t@?mU{)*kRh0WjuO0ngxBgh0 zH07O9&oNo-5Z;>dR@Hl6-lFn$0MJ(OjQ7w9-=9?9{eo?LgWnq$*eqE+cTf3_@Bgt2 zkG=ale&te`zqh+?bnWv?``zz(tqfe4IwAN$3x;!8y!K2Rqx>w}l|xQd*EHA5n=o7N z!MwX@u+Q_nfw_4<9DoA{vzvyWD5siV(Kwh!%0;bcCn>u;fNG*m^eB*)Ws zY{pH9g+X32dz00Jkp0@o{&C@l3Vs8Ch$}|~L6QpaJe!m>e~9thfVvMf)JYp{MA(gk z$EE5RhyYkNCDrZrb4Z*p19s;F18LEef{v67#!yN~9M$UdP0r3@w}I%(FmIq4hX>%b z`XnqD4>z^;C75064jgybWNdB)avEC|^Dz&P2>kvd?h$J6?nhhK5K`;z?!f_q{7Kso z>_ec7jpM-7%wUMeD@F0^ICZc+42k4hDad4a5Y{0^FF%KQvr+ zexjMcjktJ(%;ath*i7RnW@iG=$_wU-6q~i6K_Sfq6wy|+`reu!ESTjd)^{Ze8V^_@ zcOp43G*=Tp3`G6uV`EK;u^FgLKh{L0Z8DNUG%Vx@EN}E=T-6ewnN7&wVL&ccqpfe{ zl-?p6E*$MUz29iqz^RS3jYEZGi5Vvfg&0lwuPRL!rqy1douH`zuE@G6N>dZMGaQ(% z$(T`Ueibda^CV|*N+}9iOJ>T0(nYw_;TX^RI4HknE7~vw2G_M(IlW1hG2*O3ahOZE zD#bXn{s1703|(62e#~O!v4L>GA=mVHb=t^Xowm(#JMa7lq17Ut*Tr}m=f)897yicHGQ(b$hW2LI8o>zLYxX`rF zml}w^0tfYBxK*EMTIi;kzOd6&+qc-o!;azQ=gmjBn!heE8W1h>8Vn9Y+DM=ZHQD$S z-H40da(*nW{tES*du8Z%`HGSL!%09 z+XUH(nBom1n0c;}jfY9OZ+W!GnB=$Q5=1EEU9CJ}*?Ej-cs5j!B@1fP z_Y`Y`iHZPM;Gj}libe~TQ`=l;v@Hm_R;Db@!LHY%f7?ciz}K{|D+TA~!x{~#ItHXP zDQ}SK&@DVh8&=qVA7YbdzTHK^rG=AK-;7X|D~iIH!Uz2?+JIao&(-p(IE2n z_l!Iq0|1bCKw!yWZ8pcs<9J<<0gypA88tSpzP14&D;F~0mW#SEA+=z(Yir$97k$=G zp2ZyJApzzE$Q3Kr?(EL4(<`FDNZf`sQwaZ|T4j?RZeh^+b*wvBE|g9>b##+5Q;`C5 zRZ5hU102*r{>v5@m z&ka1c--oMyNXl)PLy!J048-Q$?|Be60yD_k;V4+Z(?)@VOBcxwF}<_K7}d-N35Xa2 z6NYKb&d@43Z_o9MFxTJqoe35b{u2f*E(PGA(^z@<1;&Ju3yZuNv1^p;Fjcx;G1;vw z9m|x2y!~3Q$SV;BMe`cBeGu$d0nt12!kTC~fB<2VtqCz{x$HMK0NqpDU51_Au8DpC zURr$!_Gj+~Y@ZibSIw+^(CSuSV51XK0fdf#6{HJ@LdY6N^374#ROceVtU8DWhaUo8 zY-2>#=4?84pfn&FK8mp-1JuP61enXfST#t@H(%OHs-A&?v=69jqZkNNmlFonYY+}N z!)P;EfMN~bX&|3X-<0}_4!TA|0diSp8$;uos+w-L0Ne~6n>J7_oDXXvahn^hOp!>q z;>g@u+bu(bZ$~NIQ!FqnKyLB1UGjzxY(8x2FtsUYK6;fd=z8~2#3_q3`UamzaN0AH zF#4DFps&k1d5;`TZ_|U`GSw{WCQf*nZ73@E27RKnMgeN-vP6pb6kG8fMF)e-AD`XT zs;^TCxYl%esNY*`f%-Qy>?DX$W1vY>L0~ka>}<-a64T>>D(N939Q(8Qc!JHj`l0(G z^~z(6eJz2lZqT4~IZB(IwajwhsMwSWc8q%BV_|%haW^*2^b{6M_hSK_G~38|rW_B3 z2~9UxWI*xFX%7~(+~C?Y=$rh}Xv8*)I-bHO`c$S9dCtpu*;3w4E*!^|BrT4;=glbh z$bc>1Z)*>o@Jzms;B5?X@MqtNSA?*P~}HAY~{n@Cif%1OkfI zJ>y1KyftQiP@4vNeF$ZB2Zr{1H;?xNQaH~u2M*3S@3RO?^&3Ssi4r7V!Q`vyT~X1a z;J}nMB5;FA`2eHU6;bg>A(+W!Xcng7!#1rO();yqZf^!z-~!!Tja^Y=?@YD%BOb7p z-h=@giv6ABm2EmiE~y`A4PRlA!y>TOYl6cD<_<=|cZ*rqLKg_Fymb}*nqBAj_s!3I z2X+=0VK(ch6+QsB=m}WQufwdT!k%vg$pMufBhDIu&d?n@I5b|{2t*&W6U0@Cpnfoi5{2UjA&Rr8fuTjBIyfkaSa zlSn|!Xol*1OPTmFdv+HHS_-qg-4pkNZbW=otgi}gjZQX8N#K$u{}Na}Ty#L8-=hzZ z5`{xR2CSpFW5a1`)9>%&vdo0zgyPgsw0+t!Y`xgV2#?INx zlu>F!Y<$cwJq?lQSBYE;Z@|BQ>c)FM!d;Fk1e*=#E@beKAkPecr`c)rPq4s}s{Dch z8mQ8NjHZQ_*-AtD+8XPCgIo1Y#y_eC#96F^vrmjcw5c{|XVwkMH#iNH_!}pKsRK4b znhmk~sELJ~k=bW!g1Vz{J+gVWSIhC=qqb+@cNYkYj=S*HG`8TBE7vGV2wRZOp!6=Y zU>X|s9kz}Ks&3j}ARXsqCCNfVnvqCWr0^uRcbQ-GeApBP=jFUi%3BGb^SU_g{U_CR zT9BHbIZL69-^bnaM$1v{o3!DhpZ)2}4_tlZCwHMN_8M<`X^-H}!CFmD0qDfv6kU5` z|BW3y_n*c%mau4=&c-OZ-*Y`=pXXVbx8E~y*-(vNoGys21r*Ie_8ipayY_c#dN$2e z2orQ>P8duw?l(c80E;iuM95~)K_Jll{A$k*u;$=EPG3hN=txtEk)?*K;j1iWX-d)b1~jx& zDzK^pX&d99zk5eEz_15qQNG2-+5Fo_*9aSJu!avHG=oeO3dYl`&_Hbg2U3pA+!ErA z@%~CZws}aD&eFe3guZDYvugzeIS6?wtqE2q2RPx*qD|p@wSH8WitIw;VOJD=#pp+d zeDaFo^kN`xlj;MQk$6O#hrk?YL+W1B$K5Jwi1=P#TLlQOnKSuBB5JKQ{C!2HG zmGeQ?_M; z)t$N?-16D4J@n8+_od^mkWsRIlUlpUio$(m&> zO*-oW7SW^qgR`aqRc4>9;r2eb=Q|V3av^d|gA3v?39C3weF%+IdVdnQ5h-pJQo>@Q zu?;_J^0}J!+q7kpqj|NK{Loz<>@1Kq(IsV#@VUh>#for~tSO78g3f@R|Xx4@u}u~wnr%-%_CCGb~+_Y>1=a!+=ILSJqDeKJr%r<4yN z2^Q?Roi%k@;ed+%ys#59mHMe~CdZjMRu?SZV!sDH5X3biF8oxB8j=XW!G>lhpm6=L z`i&WSK4}AP1g`DrZLjytLKfm1!#qLD0FLcI1tyA6@k26b1DsRz%>%)}M76yxNKo#j zdnVi6G(h@xI3mnjUoH;f4?Wfa4pth~?!K&`e^Y7~!ff8P(7SD(FTvsL3fx@33m(~h z1m>$dFuS-9T3z=MhLmp`8~}76dgbb6`0nrd4!C&nB7E+1 zUx25+@@#wON;OgfatT8ao1_fvKna{;fKvDUR2x9bv|;yJbicVl^0O6u{K@9rk5^Z- z?MOk931nFZ`{vWd^^`O=ih(+Xv6N-G&9BUj)4uiBKJz^qT&Z*)V6DWMBlwZeuH8d$ zpvPmNOQ>kSjMjBHA%cC?uT)+ho3IJ%LPs_>KKIb7^?||-$?{q|wd*|R&&HY(u7Nxx z23T$V2p&q{+}j%3T7p=#nCMMflHD}yUF3Z#-q43lYo>=Z1G>gHh|h4f&mSm{vU&2&EX7&_sXv%oeD8%KUchI@ zEikITSIz!lYlrkKzD&kUyc}QNY5?s#^errS#_QX@%k6wK+q{XF z0HzY_xcA}X@B7YAU0z)JbpP=BssZS|?)zLfm{9d!CWr+DR6d<>&9;2IzlZW0(hQ(8c}ybL@q=lTjq%!8*mSv&NFB1E8Gs466%2zO zvlDkoT^zZtjJt!+FCV2BKFDM319IqNlFuhQxeh`#klG9E-&vEDkTg z-ts!UQlErJ7O%k0wL`djyMbt0w6~eSp37!P1-=Lz@gEK-6RrUL--jQ$0sq#Y`Pbol zzWbwa=Wd0Me*DAm|NOuI8vN$xe}_}u3HBIb(o}lNT#4_e1y+HNAq0xrm@)L6+~Dwii&MZJOMV8}wl{nYEAlvCMr+X!8Smlm4p~z zJMNvwp1e1*F6=(7I|bNYd6p z(q^gjVdhzqa3^x@^H_S|Ai`>S7jQgiGGm1KOw!Wz{J8_pJ<~=}KxQWoiogs1(xQCG zgtTj%OGNB5ANNcTsBQu1fF=UVq}y(lv?ys8z&27S@gjM!6r4&8A+$-qgBs$Kwr*dt zCfEe}2Fq4Z!-h>0REX+(Zg@dOx(b}ATLDhdgn6n(q}-mg35es@iTzBwE61Vo`<(${ zF%15m+}9Ws#R9pu*mrB_HPUJ>T<5c;d|mgXiF)^ldo0Hr(D>t94A~ugeZ<7=>J7DY?uCjw%;4-=6_rUHW(X`XpQrYES?s_U;f@bQ8Q z1l`9OeQjF*0d48Y*3R9!>(r&dTn0Q@4%)pzlO?Snk2%PIF7tpy6gE61^`DzY@#C?} znuFVO04GcvLlpm+yGylkSM*nNZg^l@Q6L+JEi0hE|5MwB)#itU|LY{g+HfPHM08v*(TN#}`du8ffaSTJZzJnA^6 zvkAJgq^J^rl-Nm9dJ27)G>|g!c-*x4}!#~nLcHie$_lSc5`6eRwPc;_?sYL+Ex(U_8 zrVU&*Ca~X3_J>XDT*hX`Z}+k525X<^?7PN3&;9TY9id{5zJh!E7Jt?wN24k=>LEpE6ke< zN$n?Z0rwxwZW^Gj0@@@6l&Rq$U=Y&yhaaoG)_`efEMu%D|F~f8pE`K%zR?w2jbOz?65ZkBMpQwVr-z=9JLV9S2NhRJfCVJO zmilnx*|KpzZPxRVk9=n5;YUCAgFA@3-DBfc1JHXb^>e1AT}>5N3hi%?itemn-89UH z4LH>916$YP=giqQ1{N4`TAK+FW0>aRAi4!nBK7eV^%ce4B^I&%kW*_{Rsxo zzxnwusOc9)P*-r_8b^Qkw`%0RrC2k!A2a|$HhemklIOXg2*5C}gM(Dmakja(3|A5q z1PYXOLb}g(o9{B9Vj>+&ObZn6p+pU?H4T^a&9wAs2L^sLFi`+6h>F;ipv_Ua{y1Qp zFG&|RV{h32q=PUG)I0~It~|N`v2BD!!)-1;>h@t?B04DUQ=0wC(dfE3*zNyTO72OB z>Q-g0H0ItT0B6w8QqLHQ=Ei%dZQ{pUFTr^CWq_=`CtW?shd1*zj&-Q!3PH(l7(B?& zHZsy?&7c5!^tSuN7WLtkcXT#1FtAdWFWph~Kt6tCNDCPusoRxbb+RF`Fp+y>7$BwS ziqnpcArq=$X-R~$6!yHM$y``YJNvqyM_APBxyF%gII zGj-#rnIEZ3io$Aj?<%nlv<;QD(bBL`B!F*dAhjI;A^{G8>qa15n~c9jVUHSASV~%m zRsqI%@(D@Gd%M+c1m!h_$zI}QbS(;@ft{YpHi|lkiy~{G+e$lk;W#fRl#>8-mK*m| zPWwE*33Z&NguK1?I>5>A!6WL~_8e{eok91uHhDeY{?oto#A1HqM~Ak~@2oq3?xzUW zP#)-wqcUw&4OYL-*&KSdjmB6GSZlctv!;D+VwR8V?(P8Q!ZENL#{h2lRaHmUGFKI_ zemYnM|9iB^MP*d3Dsk|cdJRcm%^i?Km%sZ-f{#1~$CNjNhaFXiGG7I7hhu>+zF6U( ze-Yqcex<_G4N$*+7u@e$BK$Sz%Z?HU#~!@#C`srtfGY_|ry=UsdJrccNe()&5YLab z&mX{r_OsK23fn)ueQO2(4v$p1DJQ?l-~EW}MbknrmlqoF-i5vOJK*r*d*ITg7XUBc zZUl9WpJ$VA+gMdQjSd1RS$XK;hv47-b3YBA`s7C%a2{cKxP-fR4&Y$_kT+eD^00yY zW=eSIp=9(xsl zoqj!EtJSBJ><5JK{Fo_O)ulsmAIJWg$9pEg1{H*5f9H_bG@)(t4Y!N|>_!3L8xn-% zo2r|H;$~*)%i^KO;qqtyBFsPanKq{b94oGkOKfr-f(Zu+i^;}!m_8~ULjD^!K+Tkl zy?*|j@eROst|n6gH-G=ju>be|53uvaUu}S9^wUgx@tn>&i2)Rg95Q5pUca|z*y>^# zV<2420xuQ_hY$l@3XGb$3kUO$MF*q(%#1-#sgu7EG$K~rl5`NT#2y5~GS`pj=40Xe z#*t~&Qm+XeGc@gMwYyUkIgVY{FNU_cC@<1P$u&*$BrHba)-F?*JQ88$NyW>nK`?u%q@st`4AAG;cpWvG74-Dr-(NG~i4aJ;t%fEbNQq>lQVCoyAM4I{PW|VF7VW= z2%mq7;2(aj!WW*`ktfaHTp&)MD;U}^Q6j4bP23c0zI=ZHrqrKmtvn!0(ad^{aHwt^ z^PY*WZG2dR4Pr9oS}9`}(SCQj=`K253*8S^Ssm`fO?n)zUH$^>T)GX*o6Gim8~pC- zpf*&AdlaG3U3z-6AA0CI{K7B%1bpPf?}vkfbpy|<2A=oeu>CG}s0pGAz|tD}z}3s} zz2Emq21=j%_1{)^5Zma1gI>t4ExJ+5E39gsXBi*qWR=uXJn-xW;wEZvBqw7SY5K%B zw24&J&JF^xot{}9uewIjd}O6f8MKiC5q|sd~Tm{UQiXq0@Oott0V{$8!GwnGj&|+zr z)-_PiU6urCwqJJO3%KT8g%jjSzV#gaH2Jq!w!LvSE&2g)Nq%Uk=dOTa2IFU2il+g8+hIWJz`4r%O80-{HO z+oP`I5#P}n?mg>0XL;@(-k86<{=^f*?(U7x&T)3JpHBDsKEYuR9>kE84%SffziN$R z?I#Y7Z0cP$CULM_!fd_Qb1gJ*h?2IhXWr-l+5$fiH2?;{Qn!gfG^Pa;mkr~i!dz3x zk~y{kcv>s-2{!Ym3t14R_vm$kowsQs#oal;2OlAL|2qJF=wk!?*Z&IPpZqq#?>bM=ty6iJJy;8XyI0u9n5%g6Jzyk^LFlp}S z(q2vqAao6=O4NW$Nq(!oE-)M5^Kw^>`#tXf?n4*S^T$5ew4L*&sc%+}W#BYhX9W{L zoyN==c1Xa%=m^x!1@1}fhzY#deOVJ-GFC(g;E&dBfNfo+O#rUF} z@doTJU*%l$s15ZhjCWW)W$F%)xrV!>q|Tv&X>p^le8yG=_nGTFl=YX{^+P*gPDQS* zL!EFb7&M-hnaL!y8dtpELegU~q|4?*|so^;(uz%ae78>MYRjmc17 z)%)b+tu7&;n}njSIvr%r6m$xOYhNu0TsNSyEX_AsmK~)|;D$Wl z)me3J$SerzyG>~j%v^##8a{{U*9<6|ywvgXu^4sy)s08{T@rs%zi5K}=l5>v(Sml0ZZEr-LL2vOqIQY#?(g znMr@%^H9$k0dMQl0~{~!5d8FaB7Fac3;dt|KNWuMH+w**Y9rNmu=gv{i)~D5^4lOq zB2(yS0!VKM0dXB8EJyL#?rt1CBge80*kR8Fo>b4aVNqnE0>AKl&*ux6FBc6&Uxsn_ zaadgbJ;24GXkAHCZ4H*Xi+v{xJow;s_}BmV55u>8^n?2&9l&q@*6)GSEMkBP^*t0Yl>Os@eQ3?R?5W-q+}K7> za#^QkWY&Q+wyae|(DY`>t%!#m*=@2b%FNH7-ANqdpi``gWm|^^U~IzzzHuUl>k0mX z2P!ELXVd*`$K3&zOF7bg8^>^FK@cEVKTLrpOh2bJm@p_f0Pzg~L~qjbw8{B&%wn%> z8g~P{)9>~gcvt(;e21M8KXpB*1d2G4AIK97%4Xf@-xMSRiMi;7OEdXgohi z<-D9wPO_gPytUc{kR+&yna!8hTayxJ%C_LB!c_^E&6`)0WFVBfLd?di-`6>{1( z0|3luYxV2hM7?SNsN;cE&;8u9uKEds zkd#2;3c^Q`FXr&z^=t6akA0xMf95yJ_^3(Mk76$&5H*dI`2bW4-c-~iKFTWSYZ~L! z5SMzSCfxStI-8*j+4PlNDkf7=Y$o`$atlu;9wGdwlXdkeoc3}WWU(euU z>uK+F9PGO^ER*~BnLcjShbiv2F`3k1fsK?>q=nX(abqHD!(8%w`fuYoq21tBq#Kg{ z!`88$T60~MZ$avSJ&(RAKmgZNZ^AE3{qa%8@O+jb%_}Z|RvcN9fA_zNYnuf(>*&#R zj?s7|sGi$gw7NwHgoFln55bM5TkRUWriYx60#F0+*)7XnUosCdz6)xN9MzYn+W4s- zwE2Hm;kh!I5MZ~IjUkftR&^t4yuGg@U#g%1odCALouQ6?FIn)r4x-IZNs?FkK)x<=V}`n%vhDM7UN*|t-T`%! zJHGK}P9pmId0&3^jXb}tczbVr+xP73Tzub;G>lXlZid?jlF!+FWx<#dIY=|9IyS)E zT?=~fVAC(Q&;9JdHJcbZvmS~Z)y=<6b3yexqt6F=xwio-YlK@{u`e{`1k(U3~pQkm}=f*^C3OQ5OxaS9A4?YA?$UI zb<89`vdnR(g|3C}vvz?&^pLc2@qP}j(i*#LoXut&OgL*Gx@YEidG8^(@#y>E;)6re zuI!8Ou2lst!HowWgrE7@pMg()$G5@3!2#U8y$5$1cBKB$z-xv?#aFQ>HY{+kAN(*~`ouj`aH zfo;bt9?rD zr@>KT9c?l&^geB{9@@B)z&Iq(5WswT^EO6Fo7@fY9t=xfH*Nt##tbkTgcy9p!S_^8 zZyN<03(|K-#{x&$YjRsz*X$ct<1^%SnY+Qb*-ntdOCtDG{MJiqw~w7CE0OPNsz3a$ zW!?JPx2vuIDIh_A8!kS)8RZMWhy1*pmq|GZKz}s|2v4}a`8}O* z|4D7ejlb~>_aAo;p3sJ)-ep`5KlbULde`o7`D2~YbpPkQwHUJ~|2R)XH{EyUxnf|` z{bqYWQWfnp00ZWE(?oXPXVl;&Vn8q-N}Q@%=$;q4 z3!Ux@y-*h%J7mCt7e<;Xt8UiaIA%NTxf$GD?!s+&6drx&!!TG1Ee@tBuzPVAe)LCw z1U~q|o~rHu4)*q8e{T<#4G8yuJ<}{swWO+Hr07Q%!aYOB!TyqE^qpIGn;Cyk!F4r! z8Z^lDRra&CjaS}eD16ob0=W9Y3hDcTm@+%af1;sF0u;sU%mRK;i7u*C2P1a0an5OM zY4iM@h@Oj?(!%tA6+oH>7Q8+P1UQk;n4X`qC`vsFPJfL zzc!nfS`yk?=Lf+p9Iy5H=sZYhL$F&NtMe_}BpT6D9;ehW*-)l_D6n^0cOHeVc+D)A zp`*?tmK3+p-^bPr%{NXM0Gq;vhsVBJ9}Rfc7%0scBN|(y8{lhIX{Xj0BT8fGt`ayv z-coxNll$W*ECRWwkOTz^Q!j=xt$kV>sX7DYzUjQ0JJdbLeS)tU8M=N$oeGn@gGg>aVscr_JM9&ezW4Q_yaJ6!=_a7xJ9c6y%BR)M zO5yi6qJQgod2`EKrGds%-bbgX=cIdbU3fxW+n#x|P~1_V`Bd+^e*JoR=$+s8EejkT zUu*ih{Z-v?5g-Mvx|i0kx<+uN{?AM5hlCt70KI0uDM|V@*Rv{~-OTAO9m;^5+kp#f z_uaFrNt+~0IW$S`A4#dRuKh4@DED680l0brzHUnoe(aj)PrP>`x+Z`ElMr^`$bX~9 zu-WXE5}Nyj12|y5yYuX?WL()jqPuaZ2FQWBz88}klQU#AE%dAb=-IGV0Cy1O9jx&_V?J++|>$}0xL}a0*EWSb%<8C ze?HhhV9?#Kz4X#+@Q;7(pTKgpY<-XXRy$*-ml=xFopQ_!xU3*MN@FaxRgqjgm|kQ| zBfAMrHk(LkAR)kzfv*V<0(1>_%?;K&DCIx4&6vCqeedAuChacMG%E|NMptFBaHXAt zxEx8!G}6H;T94Fc+G+NGMo5+lX=_n4glqza7&BXE+9i8NFWYU(`z6qJP(JO@yr`;N zU7aF3hdy6YmJx`CS-MD2a5`uo_-XAIYv_F(W!(B2^OFcQRa_*D)4CJs6#c9rG}G}R z0P=>`Bs=tJvUa33q|vZuz2fzqd2)~K@SQH&NJ}cfqHz`&<0~?8pe62XSsCZ$yhQnW z^npIE#0uH|-C5s{M|?i2E;{C&2veCfDOVoOGH(CPsc+ z0AL5s-F!K=>0EVzH6Fq+t|e%&0fu2V=k#C2{&Rn5YorEM5V_#Y+D1#XZy>^$7>bH1 zT3D26x?o6Mb{|mD=UiA+xN#Z2u1g2ezxV?KTxVAf06*PIH6`L|sI1;3H&FV|7<~xL zxJ&-(<2b4d$4be8)7lLtiXfzuwqYnD&_w%Jng)8_Xko!~|J>^r;OdP>;N4F=0`tWJ zb}sI~AO6FC1U}fn^I_9C_mp=BO=HZUx2hSHC1?#ZF>A%En0NJ^9X$7d!PQbuF?{Le zoA7u4>;DFxe)c&(P(&y#Lpv4vsGrysWF5eP#4QDMJf%-|I0e7)Q(s70kKVHI(dY~xxsQIMj zgu`%&GJb3uXwd$YB0l`20ljjcXlBW1gd`>8lGZWyoFiKLX>L@5f^ds#G&_|HPg~Uyz%h9n)JVwzVPT8DD&GSOr ziTu2r7cFnqK`QtA+_pN-QqNi6d0abj<8M0Ve%kWPQFYO_?>_lG|K^R0mmd1TwzOwG zby?RqRtSw>FI73IX&f!!qXV4|p!>;#wP~VIy_g0L@UK2L+%< zH-l@dP(O%f8P!j;I#6U?i)pacPYzs@Kxybg!`j>P=v7I}_Vr%g_YlC3e7wN_?f)kk zEo{7)5rb_g$j8s+0N-aI1|2k@&TqJVNS1&u;|^AOytle>9IPt~Pd#;n>nr-afwVr) zvj(7N^BowL3wZU`MR;|52tNAhZ-EcI^HI2d^$~c-jcZU>d$7iJvuMik;AK8%?KOki zB0^P8y|!KzvBwrUyr=s~kNv3m*2gb?=_~M$|M5SCFFo~C`+6oFHb9|tSM+cLOZe;H zMpIyzi%3y5yPYV<2h)r)#=ekvT-D^9^4oIGXy9WOfPI|De#lIFYT1W$5c)UZLOuOm z4ywwq74Jz3jl z&ti#+__iW_wkn+2B1}NL=PAzbz+lXIh1+$WZoRn{d3UiOJI9L%q4pD37t3MJByDDV z)(#?{0O(^{rm6bmHlYXJ^ie=(NJ$I}h9|k@>@G>fAjY`I{G;GdZil=~yfvzy0OA2` z+;_<%EwmSaPl5)`@3}HP7R|>mV^=2gpQ)l>>91NP$swSYcj#1ZY0~=YhAzlc^-<7N%CZfR zf-HrmF$hZ|*aal_(H?Y6ZM#>5AEYsr?`@dPO=r!UhHCvzkfYbNhVyb>jxTR_H=m<` z=~+QF9Z?4zaX)N4LtF08-`jVw0*`+0);3&!`~wdm?0%p#l&-{Ej-ut8AT4_cBdt*v z7;9yq-T!%{CCtWUq^j%Y?2>#$L4zbpGIKdoG7ucXT{Jy$5|{bRS!;+y2#F~(SS_bF zQeFm{>P#4ueE*&YTf5g4-pXR;|5Dy6PbIPDe)7Epzxo>huimcg;T`5$asfnoQe?s6 z8w)biqaqeL6hfFj|3(4NCIk-DonujC^Rc%=0nqji-L&X-1q|@@clI35-5>gJoWYBG zm*L$v?!a(mY;`r@dw7=*-jS&;9DLZdY@7ma=x!Q?HCwWGQVrXnLZ&sKr?=~ZydS{w z!t<}fKWgClnWlLb^RikyOq+xTYee(KexFPdI9*{R^Hyza`sSpyr|L7^wWJ5dN+0b= zaNTfFxNSh&6o~jl5%Bh1-;uDwjVvV%Z$@3)XJe`$NT*X)kIxzTAvytkK{rq8u7sEX zmfTZHxKTlL*PkthaVE)H2|`;d)dQSrgd%l;Ukbj0bvWWUcfvAWVFt*OmNIfT2n!W1a`DLt2B~k-<(01S5?W(5$;pOn&y7vs9Il8kW4Alhxt&; z(drNfsMOR4ny>`bK3jlrjXtQQRr(xgQMyH_u?W%1q`df@-qh@JA%@hSO$LxkO zc$>@u)i*ag1HQEa>b!j2my-ZA!u=II$FTEe_9EQr&+b#SvgC%C*@;GNeOaO3K%XV;cE-H za&hiQQNPjhZSN`YZI2WDqu)ucFt7mz(rbLYE%?PiB?t6re^eluKqC~e++8_#SpyB6 zQ+HWQ_^tEUFG6Yp z+K3#2aNrrqZ%dgcn~=&tSn_X=UZ03l^}4h?%X|>VtX-K&daKc8CcD;%tVaGD2dUFE z_yz=Inu@v{2td!cE~mcAi+yI=RI|?Lz3A2n3()lubpTWSpq^Y3tj7rp0NnCj2Funi z2f=oq4xDY8Gu;5sLHHU^nt+zEBHBIS=B|ymaSHIPFPVHG1v5tarUiCa3QC>u&SL<2 z>vM;rdU%O$L;Fmqy$tUeCwYCRp@HkDL%&-p?6cgB6}9N8stD>%q%R#xk_=`^(2XK% zKWB0(D~*!Xg2|DD)@)i{ddnBg%QNN68__mv0Q=c^MS0D2cqhS5f;PVaFOwgN{8FcTU%Om=?H# ztGl=1UDwv|(RUBMKB7u?pJ4aY%+)-9d!fJ!OGxL z8}(hppv6tj26|2N3cBvVNG$*ynDDiAz-R8bzyLmI%M~5O1(&pUZpL6x`WI4b;tpHEcEHeVK5+kM zD74@ds~`=nqso)W0i5<9#f8E^meF%^;L-lbELFAi1T?IA7NJ;&ie+MOScMSUWqGJu zI*NU3Jf)_4coL-zmL5^~A%UHCS0z1#j2CKZHeTx^yLT9$?Q}5=YLDPSsgWo{mbIVa z=U~$%QmiXf*ClpkK7pUwr!FI%Kg9{O zplgEw{Ij~;jKLcx;sPQwhR{fF>l(5p&G|YjVrpWts?kSlSznVTD`n%`gNE6n#xJfe zPu(rj_-+B+;NXa39w< zf9A>W`JoH5;o=jW(R2-CPhmG&l)npca)v5@i&?PW*M-K4LDsUtBS}j(8}x*^qJcIA zRg;z*MPVidRG&6iUw`2c{=w%D;8XA2hoAi;SK+aDTzo^W z9v^yVVWvIFOhy4Y@)%NxVfk$uK+Qqsf5vc%uW`F}I7-YVQ`k3|nHW3E~I_88EG`64rH#!2aUP zr+**liSL3ts{sz~E`e11`{od$uB?zYcNIk2Ov^ZczNY3jZGa+7M1^F5aO&5N;fj?p zvW-hYf_!j~-4N_2M~p`)S}oT?KrY6TUhlATiDX|jGIE~no! zQ~qImmYn9r5@p0G^{?0GiR{kH@#W2?5In=Z1g8U-Z$;S@El1sR+It;eo}peZk3R8T z4-94Z(f)UL#aNHz8Z=>*3cwT)SS@_QR};itd$sN+Y4(C9&iPyvm=pyuMI};zHt?2O z!?P*Zu2<8rnI=Y+7?^r(tyD)dFy;i#iXA)Xch0swNXbN*18y>JLwOkQ8N#BFA0TwL z2>@Z5KIQwuNC(!$_w$=yUS5R1_gjbX{LR2$`km42wojSCfCxm#jf zL)J&T*qobuPjN${Z2WB+dB!*m9WZ@VIZ&l%0qJJ;Rkcx;`+43~Gc~HFtZU&0&c4#X z+PG+-Z2=GM6rNA2-G(t^?O6Az=S&3MbWO#BeQe{#8r>?I-qJw%bI-pFfA8=8H}LFp z&vM@+!%GD3h}PAisE)v(Gw0sP{CCyhR}R3^@$$e+8yD3yZy-Z?A5NF7&~yO4;&Y($ z(9sq<(Rv5n^gBT?lg}|{=1VER1kgHI$YkU+Zd$p*o1nvg`S)Smc@&oK{uCp5RHDIv z()xLWtsp{p(nDw;O_K{@#s)yg?grYjE6Ei6V9L0YHU~5vYfQ`|>Y}h_k!)CJt*V{9 z*WuuE{{UutF9GhNx5uh*u!dHnj-!qn(}k^nTf;CJ3Tq^f2!|?S*0fG0!g(D`uF9D8 zz(v|*`(_ow*wmqor?s6DKXn=idKaKN__!MXlCe`jXEbOuqRrPSlOIaW@^^sxDMR!- z2MI!np~y63Lo6f4>nw9@JB_e!21cbB_Lf$9?AQANMSc#JPf+l56IWF+ul}0M8&1hu zo2gbiqSR({=&3%gnB)s2D~miMRxaC2dpu4mrYv$=wsw+imgn>HgH+DT@#Q!Gy~%yv z?1K049iH;OY@{#IqAA70JFrSje9pg!;MG3<>6T=H~KfLbqCSpfXkIj#$6Q6 z^#6LAyPm>s-34-A^y7;CrTZ-dN|d(+5IQ&G=zDY~Ova%BTZcAD+UPw zWe-ReFin&F>Mi&O|KQi)nP;B?%Y$q4=5*(P&48~0qGDSmPSYSR8~s`Z*YF`uP5uTb zZ9pxf3?*u!GCi zzJ+rIOyej2XU)D&LE7*WC4GNd92U4HT3O*;3Yqj-Ou$?$GeZ%#gLoJE8XcV3PL_vq-ING$`QcquBMW0c=r+)eZUgab`KFS*h*Vek1k@9M);BE%|?y95E z$9}7XG0)iXIc=r`JjnAfUC zM{;=vu{MYj$3~%3&DMjyNh^R^-~hTC9KpsWp)2H>#Os7PlN-+`KQ~zFOd`Yb*?-LPLpbygFiukK%Bz+}gG1DX4z4P;e7D73@@e5jzQ zjn|jI@;v<7ul>K_si&V-U|JlYvfQEw@{#eku>l8SJ`a}nHi$_72w+o6T5Rf%Z^9NG zJb}-vWhvk+G^$#1S0bHyPKjqb3^K7PG@i~$N$bEDi1$;c#&gH|p+xCk@;4{9B&+oB z7R;af?>Y6(a$P0&yYc|n>_Py!UeT!81pw2@iw3N;e`JA(+;yb|wA={OzKj7eb#r55 z46(u0&N8(X(+473zrcem!84E8Cax#7xH|6`Xu(0RL)myehQ>cuq=9M$JY*W+JpPgK zf#H>DMnO2EykY=!TL&`Ow;)|PNX6U~rW0xwFrgo5YX@(IEHhjnLbARN`uTzDCrl$i8 z7cF531zfvs^H{4lgy-F33vJ;@8>;pi&dYf@p}g5X&@OY{?Vzzg^^rU^Jzp#&*SQ<5pu4nXi{mo_Gd2qw8#C-)|X3ECbBuG(<%z=@QS?&RROCxOOq>x8d->#xz7Kb_~92 z528&m4v>{RARrnzkdQ@4yEsEJiLZT-MM9yEwOS-PO*HLu*BqCzz-tG)>_2aTp)4#( zGO;p{ck2VGcCzsO9X!8&^A7y|zyA;6#TQ?8S0Mo#D&R0{k<3NId?WRC$ZkHMW7Gw; zIVEEz7MZiEe#jnusc;J=Q;Q+(v{#c{=?46J)|C;1Mx2DYL=_n6%C)kE#xZCpCR8^D zh@qWT@L&KoyCs3rgv}3wlb%s!A@K@}S`zNj4FVY0i{+oWA7TO>IK_kZhXX-S9Kni6 z0UOzDR?`}nRu<2M;XuUb3e`_FjgcFpbQ9nMjk4L3`5`B4w^HbUa2>^hKq+PM30laO z8|k~Pe`~k6z%V%g>ha9MN62S{tYh9x^XkQ^DqJ(SAZs)2-q--^yR|yg{)5k5-$c%N ze$6$a2Y3sO4E#Oe=o)VJOzuq{W4-uB*ruN-;w`LeHt-YGE`)DyjWx+*U1akOK9)mr z*;31mx}@+Fa_T++3pbZJ7{O>0C|p*0rl+FUY;26qXu7neMHPJ0ReUgwPiP;VF!ehF z!nOvuH=p~=g(c7_pJm%WA zx{vz~9{J!WXE3|;SX;3dItV&kQJjEg4BWTx6n}!4r~AEK^sk%k^a6?hGlB^xh06{? zmC+PR($xf|31?%b!sR@WMz3YrZGy-T1MnW}{niZ^kmvw_926)B(&%f0o5^_Spfdon zYNHTB463FR1Foder<4gn#$pQ2<*hI8&EYq`GQzjMkIw81-L=7&7Xf$T-P->RcRK5* zjg@J29C+IJyT%7J69)2u3SCYNoXSqJaj4=F+y|3ljtuN{vw9cY{ZPI;t*`q_1-pD4 z_Xu(nuYgU~ORDL!=aBB;yY2Mg#g}fuKm33FBY5G(7s0e@VtS6bEaqb4{>x=Te?nK9 z1xA5VXar3-#@HAgOW#zB1ats2Fa_7ouSJ+k%2PvA6FSRc5-v{^Abl>#Wc zD}nDU!PnQOP|vPQi4rVhA%p#@nHDTPUzgf_6FZyBiH@>7Q8k4rf3tx~r&|cFq8k`W zPNs3F4uC@uG{03_1cfz;Hr6F=3~V!NAjpSAtxJ;8BDCtJtTx~@7zkBxXe&j}p`Oqk^ zHWE$!<{9u-PN8U;(QKIz{;XQ^4y-}l91QPjZ_O=Qr#G;%6$7W;!qC?+D-5##Gx;yC z8P#@>Q$X4p1ku{socFK$o@Zn$r_fh_cBXBwY5nRUenK%M?hzJ5=m6M8+*s5GDdc&! zocNU2yAy=@b!#+rR;U=gIsddk$UG3{*G}x9jk>{-j6+sWsRO;m2Nj%`ulw?~3L+#p z9*CZF?X36a@A7ZD&pM8}cAEZA?pg0F%6ur-+9K`;2y#j~31lJ%c_svfXAm5@(1cwUfn| zsj`U~AzTxrPnPDasC20IUP8^*AkUjXbl=XTg%U7U_1%-5fxZh|^V9o2plPURqTyZB z41WJ5g2N@jg`Lxqa+H~;kD{=o>Od6(Zt8YY74ce5ZVM2l#QY7kXk4baaA+SoYo86W zfX$y&#@2E!>sXBv{L}yIfM(Eid0kZO>-&{jbmSzHNKZ>8hfXL+Zg(9VjPQ5=?mrZt zXLjuXeb1nK0W+f80S9Ai<3h%R$3@e)8Gz8d%7Tq06N02kZ1*;x&tM)XKsqF$OXkH; z+&W{>DT8hHcGP=kLa-^FS64Uns7z#}z}B2vLj#5rJf$EpK$~pb0+{mXX~vh5fQ4lh z(FGIkSwY(fChRyWh&4&Z3gs;wcjiSn%5U_V%hf7*vu?0 znnu-uyOy1NBVvG^HFx5_0T!%leKp@x+kRsyF{Xy#d|HjuWk3{v2%AXT6mNTMdW{Oh zOIDn7h9cuxCL6Kt^F8N-g1AqX|K7B@>N_Nda)^f0HoDSMsfWy`7$q1ME$=?NX2`}! z<`I>D%RE%xXcS*h#WsHxTskRBaa~GgaU;hl$eLq+Vbs5~kFc93z{i@k&(%gt+g=Q< z3t#8@4e0X;1Op7b;Y7|GFZr&)H~%stc5sr6HK#HJSz^`)bA{22sjzAm#_A(%eJ zjj8jb49K1^Z8>lL`2M16!`57nJExXkn2wUu@+xW8L?8-Gv7& z6=;eO=-Ni{5k}R(4Zc&)*2!K1+$jjc5MvCrN|dqIIPWo<9n zu0LtpReR*wzHv;3OK!=GFl#A zYa3~>oCV_;xX|nFD+nrt_{d{(VNtD*)=ld3+WXMmd^AfPba(A;8b7qi9NQF_8-eCd z_Q1^|X|vXc2saPsFruZhlCfstuUQ=kB{;Q?a?;>G`{%z2Pd)WTIh-V=L=1Na)NV@; z_z;v)gt`Ryj0}|7(W4ags}y}GgZxo)WOF~qH9x~tQU!?m$$0wN4mgo*hXCi^e(I`u z^AQFYm3&}t526%&p@dddE7!A!RBb<+`B@IsKm|}3Znr)!MF%dgC3asjM4;^>#l)tH z9y9>b=$C^$xv!&S2eCC~J6COwZTb)lbrkS)kh)Qkb<_SHFt{A!s@BI*HYAX=={y(4 z5OBsDAF~L^##mj*`g~-t%V{!o+HFlDhUKXY3GC}N%yrA@N+4`Nj+ ze$uJSlKRi9(~FF18I`Z=%-g0yQ~FI^0{i$3Mqq84kUhU; zvqbX!c{wk~lyb!N;{f9Q7CPp;qW~-&agDY-e^i}#%=P?pmU@qRm$eT!+Pc{m|NhE_ zYr`-r4=5i}UoctZNa=QELZ)5nAiAP}RL(TOjC;n6jRi;rPZXA&AGkJc34bRD(*XcC zn1Tma1Mu3CqS~&a`AyC7!nD{{i~L=Dw~q=eLKGU1RuHUcnbP;>7wv*D+5Ai}I-&ve zjYt2dVAS1zjT2BzVXM|*vE!NdR|s?*r5;iGI2|l?&UA-@8|KAHwWbx)%}ddK7_JFF z*wB<0&j zu(R7VP&3(c%kkhdh(I@aU9B5Fh$i(h#z78}K}m`^p#(#h~xWP6;q+Lpu6yqGA7qWet$2GnJ z)d~ZdRS9ElsT)AS@JY3Ixl2~j;5WS<>sgSNSuZ%#gRRXXn-zvyx^e4(tLO=(y8QK( z;*TrqTEG_1311^kKZpJv@h_IP72Oc>vjh5}8vHJ;&n*npPcUb7p`Xg9h0mI4T$w zlNZ-3n+Rd3gr+4Wh+U^`xcd%KgAH^4075X~WM%Peq4J2x&uu}${n`Mw5fDjVmCpJg zjv#@;>T};Vtm_)<-DRtPEm~lt~muqBevTcY5Jq40!yz?lwpbRQss`85J>s2zLP$0t1~DtQfH6FrN9X;d+p?FIbHJPp2KQLQ9eAJI29 z3`p!j9x3%H1l0;vIo6xa<{-e6Cvl`09-UWK0CO#(O=HUhYqAU69WS*u-RAqul}2O} ziSKjwi{>#JVb%oENsFV9P;tHF%?XZZwyrumT8P*4)f)ow4~vhjKw@;G08Kw*oPR6Xe{@0_-eZU96)4 zi)-J)t-`d*=qL9@j%{_D(EG&;Y{~{*(~3p?&%ptfcufbK6Bn^yV+8`>I{~7d=BMk@ zc4esMeu)Sb%I8-XU;2{u#SY+3EFnE_$1!_ofz2rjxaxB?YwhmVx!(FwuMTLb8x6%N zJrvty>DmKxi$bRnnH$xx+Q!yfDWFnZ6U^GwtRbVecec>x7YE*j!j*;ZWhZ@cn;<36 zm1138QWGG(R$y+a=iFyZL7;11p(NF=*_%|O3v&E+UmJzpHpB;d6o#eaDVBycXL)LU z<7#pvu))2E|TA-d8LtIgAGDv>_P*0KUbUmns+i0J_;`uzM3UA)4TldW0 zAGil=y8MyDYwYqB=bv$iN$SlfQ7am>OgR=|wm(ujSeDjny3qT(S8m-_F*XRw@ zdD=E*td>7-{(VwC+e(5xNy zSzQZL8QdTrJ9afG8|VPl{j6EAFLYX z?Gk5wDKi-_2WKD$rgT5+McavW_oAzpcHvvU<%3NNUEsg_r~g9z@xupE%=aex!8L|q z@~w$BiM8SG|CoGf4CL8{f;TySf{&Py$%q?91w=Y_n$K8>u`md5x1H7rnn@-Oj=(hY zZr^y!bk=oaLk6G#A^;Fz5~Sz;_~4I1_~PmbnLfwG!Le`liUBPFe5hlFJ`S?+k*8H- zsdWfhk!NerCV^QrM6+EcAl?R)ooJ?B96^gp!s1?2eDmX!XF#3=l#{ny_)GQim|DHq zH9_-5+osW6yoA1^9!MHwAlzu9ynuZ7VuT{p)vp%?M5FUCbpQFjZsw4SQ*R@I60KHi zM9>+e7*>0y(W+=%MT@DLPExHr-#36AYcH5ra~9k0m>O=2XG|hBl=Z(&w~&s)7W%>@ zfD)m?hUm*5lQoCer_P=DtV=sPxUYk}qX(!Dd@A4|P7P%9B5-yn0-Sq&gRUR*r_R}I zte@6)vi7K7M`TH=&I5_6)80hU;M!@5?`+{z1UEzVeklLz-}4@UEN?kSMu2VTYOy#A znTUZChM$-7a&$QgKnLeLT{+9WZ{$6veLo)a9z5p0eBGWoseN?B^N^lDvY)uSvuN6v znfv_Nx>p9$OI2+Q=U*i?xs&X^$12y@oQH9AtoSY#1x>}9qjJ|ZB?REi9aIx0MR)#g zqt>W=t?Jtz2lz{W4B_$X#F-$D9ErEEeBpWZjY}JV@CCJ?LJ%zo24DzqgeJ4}8Q|c- zVK_TU_IY^aj*2js4%{LzKT!7#P0zUyFc9dZ6532dZaf1ja5>l%F9vPQQb1>WiN%B2hN(T{u>4i1*^yTAPh?e{(i zKq(;rNrI?s!&USk1jr&!&Djo~eLPI_h=CUYLTd{aSZaqH%@ydeTG{-&IscW>% z4S`QjV|ADzl0>u^>jP*CFhx0wF1SsD8=Kw$YvvVVzTkF8aexrh%7C)Oxq_lJ)W9@I z*pD?di!Vw?Y1@Iu;01n^D&O`oQ?y=%#?OF+HC5baMrh zy9UHt3;H-Yz#{RdwR~MrR>*A3DFB0 zB4e5(sTp3GzrY{kDM`2_fhe^qc2g}zQHEx6DMdYtOqb8sF9H1IA3}KlJK$?te*Z=5 zFM0$vyH2Ptr!Y$Z>jSEQK^+VtpsX1g$4 zf2?W7cl0TO&Eu-In_5S-#Wsb}{%`@o30EQk3kFOCVF&$N+d(ZMI3ysiwApV-e!~VK z1uz?(0ANyW_wUEsuK?}6>N}0;e%D4nP%v#=OBfwYed)k4^;_1Hv>{SZ1~4~p55CTV zn=+tOH(^&U=c*}a&}q?fk^8y|cN<$bpuv5SIIy~VjA-Mnb0s=zJ2E9@pKnOCHQ`Sh z`(cjCiH~^4okq0o6u?|Kdx%*;26J{2+9c3)j;aaP1_-Do4;-zUiKd{f9f%D_o-?K? z*s@l@vyRAmPwP?R7UDB#prR3fSW3Z_MM~qUXu|Xo+cdFD8RbnXIX^WK4CgM;=jDX* zcFoh0CI4AUaMSyHE`L7het?tPi6?zOA1*XSFdE(!CbdO?N+l}R5hwn=e5`Lz`=xnwFPut>L-XH7%M6XE63XEjA7g zfc#E%S5bd~KK74XL-y-FYdKi1;pIE1+Nu!f^6CTzwD@5f89% z3~pSz0w4Y8hgkdjxnKV+IBXhe7DffYHIOJ^g0ngph(K~}@;%mqik_WhG$9S@PQcZn z&oe()W22&js`W`7hD8kMvHvE@AP*24QKq4`gIy~KF%9HION&!50|03w7B`Uk{`!Fq z6iqX2u*?&}{Kn&O;ro9Uc0Tz7&0M}?z0$FOL@WUs%_Z7;X7<@3#il(^m#)(m-{#bnEwj5B7iU{{)NY{|E7IuNo++x8(zlKzWSdnPAD7 zfNa9X5N<=DZsOuLQz+|r0nqFP%J_UE!S~uciDr02@xm{fn$h})LhTPbMJE}H9B1mR-3**3A&+u-xw+g#O? zTj_>l2y}f8Ixz%xa;K(*)7S-GgH;baLOJ%ms&%Yq^byy<2x9FuNiJz{T;Kn2MGeYS zOP`fz_{PSpR;Eb87-QXdkfqWyhNy$b{?Q0-elXWXqg#v-(F1?aOX-Yl7o+uwA;Gn;i1ytxHW_|Dshi(!sbdNx}2&l_FtCKIh)p~#9MKG9V( z3iRm16-eTKWyD>p;7oi&80bG1XOg87ABbUoiF_YTI&*13@ZBFkxU>Ub)AFU4MtJE? znP{_wL7Vm`ffxh_Qx-5O2OR)dCXoJJ_oI2o)vUofeR<_J!Qonb&~1|g2|!P^iZU5B zg9n(pZ%ie(3J!akLeFYRmzy9mL4Tt-OV1aA$Y6+zBPbeTIdS?N7fiCUOnWj^V zEC#3mDvzaHH}?dg)j`tR0cff_(4bNg%!Oi{$OLP@cfbVv;U4Zo3B1u{Eg3?#9wk_6 zGQ9u+y9`HY@f1@0+rw(87H0{>K32nf=7nA4A1`PoO@OE4~ zxt725M`+4;J8Rl|^uzGd2md%+f8lrFa=p2+wshlUu459Y;X#hBKi=ShU~`>@*|TPJ zAg5PtCIr9^3hvZbUJw339SBQO!SSpHq%`oB@<96LG{#yQUu45tK+`MgeezP>SPgE) z3-ByiPWn2D3`{gJq-5ddBa!$Sk5M(yIi@E{nivdPHBfAu4wVl!9;2d8(~(P>Imw*g z+sG@4T|Q)t26GM4fhs=k!GAILML+wL*=N*e%rs}#6p(;Xa@ZU0LfpPSoSfEfWUH0X zhB|ZM=$1DLdDP+Wb*U>C)mSkCuKV8utykwR(C6j&^0fxg8))IkvccBxspB-)PScj- zK5x5z)IGH2KHByiE*A5~pa$7z(^MGg!grHDgmz56$$=CAS=-!GS(RaMU$*!crUFSn zyJmpQ#E-%4Ql~nAe)5s~@NsyP%a>jvxN}(CWUEj$gsEvjl1Vhu0w!O?giN~o#^X2c zhjaj*du`o>ryd%@uOP*Q5ny8hV%5@Vv2ex&Agnfbs)-jkSP4dNQzQqTOy|qoC&5=yNI_#`ogT-P9cX-dz zqw|5G<2Ak}@5O25)_^o#;(}yuw?@H6gGy0dyDTV8b<%?m1f{!68h`g^w!jf}u^K7+ z!6!QJ!QDkNTi~F_bb~N>QeS9D7O6oud%cdqkD=GKi{Lqu6U&Avso@5jwnBf0Bsk)V>2+ zyziv?@C5NW?U z8z55trB|>=;IH zX$uM5rel_Qvo)p3W2i!aiZmkwDL6skio0)Nq|r(C5r^c7^{g1knIjL8AAr- zBUo@KscRK$r`<6Q#Pt!>rO2%zdVjB>9A)=8FXu(dHUNEp2;%5+Tzv$mf8S~D#WUP@ z+-G~==69#9H@9K)nMg;_zFRGCt@=tfVO9K*Fn@vZDpFmV`E^lMK~n>i)XmOobSt3n5NDSa7Pj zq40qeFc3H{{GNdYD2?`A2qLpebhr6oHixp3)5iM2DWHd(fB_AV^oeDz^jAl9^AXzN z3?QtDUcg5_`~klApZyO#uy8%ml<@&B3JGk4i>FB|4$KD48CNyMoMYL9EJa&pACZZ^ zpFoD@?&+xmi*7)AM+Oa+g2<}yKeG4dLAPDmeHgaZKKFj#_uj(;8bCK1J%Q+%-7OBH zNJ`9;;He6FYyzDa&!nN=lW)6(_MOj{lHKiR0K}#6*%MONwQYmaK`* zL1cHc=aK9gXbg=;V|sYwH{5&AUfz36d!6&0bMO5g(36D&eD9uN&(r$twbx(?GdnRm zaZZSXNo!nhm$Ot6D#&5N69f?06e0)u2nyB>*f(WUiIbz7aL0z&L|D8BZ8|pqX=Sk^ zYG}>XqH4kv(C@WAZs|npD#!U!o1txp3~ZEakwR12W)4O4iZCb;69Y^4cn7wQ zK(l3Rr6ml-Yv7*u=(@ISU{yA6OSN{S++E#ZDneCJ-!?yG&DWwpGxJV?9{2_lV`o$Q z%K-yoa)8XeOzO6TYz!!nL@PU}m`C+U+N*nPv#qSV3bV}2pU64WQa}UKu64Qz7_bbcE+kBT5Htzlw4sr998zCfI*^rUN1YC<5=rfRcah3L7B{WKyDwAZfJ zuIX#)EdFjr4ej{$YK%mjc*cpmE{cHW(jBLNk#uAHA*CAr((&qa4PEX{R?a^;=Z(S! zeF%aC2%6U?eV390AmJG5f?2|O)Vxj86A=EooH;CptJ!rdxd zt-tsi$8d9X2yWGY8ojsXHCZ|%)C4}kInf}(~fZ^ zOl!l0?bHyBY66&&o0kNe`7%3-9PmO=Wgl@oD233FZXh_VgzB9S2ZXo2TNK23dQv?N zu6aYjuCrBcxQ>UOJ*!m_ip;j6vr$xbu%VlULX@iQ*Xp70>OEKBM}Fjo;rIU&KM9vF z-vdUfZIdU2umaK0xcrPzkv=75v~LpitlV`wt~%PYdxL!#&Kq7%^r^04Ctyx8amw6mLU*Npesp3-PqT;*c6^yaoa}7 z`c{B?J-Lu&CwUu*d~X6b`(t3+WU{&aRN5JnD$-^DR_A1Lz@5ulfzqyvCThseyhxcC zR#Q`8^nNF+u8%8TzY+}Wt1qgPCrqvwIU3|zf1_g}dV*?qTaq!`(Vf;gDP0q%DT4X4 z0|eU?@u^c4`O0m6iP#msW(WGUYv(lupf7?TF#Nq*7tXxf2ZZkvZX9L|Y+p&bFiJN9 z`hbqxb1n#`0N^z#7pKVsf&)WYn3R)7x=3lW^KEL-35-Jopa8?TdzLHu%7qPQxXWK# ztc)ul#gK$gwgZ-4A2eER9jAg)6FxXqK;HzJG9A13kW#~6+@oI?RU;*{sT2jiU9L21vS``Qt0<^4F zCCc&qmCJ|lo_9YAKk{SmgT+!Dr6iR#B`th5m)L5dqwmdLl%ZvnS*EP@&@mhoj7Y(l zflV%BHW}!wfL&|?+gVC&myVfc>bcVm|AwipgtUzy@C}SHTirs20a7sQ7X;BpFd1Oe z<7hNb9Cn43fK0Ab`^r)=fI5J@Hkk)2QVZj2hk_<+hfI(ziHl(UpL7E$D45VJk0c$ErOzYKSn|i(0o6EuP$?NDRI;<63-*qfTlWjgC zKr>O4JyUTYCMzp**ONSF1^8^gnonChZu?C*kp&vguGg;DuBq#l%0SEL+~r@+T3!a{7ozhxwb7H`k=Zmh5kv~0Bsy9tX}s%UfVaINUA&AX&98i`hiiA1 zIxq~#lFKq02%3n% z-6SV6iBOM+3#YtS;IdG5v3fycb6#=w>YVDdtj5H1TCK;~0rNVTH}PubN+PO4XPdu# zXPYPkMreNBpmCZ3eXgPh#>P-|9EXE`_Az516h?~^h5C$E#!O+xhh+nl+nKaH?Y&`* za9U-3n_3)7OPPOM#bzs6U>LaKuQ#%`bG0-Sl?Z)fXKtTu!*2`-6c2=~xCh367A`~T z5X`l76O+KO(M0x3rziS~J(C#+apyeT|5dDMfsJDt#SGZZ^+wjBByOoQujdQNJE>I( zl}D}{Kem3S_Ku@zOUJz0-ZHLq9x-T@lN$3nDF_$C#BV2JGN`35vyELYkFJRcT*e}q zf@eL6@|7sLcT?uGR}ZF1wk(<5khd{Sc2WfB)Jff4G5{CB$_o7mE&r(At_y}gQOFbPo{H0E<(m>fTanqU9VkxUEdE@IQG5v1<@Bt z)6$Lcc1<6e$ZH>fjibC|dFj@hGG|wO&&){$6k)-Wbb9sEy}(yYTc3oE~!CQu01({O^zhU<8a=k?!WIH2#0s! zfpE1U_{Q_qBcx~`S;~S1l=rDe!0PK<0a=q1G}&{z+>s%n%RgIxShpl-dT@3$4wkQ` zFW$uhNYVxtAYcAHKIY@%8^@>cxi5XAaE~v;o8I&W=q@do$W*|bEng;lJp*J`I?Q7C zweI~obxdGVr^^bWFCW3X-uXl9vGC&`{gimfR1Py+{!lP3Ud&Pe4QPc_d_!$x0>b%b zlXE_3Do07hGKiEB)nuwGk*_8YSb57(5jUESi^_qjgQEwTYhQYMse8zHM1>MLg}720m33OFPWC$kc|pUuYX902ohKpZ^GhIcD+6zoCyw zfbcvhgS3ZjXao!bxOp_Rp@kma@{si`j$IiiygBJQH|5xJGui&&&fS5O4Gr>24FP6d zGi-}YumNEn@GMlO#A31Zerh5MqHK*}GXTB;&EVETDjx1NPX*wP!$JGEYa%!-3c=;w z$mt%4J8Y2=Hpe7}&H>DVj8_kQ$%Ut3V@%}JpPhuM*;4kl4#Rz>rw z_s|>nT18s2DD5)mmQ?S7+fmx92NP*w_*{}yyAs`z7l>vJ=y+eOMC|C1fjuIU{q102BcQG`eUDRg z{I%<~%db}opf8R%E}p(E_2X;q{WvaMFfQ&$CqC0en&V%X2>>L7Yi>+PXxOMwoQ-qZ?Xcu=Da z0kv}B+Qd*7K4#^DQTjN$C86wNNasTGs=ao-c5S`B-^|$ID+v2a;%<9S z6VG>(H;&?Rx~p$Lwgy^VGu;bJI3P|OK_|M))oO`MIZS4I7s8NdXc?sr!{Vz;PIQqv zAWWvDmc+D{6PLoh=_<-h4WM-q{w4^ehUk*j7AY(Hd5#z6J- zwnZ|)D1QqjNWK0w07WL5==GN|WW-B3el?Nxu_z#Exa)UL;Zwi!7^nM=M<0QMqfWTc zAP3^yzou;3HPGmN&K#qKf=;1ASMRw8Y=h9MMX?#wOq_xp8bE)r%^+$(R07Gls_8Ne z$x2@nxN=y<+bsW@nl%LycehgG=#R91_PqHlJNUp z+rZ{MvE?CO2cgwR^fILFM5Z{4XHqhcf}JQ)GP5Rw*~qXHEU~&#t=p(m6yI#A_Ul$kpeD$uo9i6!6JA02i(u!fu;hdQ?#uRq^JQoK?>C?-%uC2`~7VBEu4DoO}jY+V#thE40ORWYLM+-*IkGm}PqNKBzKv6Y#X zNV0Gp>YLi$|LpHWxcAbJe6C{e4UH4r+4uqW+*lA})0lZ$+I1I$?gw+n6H`ppyg_~*Y4U;oAvuvwh~ zAKz-9gjL6?K`)Wh$)zmvsQ@qq~%`` z@375%2gZZ@}43 z`^2lKZ%R;HX%lS}G}bnia`bsHw5$<;Le=fW#Vq59iI}7oX)tUqplv)=XMnJ6DyxaQ zMKT#B&@jD7JE;X8R=5L0x=Bq_io~&TFM=GyfyRPpy4s=9jc11SX&@JVJv4(3Am9 zO9q-~2PnaBx9xn*k8q(WT7t%ookif4b0SnXEdS&WBmB&JcMYBC>&fTO;EUfr0Bcy+ zv^VaUx0DdDWGpkktc=*W>ehS_i0FH5at6-}3^LGt*7ip*r#lUVj@sD>ZpyGZyCp}o zYRZMnQHcMITPN_zFFXN>>$<;Lwz;3i#QQvk-7zWfdN zt>5~nk0}HzSLZ;wohBr1n=UmDugTVM96;I=`4Tjx$-XmZ|j%=-cS+SpdWPtFxa0bI~HxZ+7KoRA3=EhC`=-x?&}zG?b(qtzL6S?Yqe z@l;U7F6C9@w2skb2hAp)jgu6{f`~hza#LkoEj)a}C4i6F4hB{vbO;%ob;3hn#$|kr z$;nbPU&*g?4#QE$IY((`+_V`)YeCECzJ;ntAmyO^DjV5efqJK0eGxayBJM#V3vKfh zmHSe2tTo+)-mpK*&*+CEZIes3{>dUQPR68ny3?$e>jbuiUPh=1U+ehEs%Q=F-n-FS z&Mh@Bq%4hIkLO;yUc0tj-)R7SQDia>PjGQyJa>)LiqDPS?2b21Bfi@fHs($A%*DOff>9CQ83g5DJ_9~%f$qE-#Y*W)g7LM`zdM~NIHIIuJD zMvbq`M|cK$N3D{f9pDBg8yJbp2AZ7&Hcp5yuLN!**}Rf9LWR&|ej|rVyz)6XR8SKR zXu-|(k>RS=UQTqOSsHlv!wCQ4AGo_inAN(6Pd~PXJL^L*0;)*o+`wwBBV|g?J-2d$ z77ZI^q4wyQO!KG!`bb573QlEkV!SredRxwfz4w#JKg-t*r1c$92&*0l)jEO@b%g7; zj^PuZf1KaF?JW<((PF`%G^4a%=U_>d$~v_;kUAC%`O=pkgWvqkkHYQSx4?HSNvvdK zGTR7xMB8!(GvjCd>9847zy#D9Hwzf!jf1d7y^jQ6Wd`%$ijEXc-bt<2pl$+0xh-WA zb7@6)dP}XV!1@LwT-7;)+T*#2B^a@03nzt}zxwvmK({w=r@Hb!+ju`&y-ch&ZXa6K z7*-K&L(GaHOms-+xT8XV2vi5{8Ne;jfDe6cksDkVNy`y8={4_5M@zOyL7Q80l41H~ zl}l@L-34fMwe!uEO@p?Q&|qUIx!BZ`{FC>sy-lGlvTg#pq@om+1ll-rPGv}fv(Q3k zZ!j=!riZh4p-rSe>-34D^H5;&+k6p3;dN-?ip|5#n$ z3l4OnHp6#wVfP8QE8h6sR2eRk);OIpt=W~HhkNd^$NHR)pDnZZtW5ADcKiTlu-{Nr zBNn_=)b+6!OB_{}uPcOe#oV^F*yrUHE{lT*Hs*AW^tMHXX;<>)iwR9QRyURu#?p`M ztf6wVz{xI#v;#4qMgU`iLf5sP2r&g1G%12AEt*J4qqtFoXTW1tWji~8crH{rvd{387Hdd(I! z4i1hO^tRJgJ*=&=is^tkKK&-c7k=mK@Y^5#IJ|uQhMXuXx7iu+4lo;{Vs26eHPm^j zQDtJ$2*0(XHaHo#(ZL2a@S;GurnxA2ob}2j^ma+&$!uefc4h&?O^A+P968t-jxMd3 zfr`2B7U#lxjsB_H~1lq09k1 zM<4^dsY|VWL4lE3*+{X%!}(?a7j3G9TQY=AA=uKA z{F``*0VFr^h>zR*bd ztF@mEi3pZ$hJ7Q$-I8Pz$-|+O4U!(w8iPSL($e;b+51xzq-{>g`N|sB@Y?m-we9*& z0%)9hPZQs0CVYI47svzlh=VivOob!3SRUhVG|DS}r?ayco>?Bf=Vp1huZk70ZOx5w zY;%aDi$InIrxLw-ipY{$<#;gXv$DWYW0bHsgjlF>a*DD@2)IBezP1pXT%}bzn;8iM zcnSiWh(dCXQGg)&Z)&Txfe8mcqek%~Od+PK0tQWXSxIba;KrFNgQH{tGDdVsHOuQi zwlR6@g9-jOKbP(rJlE^fkDtOfUOZrn6Qsb`h<$5obnc~bSdAO+3>0l{rmtv5{2K>Q zajLg$y}#78qCx6v4fSsSI%}-~=zRGYN6X z(F<3~y0X_lwQ=Ub*bzM5L?vk{sbzF8liBr(ylgFO~7OE@SOL*NN%N zL}grtT>%x?`h`ub0U&^CU+_RS8r;T1YaDiA257R{%KZfqRA>5Qjdhpc+pTYl%Ar@8%g)){W%r9z?LNC2*N+Xul4(Eed-TA*-M&mjk$b zl8ONJL=KDPPDG(H_Od>rL-@9N06C$o9AP#Zl4Q*FBxzt3MbhI1HfhOXA-$NwBk?AR zy2fP$wO?(spsh__4RDg(RGE)k`9OIWK8OWm3=MgyiIB*(CkQ|u1(6Y zN~roYz@loY?+A9&|GT|jNxI*uGQDy=s8e~a2^=bOt^j0+m`+uShsNdq!-f! zm)jC zw#%s?%|I_;BPr0fCR1C;t||b(|DZW(z|_o7 znS8B`i9*OvzX^GD*KK&*5$@Lk$`yG$M!C_Sr%%Zq=aL8gC zr>ix5^{Y?9um8qx!kyd4T=~SdVWl1{+M^sFDPo1~qP@>{S;^#rR+x0L9=1ds$(mgEojXr3}pk+S;w`D z<=RQNIT1;XLvHP9vn5v#aJQd_gB#CPgW|9%omo#4+`hR1bF%ujqn{p3c~jm~@v<^m1YA+!Es>x-AQLi#T8i9>=WAI`JQ#DW$wPjXT- zX4>_Q#bE21e(1zBW48H?t*pKlfvlU>AZ(Z17GIDJplniQOo|Kb9z;646LFTVToVI2~ZYsnbNvh`-44&>FJz0OW{pUJ$?25Qd5KK0k!KkZP*Plz^ie^w6>)^^=;p< z+n!(T`ut;geXo=VG29dE0GKd;Z3F4BBkn%w$1phYJXLOlX#kI-aGuU{-}u7IkN)2E zb9M4|#(^G17tW6?*sNomMft0m852t!iI=~+xK++i?lRbMxGxrFG&;j=CB2zZ8!{2o482;)XJ3| zideMzQdEM{qefCfSqb?;>C!8mjDZTC*BcsG17I^vrbDD$`wBREcA>o%@VUrvaCRN~ z&4P({i3%-D~JS=G~+0E~lzw$Ns z$VWZ_ckY~m;|%K(P~ffrJ(;+I0!(zSvb3Jqe_c3OVUC{J8PDo8CCf1{gAbK^%_@pu zX))+gOEqgnxD~i`n0y=xev`Jgy2|*J{&Hs?3J9%k(b-#E7;GXi2Ntk#oD~2`K(@aO zm{f+ew}Lz#qaBy|02GV?xDz>!R{@E7B*iu{y&gR3!q~6x+2Euf^^b-dUkW}HKw|*d z7*;Y;Ac)>a@{OHiB=Yo0%jqBr$v3@b<)g`D2T?3bPutIUqs??BxwsSJV9JEHmrT(% zis1~)pfUG9kALHGgM)NQzMUFa29>*-yC8#`1(dR!yyZ{sR~-pndAPhLI-^EOobAlxjUt`V9>Z35x!R`0Z8s~Y zU6df9wUy>8Ye1!w8xWrd0+eMpF|M#B6bU#~$s4}i+mB>0*Fsr4EmZ~gFi5&+lE0?4!^lPe&tOAk_3`pwH zbCOld843nAlgXtv8R+p$iKAQ=cv(<0C1?yBC5T|hlFI*4;v_#5?m-EO5t)`tRsv$+ z#R=`;=rJ@Ps{TE10sxKYV_uy8^Gubp7f#PvGxRf!h$~8K-i3s5?K=O z@AYl%<4SAP6jcqo=uRQsx>oXBs{WElHdcot48gSQ72IaEkz7gTi`VbKuYdIO@cVwx zJK=rre?KfPFX8m8hu{6uSK&8){kPz3b>{t9MKF*IbS=Cd#_1D9RZu4_GN1{XxR7(~ zvN}-Vw4`ioM;W`eK~eYLCPG7GW5>LtZM4}twTz&^(c}Tx`-=jE3=kchxT6&cU4iE* zPj0x-H%-YBA@4#txly!f^87ritE~0{^@v>Ox|L6)7}#^4%UFlJeNy4zZ3`4os#shY z21wAjnM-X$8G=J#DPSMk?xE9ovfMyy6;q`24U}@oWz8X#IakpcwB<<0un&9m@nDTB z&<4G&2ex-u6akfE99Ik8HkEOoxD81;;1WgJ#H>X`yAJ%F;-*-+wv`(%E(RSy3NY0Z zxOx^yoy$m9Q5jMOf~>=82O7{f%(8GcOER&36~Axtuq(}(W~c2j7=Q#WvyWtJi&{fg zi#cS-waTg|6$8@^Sk|#CW}@YUs4E=Zo=jQQbQQAq8-rAJd}3=dyU{ksikclWe`xq? z-$j;L`$hki;UR63F!YR$n@;D0GaQnLb5Rz+Ed3IcYt{M->L~^*8D?|DWrf5bQUY;c z+r5`!;$3_{PU9lic!`Pc$M-lBe_PrY3AZi$uIGKejoWmvYJERn-*0B@>>3Zuiw=;f zG^XOymOQ2=#kTTTm>56iF`btcc1V=!PBxVk_xC$B0IRuPU0 znib)YQJb?4ow!UP5d6Io~!AY^pTbUPE3oCdDB0l*GX1zZ^#$ib0=afB5l zmoQb)?Wf<7;cc%ETp*$lE+~R{<9P}|&bAN=+qll{s*C?UhrnJ0?>Pdv_Y%Rq<@dn? zm>;;3THseH$ z{xW9Rz}+q+7`2G~Rw#7daXA!!T&+Soj}@s<^v z9PMDXC?XqDDTRcZcM7xIPNO#J&e^uC&N+2=scIc4x3tX5pv$(C^k^HzI<~DK2tmw6 z+afDKHf2F-oMG2(vzg=bMc!9M*$s(+kjRI3;G#UeY}%{E7+ZB*WmN$wniU7-4%<9M zotwsmm(u|Xo3;$Take%$(~mG5C#I;&DW?T*Hbvqhv5R|Z(?vk^h>~HrXJHD=VN7EH z(*h=COp0ugZ4g-2UTtrSOnk4F9nqQX-agf>wE}Dr$IxvO}|(S^S1i7i--*64R}qt0~j8+)h+TPiB&Mpp=s# z72VMBCUZ;j+?biZHd*4dnWEvLXU~1#7Ji>_`^Nu4y>QFBZ5V6Uw^xDM?{|H#tZ;05 zo_oKo;pW1{-!Zryr$?`#EV~B6w(p$QwdbDv;+x+7zT2C$xLQq&R%;xaO(-liC}sw+ z>a{2fZv9)r8Jw2x+>~Sbb>Twy<(Qs2@eJqS2@s;0FGE=oEQ6&@9wRhdlPr`)9HXaL zjoid5jtVFI=YMa8-}6@3MuFqD*&o@!DOcTIX5@H+^Ed5mdaKO z0ZXF5amFSh0q82d<~7fB^jy?HOOX}mN*V;#_3dh6J{jWXlN5ioHt-n6Jw^nR@J`|U z+RU{zaS`-Peb!DUCLRS`6v$)Yb*=4@Y`9n2QdwK@gVLjI1O> zIb)y9K@rke@P0aDakVfex)WEC$U+c@AT9|G#sxPso-&TL9;gb^q?!MJz>h4jzrGYklN+W3{&asuKaF5agmGhQ-V4+zN= z`N2KzU+L8*+;=9;x%B5SQ+$R!(s{Kn+~eCm?f6&4Ppy{Mo&~$)~+mk2bBw5cl>m~ zidm}yqWiw^1{UPHBp3h&CkADv}yRf}LXreMxy^FR$12haR{?SN@AjLXh z;{vtXiS>DV9hVO10e%f{;P_6vZkbqRVPy@=vSq7Smv0=ARN zRQDpctX#PoVpBG0o4ySS6Gb2gWeB949JfxOW5u|kB9FWP3Jv65(jaaOP&wj3L@aX@!5mxkY7#4}GX~qf)G^=7@vQ<1v#EY=C>e+j+-#rZp}(!4`2<3v8B;RA z#Fi$a16Biq*gnGWyvCF8a$t^WlWt%_JO@f3GS}2LNw!&0e=?9vW`wMM!f`Z3R0Aqa zaZ_sOATo$n7~XMU>unAJjJIoQ(G@_}S`8?)iYi!on}?Gvcasiwx+3F}^-H`>z`>`X zRA(fBS|4$tcd0kn37{54%r1IKLD}v4tR17E%r*vQo-e7`l+6S=2~g`Rp;5@|H*6r zg-;On|I#ZO-$1lBYv?g82cbvEs-$S*TDs)=I44s$=K-K?Yd#|wsu^%;kuiQn($HMitk z=t^++*S1c)NI@`z4@`Ep*p1kzovhk(Lfv)Dl zFyWxMXp0>h&=5-;2a6>fb_cLTkxgFpJYU5g_KdAzwrHvZ5Eu$%nLEkjl+5+g@aX;}m-yB*N>vK?feQOg9r{B%NlYp{D zlWTE1Edq}V#*-!UdAKrI?j2-))!_6rMpnAvr!44f z16DF5ZCAiyAEH~uK)1qS@yPmhG*=h{>r#PU2RS8^d_-ihLs2l!!E#Y88lOV4P6c?q zhvJLEb(X?5Fzy0Rb?vSC5^RDG_Py`|e=xd-iEjYYtB1~jb8)wYAHSa~@7y=ok{|9! zYg>4j`F*8-uk^ZbTCW5^-|clb72PKe?U@E``L=H!c!790b3aJ)xu-t2>d#*O!Xou2 z6)Z8ggaWq&M=^9!s*A>=Td*?Wfi47<16@TqGN{)#UCaywNP)=H;XnH26S%Ry3h2V0)P95JIF9OSyd=ZV#?2Q{ zZPYP<2n@%<5C9O!c)0&StZ-Dm$jMp&bR5p4AkOjurT0Y$g3=`b0}Lqxb2K4Th7$d@HvrT z0PYYc)}Yw()luuYm8ngDCDHi2vz!a$<`YvL2U zTe5T%a?o7XGIjFmco+8yRzAg49m&q~+SCO0v`SgnLF5@oWhqwRvq$)XfG;vo@r2 z5M)Esw`TGR>fXjTN~EcP)4sGo^APD;zlUx6g$$&p7cNC-Q`ua*Wg16@Dt-Tt2Wzyj}UclE1sTUafR2t)15^ z0nh}m&b3cR#yq!m_C@oX%6~3S%r~M5oC(*c*L3(nJ?^}4Om}X5^Rce$Z&Y!N!v(S& zw1qT4#Q&#e7OK8qR7)Jo!hud=SG3A;t~M(MCVVUi1aAMI8plF@bGc$Za}CZaP#a~(!YZ}4~MEr z(279<9DEr95r!2Y|4LsUCb2A1@6Spych*&|xgCT%r;n);IzXsIrSCTaV@n#B@^i2} z>qke(3O*93(x8B?WOB(_%A)EwZ49Bf5H{|nDN-4R7_oCTMxvE03QPm;nwqBr-$+wXW!GF5eSjSRAdr8X&VxlFQmU zs3abXVot5b?gSv}%&X!E0%|F2FnbrHYNk9<(@(B|%KesYyr%~Av2pK-#eopO#E>dS zlQ)OGGNXy_SyTX*GQLbMPEjLK9-MB(wjQ9l1g&kYt!zWtcAQ|+zOMSBiHa#YGkd7O zKH0c3huYfaAY65mL<1m;YG zh*%}B+roi1+IZzfOv>hIV*}0N_PplNtFt9p)$D{yWW6~GZPH?lH|A*gu0QQy=OAOa zkH1s*I1y*=FKxL`6J?qUx2tS(X{J5${Z9XluZx7;7I*SmOhnlCx=7e~*`RzSXm)+r;s;RQWf~42Io+V?GU*sht z%YsqyPIXXlxL6dBwJ05$;jH|7(x1USCD4*YF{EmqJ06!+MP(vmX#(-32&P4Xalm2G zg0lv6GK&kXQZ>xG-WaR;gL569uHaWb^)md;Pb7H$^nu#I3Z5VUHd*Z5tXSxA)QyBT zCKx)Pa5n2lqMlk%-g8bT`slcS32<2~U%{PC z}QGTxXJ+I?FZ6c!YqX-fere}HeHr4dEMgJr9ngZ5xIVD9Nyv5Xis9#8*C!AHOba3 zv@uU@Ekh7lZt}fBD7|j#O)F31#k#SD34&nJ#ux$6Hpq3X_An4{Gp@fuMOiadZeN}B za2h63P%YoE;}q^;T{3iyr)JaKz_W-^K=Za}&1%P5HqNaKYPOB9H0laK2f>yJk7KO% z?X!BVG-YJ5m%%oixh(`}vi~7UuE+>FSJ~Y+$#2qQEir2+t?3>PLp^GCedu`pQB#0y zVS{>KJ4gXEkys32kgo$u{r`CT$v8Aql&GW6%-M-k8`J&Z1UZk`*nL3CWZ1<- zfxc6XYK5RJdG0&dcBMZR2e-t5J@bs|$GVI=Ep16}w!WYF$gke~sXzAYhf;drXDSzZ zskUizG;h!Z@LZF+F2e`iQe>eEw{e}9aJs$&r>ir5pDVCNbOQ*3Li6H;jf-d;3v7xR z?pZ9Dbuxe*6@nU*Dk{;T~+H4je?PiI2c$H zCj>$rY*T{~JZT#a02iQ|AZw%-HGl9U{I+4LVjB+~iWtX933KaA<)4*M8C4R`TI55d zmTl8-m;1$S#z?1kR+&*4N}Zb_<`ySpmq#Nw~|x9UgE#bz@*$b#s>{ za;2yQalxS`^a;!m%%sFX4cG{&@>KcLp8FI%K*_{eB3qa8o)Uy z&_Q2U!q^4_lN#5{4?YWcy3{o%f!iv^Fh82yF}8goN|_i`u{&wd`sxP7#%JB&v8l!m zj4#cnALjiqwfv>5q;9!2{c=?^XBibJ*EzUUz}yP}mU*7U)jG7kswS1Hvl40X1?bMB zF&~t(Zh8fg$e`>qB?|y&$hW@?ridz_m;{JtRr1qDMD>U$cC^(ROb;))NW1ptZ4g8uG3rjpM38hdthvv`0M;rNdqAsUn*Q$-X6l>e zvF#e?F_-Q>X~b))4zYaWa>7g+yUH|`);Q1cwJY!O_kGJTmCoF^t$BX8t#A-b52RgT zE)sv=xVr{@nn`0Wy>Yrz@ermbBY!)7@yY(FuYB#}&A<+F0ke+0{10a0R+5O=K&3Jf^Gx})!y$Xj7e zsZc<+5=ma@oGgIZ8K6Mmt-5b~UFD#|55!gL`qK3i_|Wg(fM5DVhG$P609+h31tkiH z`DAW^!NDVVJLLwR1(tx_)p)%Uasy24+`wfp4M?DaZyqe=p9c=g-;wmo?Xt4pJR|5` zxeq{54gke-06CuAP_G>F9xkoE0eG_l$l5XDq(lg~6gsOpDjQQ~i9>SenDd;J;19Uo z)!t&#qirSTpu`nbq03+aTMpLEnag^Df*TYk6I}W}f-jM8G-bM8y%B<&hfD4_!Zv{d zRCJ6NqPa$Ks#3kml|2P4NROorLZ&L}v``awHqYeW2Kw#jKiQN3EWUVEcoU&OhXrstyv>t8C zx|cK};ng2r zmg%@C3;U`^bv;Uf5`%I}#0f!_89l6W&}V0GSeB-B730WjxKcpUAqwDP&P)>LAFg>_ zuVl^=&Kjc`TKO?ge(F^8I|(b~`KW_3HS zu5%}{5-tt^)+XRq0mzARTfE))zY;fx4+M?V2;iVY+RzWyfkCYkO9@-^dvFPGX(9ZO z<2At9hV0PSM~)B$0HK#sIOe`o4jL2g6&xNv1GG9|!YYjMq-6<&+?0?sJ%KA~Q#SgA zwgv$RN603^pm^GS;ida$0gADYI zV`_kP!2q3sgj!6|bA)o-v$S4T@E;o3xS;@ka$qsN4=@x%FR{!*%}bxAYaCp0Is#xK z75qLcw=^|C#c`EgZCqu6Mx+}K48YmivGtD))_7860Ny+{a&^%Vg6{E2H$FDTP{s)3 z!aAl>uwSg38(Tpfyqm?2EQ2#?o7)_cuGg`qh2Y#3@MRklWM#+Tq(&`UptU4P4_OSAWYf5rc^3xM6b-+U{@NKYCl@*n2aMVN^W-g zQ;X46V4s$4^~KhQVQMJg1~6UF!T3P%x=4fc${cCwu_d0QbOTUL+L5=Tol^i=ae2l8 zp?Vax(+Nyq6oXx}WYbMhkqiJm1qdEJDTvqTB(X84dJesUzs7%-XDO0$HZr^bYj&MHWN8@B3APA!x>l`|-Om&7Z;m zG0ynHnfvkc9A=?W-n%ZE2um~J_IVfI(~f*#k7v8~t^Z(%B;L1CftF)|K=##bDt5tbW zaAzIl3p;HP2R*aI{JgJbW*~(GtGDE)t-4e6oV4oaFelfjgJ(DsBB00gM1FY>$_aZnJU4TcJUU53$95$^MwE(wsnUBL78Ghz>M z=59I@sg`*FbO6j*+Efo>SqS!Wa}5r!KMk~L+(uFbz@cMLnpjYFLagO=D;A^!PfkM&jDx}<24P774Fl6ALtN!byCmErla&NC z5e5ULWuEk@9n&*#Er5J+pmn9z1`3djw!6()?M$)`0>_U66vE6FhcEhQXpt18Km)Tm zTR3fdPa|-5&skK+B15fW9b~6Rc6y)+reaPGo5KkmaHPlLUS1Hv2H7sQ^#y(Snhr#e zf!1SjYonN!foTR=eb|&iaxSHtsPln_&^A|s;;`9tlyRyOr ziUADNaim}ht)A-In`Bw7p6!}wk^*2G^J)dehG_-Fy>d;Bt80sdDb$L*|3VH4l7>?| z7N~8-qC$n)L3!!xj!bT?v$mDBakIQ(8wKm6tnq9fK^v5H_dTYhuoK zX78M&y_&UbEQZ2;CmVPB?n;^1#EhIX4G`Aj>d|oRWih1-)HbBTK3}izRD3k1VyV?& z@;B7*Jbm90C#DahcvE3%CLJ2Z9lzi8Ok3i{Z+Rx%wz%8g?Ng??ciXOUJHZncT!pTE~8>{x`M)P1#D!HYM};A_vE!Z)7p z;mgkuJac^kFR$(^1wMlA;9#PMPzW>vMC1Kg37;Ls%Rtb@7eUFH${_0cVoF-z;leJG4=+k1|k2%RU=B5sY0gUek>Gr(ASUc}WytzbQ%R-iSe1b)=AZGr8n+ zXjMV|0-DD%l?zsEq5ibNK$vi>Y{Mz-Aah6tifjFcRl+eMKzJDz5)-lTzzrgSw<#&G zQAI!n(k6yuKjKP0`9{z9i-u-QRzE9e+jSWz7MgVLW1B93wk6af@G`!V&K01zk#46X zw)qjS@W#<@ODKi*z;GfXVm%<~>RJS3YfzZ7*f`!YMoiEw`Ifd@B$dfE=N`3ma_WF0 zut^X%hSlmFPTqNay!1Uowi&^x^jb2e~ zLA^LL;be1xO#BHRoIwyg+(55&t6TjnkPMxKm+Z;(0Ew_?`cr_|mU^`TjTl=x4iB0CXoN?bf-;8w#OT z(So*e^WuBBI4qpsHC*a9a9X&Hs}lZJ;Y3&NT(uRQQ=HYhh`LMf#(5kNG$Sk^@}-EO z*vfe|#g_VdQ3%GjU$_px_Ni0&&Ry1Q8BSIR#^gFHKzVrR>&nvo`Xf;uyjj-#vIk)C4gMa_al!f5K0^CVA7r;zaOuw1fle&_?4ZMH zWgHsgaFK!tmn}qdtf6VRoF#%CZ9CV|KoFWIL1-H_$PW0W^@Zaun>w@E2Hs{c0BzuM zi=c5q`kl@T!IsH~3~C<>^HJv~ zv~LD{5W`#z%Lr**!Qu=AUWKFD990ZY2S6dBS$(hpCev3zpRZa0it{@;1xOe-fhg@s zt*qe;#>?HtIso8M#uZf@!^DWtx%wj75K{3r9)M3eDi@#~+{ZujHxu5Lv;< z35{{C7M;jKA8pof*q_01LCkknr*Nq|EF9`(p<{BqR-I#*H!vfT4F}5r|=#cSTLnE2bJVo8t);BK!oqrHY%aN zCr3R94&qT{2p>KKxOXXzQ*NwkyAl%-!wU_lwqhIiv5Icwe#7pDm(}+33s073;nJEF zglOm2ZP{9>R8E>}tl%ZK&3moY9*7Esg87OR$WP1aiCIG4>6JF~Oeg4{MUN*0V zII3TS6eeO3*OmIvhcMc-QV8_5SEiaMzw-KQtH_-aJhD~9-niCdd z?nsa@H)1sq23AD?0!`5k22dw5_w~P=!ln_z2vzYl&Wz-Aig#Ner0_2E#-Jw=8b>)Uo;V5v5Es_gi{tlsP?=#^ z+VX8G?6$v{PJEX~-)ZJ~3Mj{VjIXJ7z==4xV7J& zUE|K0N@MOl!hF88Biz(?y7sMaZ9eype(^W|z|a54Q_J<0M~@1cT9zZo&6yn<%EBNv zd1V~hf?SW<4i^PLcLg*T!nn$X^IE|4tpcKt3U@l?t{kP40MN=UVcelCS2S@9Ee&Gh z_&I?LW7UYF25&BO%hCA36|WS91xW*~EM6*=lhpth4kEVBLnnBipdPbZ_)G@&b@3zEm~d0j?E*cdc-rPuIrf8nvm*va3vVHS5Ikjnx6cDcpPev(@v8^b2!^E4590 z1Y5ympVf<6O-7Yct*%ah0iDA}wrMfY@2sj6HYb60C+`{Gf* zw54#hT6-ICu?-YDK^O0a?8G9QR}v&sPGO7QVJPa8grqu0c1L19o~N_oo?o9Yjq> zHg%|S@1f3ttV=yGqz68hqe)L*LDpVW<=CR8ksJsn8_TR~uxR637bP*-mSmH=SZKML z89^HKkp5E3*UFf!?AC^;a}D~IpDRpC9s{lcnb?rc9RTb7q*h?+deNy&xvX6Rjd?_> zIXTIjL_t~GHt8B-OG2FLq3gh$GTO{ByUa;79>o!uY*>0~xKB1{q@qO77JRhTK`rrA z?zP&5PP(}_T@5kDQwy>2^@9~X`xV|k{??-)A{=AR@-D@~cn!!A*wWSR<8K6~x)Z2_P<@Glnx8=KUJHZ zQE1G;n-!o0sj|>VhnL|}-xmPAf}3;zx7Vj|wZB}z^Ma4zoJM6;)WAmgAskT}7eRoE zzNL0#Pae{F6?|`Cm^3~4f)D{Xwxw4>V&GJhEvS;bNO_VIKyy&wtFHkKw3O{Noojrv zieT%l$%HyL(M&yAdzey|5_iE$3JeIsQ86fVDil4Yl2?*TJ`!{l~p! z=`KuX2G2K7^Lg&G$>d@)6IY+t1vqZh==UODFWl$HfYzV@J3Falm$jRXmO)I~aVu!t z$f=iZlp3+OLY04&Ht!lYiWP_!%H0kF2PxPgcmAM$7GTuggAiur7()<~AqBF-DPu}e z(8hJ%BPA0Bg3M8Vj}}$kbMe6ohC>C!f5pl zW5L>{iP(V4p1PtKw#00%wC(9&U^$1`%o1Xl6D$XB=_t3=X0yq&avIhiv7Em4G`ZO{ za*PuMM+OzPF(`e34t{*Uis+(aK2L4uNY><1pUf5$h{xUS)rK7nC9OAa!d14|JAJeS zGe;DlaamQtwEk69xZXDV+BTr4B7^fl-qg1~a#MUfhQ<72lSRqC>E#(!74WKDu3C@i zgXN#phOmg1{_gVnApl>>Dg432{T!FKAH9pec6N|w{%G{vhx?ee zy+=6DmA3EamYvZ>Gw*22_kFLqxa0C{E8kq)i^O?VuU8vDBi#Lkui!huetF}L_fzS_ zPD0q7*EkGLFDw_A-%-UlPBy|_F~Z~IMLDW0pIg_^ z0=AE;P3YwztojTmXDe8h74FvRn8i4jX~7Gi&kO@**or3WuA&w#opZ|o8ncjWfhTC9 zn6@AdpX+6u@@O;Kn~ZD$1qbJ*1eHmh#u*Vca8!So(@0)M18LT%T&$pm;b!N!K&c%m zJCM*eaMUIhLzSg72Pgu{BG{7l0S6n>c6MsuX0M=u1oM7p5#)Hf7Va$)p_q9uAMc4&ALgtRX*G1sN?6drLE}GV^Tu-ifM#I3sLX z3!12jT|fXi{U{-T>fSV+659zL0h`r8vNLqzkHurHI00fn^*uWjQu^ zrJK9@R}~k@xpN8J$gTFR+&0d+cq=3i0@}y!Nzlhw^Wdnp^cBMTlKTW(cH<>}IFGe` zEKQ2y0CuBvF>LS*B$)`84`pbw%7z?7R6$0IJF=lRPlTJD!aG#?U z?&hs{Ht{0w$(9ss^S%KfO_oAGSql+3Gds4`YF#bP$Z62mZdGSP3$+-5>?lM`zqM0! z&Xvn$rsVVx-^R6`&avK|Ayy#o7i%z=*VS(fFkQ)d31+UY0<+BXteF91hbEOXoq}>F zMozj+QOCK~98F!p!=m;l4cgxpY(@LF`GU4sk*;-e8W}p6!-$0*lfh@;nx*YTG)2~3 z02O_)F+$>~gg0&0=Qec+hWkGdF17DL`8O$J0DObqT!NE~b)EZCPQi`L08oWP?6o(l zf+UC)k7hTdUK^LEHZi3(#>@LcGyCH3ye{#~o>Gi@)u8=k@*S>H=Sd@VG~K z+!6=3#KkS?5lp8){sz0s_ZxrX&p!UIec+G&#=-KDw_eWa;B?c$Y9l*m$k2|G&D<1% z@8}nm3ta&8x?dL%y@DHbR5&vmI4B_cpfl?OvS7LLh@s*jciA{;PM#sUGsaLQ91zZS zgbdKk47ofckb^+ubD=+(g@Mo*I5D~zj3*G$fnI6Gu*pdQZ6Xu(K$BL1W~kp#kHu=7 zbtBZMgvaXa+-3*KfqUxZRn8nWpxFqxreT%SxL3=Je0y28uPzC0m3S{zg~+qaX6eY= zOv+>Of2M@Rvd@&+G#ju(gj;a=rOy=ZvyeS$U!iIS0vi|_%8rYfxUg9xF@Y6rCp!tM z`7!qzonzca5W6pFL|gmG#Q{jHwU{y-VFLxA?IbLI1pvB%WalXgl8yVzjxtb=*`+;D zWZ%nXa>Ii_X(4KQCNe?QQyGc(F&wVSHXR5lVu8j%Z-XNCu5+E$h{a&`5B7jO9^2gV zh&ZMRah!31G?>mXlKx`+*G8_7izcs%Ef0!R1|gh5>8x$_u`$<{f>s6y`8Ce?)J21N zjH7kM-dXuEY>fO=%=<^{SAOo4)0uS{R%hk!N*I**=O^Y6-=x5Mb59!LC3|$K?#l3r$XPaPrv!X@##w&XyO`E zpx3~x`Mg=_JA2;fUk^j@JASq}Q($=fOfU_A$GoK|WP1YgM&g?4&c&y z1?x=@x2c1ht2JC%ZrCb^aa>RhhB^m}92wU^2y?XH!PbF@)S6N#rzM9* zD5VMOy$we3_SKGVBUeVuL?yNEU|hfs+$Od+qzRG8;@Pz6QLRg~YS_`Pfm4~O4e1E8 zPLC4Z&ZvSGQ?^0dCNwK0WF;^qIgoTniGz!9NYkzjIvy~&lk(({Jm=;U!&UV9lf8*v!GZN@k>5LOJMNX0L5?)7DochKyByTy=7 zB$IJ=4vo0s*;!598H5wvZ&pCeJzj&D)Khjm$v8D13B0LcMuIh- z;?yi~dA(T^_fuIhCE{78{;awy+vL33ESEQ*KRNk_pXt{pcS@i$5O7<;@jCoXfn)Ri z9l-&WRZM0?X!thHo;bWM&w9=M17rpQTVQ5EOntS)x{_p>*&;7f<_;Vj#E+6@q z4$D+KEL@L@pEq{2hq8DgwzdtU?u}V4fYG^20N_p; zz=&Y-2dS$J*GdfETEO$8_lOJh7s?X-{Bd>L-3WoTth-z$P&q?lj!GqL)%r#av&b*Q z(Tksk^{Eh2J}zd|FV-ahOy*SzXD7U&hrygWh~txFdk=7BJKuPyT)sLWG4FdEH&-&% z^Vkr()5gD+@8VA^v67MjIdF4hiMh(+xIt`6*8(J!vF33=qa$z!GSUucg-$_kn%$>& zgZW~M25A@BSnsR!+0eaW~#sfosrwlFXe z%oLrUL=iR+ulynP1h*dnw`Vg}5UgzW6pZ?mP|9>4nas7!mKKLVVIlT0?H{N&UO^;xA`ToPjwjy5ETT%|hT-t2^cIR(U=xS)b(1dYyAB)GMEs<+op#7aPijwLqJ~ zH&|~v%muubQ9-L!-t>i$e6lKFxbJaO*bs%_(fSlN$L0QP4f*7_s$`eYP$M))kJ)`sB4Eb|dTr}_s_4d*^1CdcptQvcWjTNOq#jKN zZZkE$ZIb~Ms~eTKQaul5rLYI5kHe+omjIWSz^nsQ&d#E4a!g)a`%Azy@oG>wMGmq| zLC_snXnXombOp8Dfge9(vLkI(Ofo`T(_oyY{85%=?$khoa&KMHP5L#Zp=gnuW^~$K zDpSpyg^n8=!(6E0>hbxaI|Km-2_OgwsS{%m^(g6`4oqVoe51z6JD5f0IEp7lU0gz* zk*R9{*XD<9maP5;HchG0xuROW$|yta^9_+Js3KT63F8WZCIX^dX*WHmCoi&bQN)Kb zmaYG76KGoqam}o!H(K{z`_gP$+rlbkKv%jo!#IXtg^@~OPE*)yv@xAgfj!B_X`^)# z5sSvPwJL5(zGv&qvd_d~PCfkcw-6pbS=uV08%tYHY(`2MxT_L4Fh_M_q}aTfv(vVh z_vD*QVRRCUa3rubj(pZPQ)-Dtuh@D-zXA6$DyAR6P7$l8MpuFb@bO)PR-M<4Fj-|C z^rlnbOxgQg+Ouzi(10_@dWFe^<&4#<9{m!y4v93}V7mdPuv`^HH>xNpUzeP|99pQ* z4du4Z*KI7`eD;aodO|1Q;-SNPFaPM(2Os>A`|iE>9S>YSc=P>`9(ZU)54`cl z@$uE0x1L>`-g#=1*Dsu%ZC*Zs{!SSVw@(UKUT?6lpy8wtu>y2A73`j@88pMHG*JP_ zaI&h~s`9*M?y~T;*Dx(I5kWDH{vd=I)A}*z6-M#K?_na$6adDVc(5bwnATi6bLE(N zM{vG;0P|&{E#(|PzZ&UYacYAR<-z_CVg6#luTRPj~#(SK3hS9sZbYUVa&Agv0 zbEGfZKskoLxpe&cwZHMFKmITLiTC`)gXR1Gt;3uSFE5dg<=1_4WWf`cHzxNph1 zx@757%O4aNa~o9OL)GMwaVenzA^?Pe0F6L$zk(G?#Yq8xaSF}OfpNYrmn47U0f4t$ z5yv;*E~Mbu!W%hWXEhn6eW7>R+K*|mif@!MnMXJ4B$QZiY$hY0ELJ8VFS4Es9a7n)`M_kpz6!qum0y z1#k)f8Pk&EGbhl_FY35u(_SK{ECgO;O4~*ac-$u4jL9^Ru~YM?))O`dS7CGM0ic`L zgS;(xJ$bB`vQ+!vd_rBu&z(YpQ{ilGN*()N+P%|(XO>KiV{4}+oqE%-O@aXa=8{>$ z=EmuCzzk|@T0pMz!KITG0BZsq&;0AzGx{75a7o&KozB^$bEVg`W#gdyLaq#-1ljyr zAS=5u#G>Hv#!p#nQ`7)(1<_*e%siqhDyeniA~dszT_@WV)VXG+92wxNBPg(qZ<|@( z=QVhrWlq;qxZ|=0e)7c){Pm|2Jbs$O{4mj&1=vDlqAh^vqGO~B8G5s~#f!0bXFXym z*Y&m6g+a_gvMXf445#S!6c8GxId^Tt0n*V!PA|^H zoy!Y%eBbrW>Yc(fjPA!c2;h91#V~Us665vt~ro6H!)zxH{6l#RQzq_!Y$zgU&()`CNGZC!!3DjD-Vt0^Yb^q`02ARed4eE z(g*&~pZenm{XOqF*i_DP1vkVT4v8tz8|PH@q^cX%a&x#`!qLG&;UJvAS>cA9dRPr5tF-ozo;bQdp$CZDSAVo}5=mk_vs@tfT#2N$2R2!5mm}4-so9mLhab8G@aD_JAntkr&o3Mk+&0k--5?qC zgJ4grf=W5c%`B$Fju>zSXD@yP?tJA#KsS=eBv!hLNx5n0&Tuk=!ypa;YN-Ro2?`T* zu#Jss+b3yjbHQeoG1%ajo;V1nT1%{=6Nw$!bS`p|l+Z%;2ubSPr+n`$E`#W$0B3c> z%oaA-3}a2XXYRMSk?wVjEm6cI8{!3XnL8%GvS6&$mgSTrTo6acRQXasT~+}xSSyhSxnkd#B1 z)DE$Dv`fM*M$HeD*T~bMZ{U|u^&H6OK|E4p@dFw4BF|4Y&$1pA>A4VB)hyP?oH8du z6?B_&mMFf-iAZAhDLEcCd*gO`f(8K1vJm5G0fWZGt$nkh-seo66L(e_zVK2HAAh-n zk6!EGg|&(^`Ml#sZ=85tR%JazYX(=kU!B^9UA{*%h+d_wIv z(*YnKvm)lx%O=j&7M=MvNBHc=Ou?b92qZ1u>*9uJ#7kuL*_o5bw)BG`H+}C_9^G%F zx#M)EXz#YPE$-C&E-=74xicMQq_=JT|0k$ayf z@}BC`m=wy1SlV(G>yoMF+yvHI>G=kzwNbBH!jF(iF&s9q(eixydyZXRciP zOx|(cwjRQka-_fii+}p5M}Opx{e{DOf9l^~Z@NpHgTjG66U8wLXn>b_djx(2U%xC1 z7`a@y&20Pk?6hzu6Py&#_42B4q8A6S2o63{1!Kk$vjtTJZrx!88Bva)Knbfs0Ssan z&W%K0XniIq7^%o$&<@x-lI$`3ZtkCePz!h9rfifElkA~!AIADo+4f8TKh;C-)yvcVyEah2ekh4cL4 zNwwu{mL#|%o4hjU=EcBHxnEb)b*wN{IH$)?!i`Vy}V71@-to@R~%uDorW(7V(bIq)2@n%oQ zH;JjVTJcqBlpE^=PnHelOMPNdHs26~89Phf{;i#*)w0hYQ{n^VGOK6w#m$Hvchqq!^~<_W*@>Qw50#Q} zkM$ImJ1e7~?2(+PNWpCmnh2OSl+I5Z6K0mroN^^y6@a%9PP#(>FMGZS#^ElqP4mb*jTkhkPX70!JA769$E|w?eJ=M13HbmH-@7(uY@!-3`fu2fx zYEWM^or}hw%M&NQ$9v!K!?4rF@8_*o%Zum6Jw zg<){iCy|j=PJnX{3~1Jfsx4lp|54%C!GYKcE)cB{-vqbI`rQ>k-5njlk!q#av=(51 zt*yJJOcz0tv(mJXCNsz&6s=6M@;es{8iX}~CEf)aNH*?_M3=?h1UyV$((#v}Qi}_X z$Xj!p9B1Q@OZSn2H>-<*Jtk_AKsl#d!Y1Wt_td)6%&O6-P2|_WGb#`Rc=!n5z4sEl z?vUVmIgbAJiP(HT+o;$_;JjyO9L(HrJZ-W2Y)%-C;rNNa51W_1%u1$}1C*Em7f#qp zhH6zFW$RkK{3Vr{-H`BQI|a_w{8Lg}uodXk*ZrE$`wN&-&``pxbJER8(hZV{7>aFa z31>2<>Pb_N*Ts26n-cv-TDx+(HY(t6o3V|J6g1l0gb`5N!$biHh0B&ytjESEw?G9% zASU^Q``qdKng_xYrv;#$9LnZzy%AheK}2pRD>l{&A{LVZoxHQ5E~hDpMLXDyd`hZ_ zM=nQ<90&X~25ht7V_4fI*ip6(t1?lQd)le*3jn7AFW?<{{0rB< z(>2N3Pq@BfTC$Uqg>ph7%C^0i)z%zp0$NflVkW+hQC-_mzb7Lh7}gnS2bcM7Lj8?e zxqQAgK(nGzKZw$<_El<%&h>9m>cK)=B=abvaLr}D$(mos_(G;UmW{n`)n{q%6b(d} zru8@zFNRGM@y6lC^nFU!InwHQ(ail^INA}9;Cwo?Biz(`A$!x`_lZ9he%tRp?;3GD zAI{!i)Tf?^sFj}S+q(fway-ccT22I0Tl2s6)iz`s$^bI`|3V}09L$*-QR5l#E z4&)sHaqt}jXV(bp@Yoi>oxe~TWRfDVWiDl0H6<6LlO~NSxllmqF|?IeLP4mv!8NOc zk??rr|E2<-fAoHUH(VB_!Do&EzI9uUr`ri`YfY24wfPLa^KGX1l;k5z zd~yxj<}IGu3PI0OvR_ecPs19yr*NJSoTqOB>5r6M50f9qu(&udoZ%a!PKZ zE1bL-yaQ;HuG13*?lWVxF*jMb{(PifHyxYO9=(_wOmV}c+;x-vWwC=Cxqt06p>5WL z6Wqa=A|+w-RW5Sf#8j~Yoofb)*}iR7x5Nl;A}%=?GXsofv4g;Dkeh%Gcqv+6H1C%3 zfxIW1LmivrHeY%Rtjdz4ws_rCrIkxJ8-1G<+QZbuUMQX+g|;iL)VuBFSZ>!Wu#SLs zT7rIR<~>cao`@9*<;+`IJy=@_;$@s`usVnw4TwUY93!yv6g`vZn7a)On0ZZhd2eus zFBZq0h@cmtoG7UG@V2Ca4SVehRf@Ki$Cw)?_22AE%MbKH}&<)N*qM4b2>)1irbnh0Z89)%s}IhQYm_)~fBQp0m>^9e@>71U@ zum9CQ{o$YeU%uxb93DRUKU?>>xYUUSi`+Lt$OSPONEfG&r+UPCxp14AfYJ#Q<_e-; zUiAe$tl>Ug0GUgQ;0wBgOFOa#8WghS*NWWE>8xyRT_fjCgA)XITdT6tMnn~%x7nyP zr}fl$?Sw`!iH0+gzyYXAr8K*SoLQUjDzk>likw30^Jx~q; ze$VTw(qM+O^8ST0gm2%j4pT&)P;`Q*HM*s*%3Q_;+Z4_#+iWfXpkLpFJCFYzpqo#^ zW>q#xeFs%7Z(VX-s5nj)_o0P==gQSeYG0Z`O=T{#fUvHaRk^O(j%E+vDh43POdCPr z4+%s7@Bg^wc4`$yjlB9cB;W8Vuu;Mz7*(aB0)U9IvwC9exl+g z8PHFWObmfj%wqnJuSL?bNs+`kO;ft1FwSMOl@*i+`fH#aF}#&K=M$@lmdHkvTGUnx zDb`;ou(a3qwAQv$8tERP-xT`I#0#wKHqUYxIreO8j|zuCq}};kXj@;>V4TD)vUE`f zv;8b%+2&Uu1q8nSfsYvSI*DF__L9ykq6M$PTpm72Q!y0~=0)Ywc1~)gO!f4SbrE=i zq3d6$L~$&RTi)OqgQIT%ZZeV-s3Vy&bpoJhT@7>`2mm@ZV7zeV{*~r2{@s@ETv_HicAWM&U!xQ_O4GxA{WHIH{Me`d z@?U-L&-~jzb+EYa$1WWp%R2U%23%;fEFlY`fmUFEw5+D>4ovZ9RnN}hc40SOI~5J> zdzVKH29_N_lV29)7=wzo+@G&z9NQ*`$0Zt6&N;;LpfgQ?g>Ze*fl^auX{55fYrt3H z1!e>qAfc9)Dr8CVjJPU?lq9!kBF=zevnUZMm=YZ$(lF#$kpUrVhw|xlhXS78dXF4# zf9s@hpYH%%JL#Ew=tsoZh6O37$AD4|)U)ZqUSZk_?mYeX;Lg|oK>^ZbJe*t-D-`8> z-7r=2cGZf8v7yBSul7bl!)UEOUH`(GBHG#`({g)oC>oTh;rZo z;-HuQ?!h2W4&x;ddjAF?ri~(7n-R=|nzc76_uIE$dX#Q5{U)R$K(#qh$zZ}Jdj8CK zm$)ssXOoB*h_aqokI>U>In?M?9+b#M2e4}lHq#?ee-F}^^^nK_xMZjxjP#VGZB!wv zEo>CiXRLo|pw#9KNnhnr>&bC^^6_ed0*p#XEU^eTRa=-u(NiFu#AxDMa@qMouW2PP zaAlTe?6MX&j%6)#_WtCts=YyARzT!y>rd0kFs?aT#dL1?%IDu~b#N;sF5^t9SgG>X z-sb?Ozku40rkp51*~Xx9Z2>jjfvjgDm!WB>vSdc(b*HlsBHS=t-_=I?S31BpXl-?Yv2q$JrqClN{MWjoI$@$sb_?5qMnP6;TC z)4I7v_ECcCvpWxzH*bN)d8ROQroi$Xr+E%Mk7@55-S%b+_hTRz0ipd_SHS3Z3~Z;q z5u69MdGwA(VaIU+&Vy;1_{*c;sr+doKEQVHja%Z|eHw+0*BBhwyQ%N-qS1F6#Tkdi zQM_?j+VV_0$}?BS@0l69i+-OD6d*JX5yHWuEbxbi%DFq^Men%GgO^rS zNoEDFTb7fzEH;4^cS~dVF`-C3TCr>)rdV1Rr_gFu8sp|KZ00q&;Wo1IT%!zHfndOe zis4+T%kws_8L5rZ7T5_QwzL}HZd^&udca|if+MK(3qx6x*TV>Vjs9Q(&%d|uVjj6i zEF3&{lHkdkR5mWvzN+U8FseO8?tATv0zTH8HOnSfLVWVV=i&BeegX3BXW{JR5H@RK zfU?lyvqgkwruU@s=g`edHGP&OEy0Le}HzCb~WIZ1ul5m|4_Q>5Y( zHuObC(#*wa$-Nuf_%Rw4H(S<{)_)c*(p%E-6x!U>KU+`8exrBLMb23ikXSbp)e?%B zlSY66080XJO{{36T;6OaIwh}OWsj3>;uO$#olicZaGIgOjoFVr2uY9Nq19Oiv$4cM zY?yT_a|_Nz1``DUm7Z;KNQ#kc^CWAb`i9P1Mi>#@|ML!9vjOhq^bixP-kj>KLb%X`ztD zhC$LH&E`q9NYdTtdu`cVYwHfQ4FN=%HG=32fM$EWiU^fafUVs#&lzn&YZn_**KX@uNSpNXys%{&LL5>_6dzMF^(Ebug4rmGs24Sds@(j3-f~Iw2vZ zY#&!;T|Kt0*2&E~DIr4~iIa~0PF79@; zN$Q-zImQ^8NBc}}O%|@(l6fRG{z6LLU>_39_GarS#TEcpDq;LcSB-KN3vy!p| zhD$vwG$pM!v58m)O$q%(V51sKtc=)!5_)N~TEBji6|=Q*B>+p?jl(v=EiD??MVuK4 zWBNHBKx0m|0EZY4JslG=P(ZIXu4`Eri_{cf^;_&~0Z3Y38GJ12BKidhnqv?hC43xj zAQS`HCef@)%7ILwJ}C`Eqhu`FvA%IoQ5CurdPTrpljj4X1OpDL6hcxY`7Rb=Ea%h| zBfZsKRd>)&@sy?YTz9U=jGOBKIas!6Ws^LOgKJwJ+raRKPa96&EJE(d+a&8aKr@MG z7gttrgU@f}{Ca<(DCH(hp}j=O*6mp%fOD+tf7y7lq+-t<98^Zb(GQjPmlb%ME&Yy9 z7RbBVy#9&wxd7kf8!Ps@S>jX^jIV#g{p)-0y_~yl!AQS~QS|CeCF>BcQbng_qkQM~ z8JwQ1%BHz`*4hAsrIyU8iEh#y;Od61=k#RT!l;Z?F_WaF&AJNdx?@Ie;=CPj{&h{X zvkE$X{-qmV`Y)fP&1sc^u7CHGzsve-_m}mX{a(_)%ldnyfA#(_JRj)qq2AZurQX-y zh5p)o{p)7_(!?KzzsO)p7bX1=4JDhkw^={ky z@pqhgH??q2#ffoo=6P3M0Q;5eRlQzq0KKhqF4~Y6xt~jKTllG?qN%jz215LfFkhcJ znXGMt!}6RB`{K8rUfp>1cfb6;f8ytVn&|SIczpyEPNp8+MGmb2PQXSC87QgkT?R<9 zS~CynPA{>S#+g%M(j*H|7g_*t4{HsOI_yLRV+KIL;6^0c0Hy)1r`gI$j*SuGVQW}K z7!gke;NEB^deD2j2!L)}Vz5nugJ6KhX`Y(X5CFZksis}q1Px>hPI{;;{Xbqf&lNn^ zLRawo)a|M?nBlaKT-nwjrtoE;lhmwT700MbpnQ-_ci`67e+iDi@E6!Z#!2BmS6NG; zn4|QN5Y)DU%$FaP$rs`!b@tC(Rch7HN8$%s8 zD#CyoAC!yerzk0b4Q>WP9S%<_I-Lt_6@)^u&@8#hCM#*VGWh&7JL!yn3~YfpT}gv^ zEQ+4VOX_t9n_AmMb5|(0*?7@3Xt_A=QjodD!FTd^sOcGWHtb=X`A$!-jAPz477mY&y&4YSnsOu{%2q?<9LC%mX+a87w$8>*dW5^*Bx*W${X?c4Q4XSa?|pZ?7+ zuD<>88!!z@yKq1LHbwK|FpV7I__xu&wf>Et?cGZ6SKv`?vsayAbxjaOQU^%&vUL@wcUU(KIf6eK*Y5jdwk} zp0}m3PuOw1dW}KsIIStLN;7$HqwFw|&$jP0QKr3jj$i)NZ{GgBkALX@{rX4#`+sWP zUwzM|GG*2qv7lkR4xSc6ubp{C{Ya}8=kk7LxV}fp>u~#w%8QF9E5_9Pl{F779u;Q49D?ieZwqm1c^Ke zOF5W6GeC-9rokG=4;pY$EGX$KUk)3jk~*n%3{?_p=C`CN-c-T!>&ovHF-`Z(ae}As z6cAm&bLBjP*OgiuY9XW@q#l*PultR->*luF!0Gd!g4>_{1=yUP!fJJy6@EyCBo`na z0fiSV1k=P0s>o03dIr(e)LloisbIieU9m6qIJ_#(t)yMkp%$x<@=blWtagnBJXcxV zD*mzQRhh37Z)K@|TPh7uxk?5R)Ii~oPN4o8QwUoBdVls|QkZOPoZf-+2yHy*IRv+7 zR!(4TpCyZk_R5JLAFZ3s38D8=g7R+B39wj;av_K3eF}OJToe`*3@(yxLdd03c>E=u zR-8r0N{G#zTpN!*6C8A*i$0k(i^`|%S-?Snn~7~m3w5&j(b(qT*)|}2o}>fcL9(tH zO{BqkLd#XdVs3MTInudJAWRO-4A6s*X*G?fuw41T>YdQUW)|QsveC+IjYp1es|


zW=Si=jxl@ z`3H{P^8P=3`SR-?x^k&II9Qb9AuYOgzXlA6W*5Z9O>*?F(m`xG#*kF&2 zD+bk7R{_}>PPJDp*1d^VJYNeiE_?AaJ`gMOq%_Zlh=F)T%Nv&aqSfsxlh$L^XioVw z^|!9kjo*DHzxe5ww9#x5Mf$c1-|F86hKqp#Oww;L?A#y05Qs(^-jD8Wl38A3z&QtC zr`|z$52Nn@^MH3M4H}g_PvkKUKb02Dgn@~0b6980;TVUKUTYm1(-99SQBN;%b92ztd-9$?egXA=ViYhdC z#9|6Y%%~A{3EyO!#fgBq`6lOJBQ;rK)bv=7oJ3|%EQ%QiPZ}{{;y^GkO!tXScUoa1h;#DVNU6)4<61RuI6NKnlj>lp`{RO@6z{D6tiLQ5Us972w zj0;9R+KKhIQ<+>+WE{s4hKXDMRVy5wwxU>R^^mb8+sLy0@*tniGVNe7Vdn1@7=FF!XJ(|FU3NE1T(an&t zDLZPKi3}kKFgHsb6lR*$iRT~&3n!r97g~8uY0@_9oJ-fNv7}_MT@_$Kxvm^n3d@_l zs;tXi^)kzL8x}k44qBY3fPwim*CQ+ zE3mrx*}w9MU;PjNe#xgssuQDbUteGT9>VU@!&e`C^u9O0=bwD=%A4PJ@14ud6)wt6qIH?oo6`b%*E#j4x!;^+LCY017uI#ZksV-P{x;Q{QdO#0 zmFlgt97C?kz^^tnYd>sy`75hHUwPk~>bi9!t7)I*-Z`$7Gh5Ern4@dJ)VQz_tZrZk z7{?&k-s{NoD~dGG%&&#RiT7hLnYW}d2CP%@$7xNyryX&(r8So~?T9~qmuJ!em~M-y zG{<4)-t8*SEBW2`+dkjt!t4s`*LOpS5HI+=>;0~8`-b0@?-;xqMUPb7aUbliR|Lyr zFbos#2)2WE&iCxbjsCy+PyghH|K)%0hyTi@!*~Cy>&@cwQMItKQp+5WATt-?%nwJK6^ z@_!9Ia{g@LKwbEf@vO4C`E6jE6VKTRxB!9#W}U)XQMg%p=eapnV)@?;eoQXrf`y~_x`JijQNZ*2?#poXuyB+LqvqKv^IX95ixoWUQL2$# zmmlP|G7p5=!FA;pZB$FYie{{ipM~q6{r|w`g)f&)&k{D9g_o~m_rYSPRp6rlFSAL@ z$Gmz}UPTc$=CzT~Wu&|=w?MYsz^4aU`Uy~7Usn!x71zj; zw~G;EF@?n%h!rU%L4B2@jS9LT`M#JWXPIcvZ% zb@FRtw?pN?bGtO5g&d|k#i^(qXSUM}GLW1D2?6L1rg0mqSw$4GE-fmJ3vJ`pGbqO3 zUfuZ0RuTcyHimd4@Ow2zra;cNoC0=5VJ+!KPMnl*X?0#DHT|b{(m=S=^2;XO*rTPm zwP&~0$~~4%h)y-L-TZQdY8$T>uHRNt#sNiI?=qAWR(N-ldmd1P{*fi zY_(pYZzU^Ta#f^89PFSDbK5YB=!nRLw>2}9oS5*&o=;M;GXbhY6iD}!cGz$`aIWH= z2wcsQUv^+-{Y;Qqf}*40gv&h;v1U46lJU3c7zmax%_7s}sPs6RQl`TUnIm%j%g z9b8@B_sHvEdH>~ncCzf(w>sEVh49*#40fx4#--yGQGy%+t8sUuSOLLM#9%#o z7r#Xjg$UNh+{-bb9n-(@yIA+}eZ0mrm}bI_!%qETDEByQd^hzB6ZbHx3(e#k!_v&( zTv~JKO_gK(KBl$r729~KA9tlW?(<#w$1yW5!`w6MNRKY?e(Ux9Y{qWfF);Bw{&tZ@ z-1i!T+&F;7c~1=vyV91hyYih&lhbl}N!W zyYWTR<4g<~0lm~TsD_C}fai3XPNKGQrTe*HsGO4TV?qlMe#C`ErKC1(l6Qf+uem?sEap z*9+rk-M4kUZ4_)11ED@3VgluNUFDwZF*SPyJcb)z_(eGT(%*#YC3kgpi7R5O*17^W z6>;gI!6h(Ih^9y+c7iLIUub)!1MyfWJ`L8C=;ro#s{8lp4o+OdA9sDG=<;qJb)rVdv#n2Gp6l|&bTl^SW+EL*6sW zdK|3|Vpu^&KrN37#(C`I*}U zH%>CU*M?B<>~i1noq`|~j&M~MtkyEvF+qO|Za(>U;Ks-POkp&wV10JP;Ll3mxT^wu z?J&Cu^AU5p6tW8^4MjwQJ=*mGC`mm|3g23w_@acZB0+33m_!y8)vh$>r2wJIXg6E8 z;2?;(jB62V$ZRrC^}uuhh#n_3 zqYXTjwNEgfg6)n%dC12YfC)9kCHYt#){Xy7s$&&qeiW53(T=2jP5Qm+GcW*@ z2`DEG_Fn=OmqF+73imdF8uHO_2J*$`wAH%0a5w8cE+d?5Go&IMq~a&Ket;B1=Qg%> zV+%hW_(XTbXWjVdx>9A+dH%ULhKyT1B62fxCL7Kt3H9@$S>|Au>Pck6JM%tiuIE!| z|0Lr$Img|KmYdwXEE=M?c=Xn?A$&k(rQ1A~HG!ZxMUhhkKWSqJMOioYa#~U2cHI&d z%LUNcwNF3&D;1&=w(0Mj6A>U{)Pc_I#N zNn@N2!fxP0Gxso4hVl1{ytm6{X`YBT4ucbM?RQ&$<0#$p3(7FhariX)K2?UPxH$7W z_iirjx$?rqySX;n^^V|ty|;zmC(W(b_X0p~d)~L^ETc9aK|k;|0>g zJ>S)9FyJ5m>L+i$?a@abyZ=p(765(e&AeQzOlz-l$)@B6s!*r@hmzbSsQLgKJ;;>u{@p=X~oWI6XNiZNC6(vh!>o zgvb&|EM+WZH?Fjp@gla_YW21HBXcalff;kjw1X-a8I`1p6Ab0u>nVn~lh$-lH2teN z-0Wbf+K?tmBcZp0dAx2W*a(Je;&45To1E5@+K<>;mcby}5k2_E&c*~g(@=0IQXHM9 zjgxtE&kw#1rm2tNR!)Fcw{fhtp|vtJ(95_?Wo5k%75pVl*Sy%}q+nFJuaJfdh|lZJ z!6>ThPqXTgz&NWQ;8rr{%@3*#YUySh`z{?V^Sx8h+%C^#^1Y9Tj1z9 zwqx3o-#Gj}eFPKvjlYfS0yANzo^eMWIFa65ny@8Jn1~M-3^x~M?!vnW|7wJpy?&4Y z^tM5`Ev>mUw+*y?2G6z$F?Ed>xw*V(6n5WYRDan0D;wqs-kzQPt;d4eJLs?60$Ht(hoG5?@ ze)g;ycvosA6+wU|($T7BKnT6c(74hgurlB%GyOMtM+F0jcH5c`+nVJ?(xx>zXlXyS z;s8Pv?frL6xzTLq{quP&YvfEkt!i-e(s@@E#bLyMqy6rcgHpgab}6 zc>l>qITeTsfv8H6>|{oPj$k_H4a0D{w)8m-l?!iEPX|~`F8=OZIdS4@i0cg zF)-NX(>6K?jZ^A#i%(v(2~oM_*s(PbGF#Q&f1S*4P2ah!3ii-|sC1ZEhbUZJ*;sU8 zswAC9x?Tjp+v*~meb8}%s+?(dr^N*}g|yJi((E+bCdlR_Y5S<{X05o1j9}RKCv5%I z>39)G^4vLKn{_Uef_hVC^)*q&(yC}iQ|8Uy2HoMqfCmqO+u;K(zpk^Si<5|%HN6Hi zp9v<)rE>+9tG%ceURE!B=9woy^d$w*V*rSwXP9|!zvBTs{x$}!2-7x_=WHl1X2Qnb z1x$l;g!AA!ZOJ?BDA!zG33hJ~#%(b59O-d4YHNV=pgp!{WOj}Fa@>EG7ER<~-yozn z{!OEIc25)GW0_zg-HU{oy6`T)&3&i4OoQM%aDA@<^seyx#NGC8ZjfvnJh&zNMe?8f zv&#ng6a&%z#si+Vl#B2C{)`^~^sl|}$a~-a*!>T`^Cu}U?=xG)ZXQm#(E~_=AxkCB zk}xrsr^<*X=J<#u){cR+DAb(N64pt$(Qd!l%}bzHQW9)wGhx$g9lR+ZZjvDq07oF% zo6M1P2&>JD2*V~r10z~92QEWyCXLoL2GLsXiZhPNta;}>6*vRD`(A>p2LvajO-)ho z>01Oh&O|2Itt4n0Q{cu69&PI?=R;yWrB}k;_or~@xsSrN5C30b{rs2U?ChZIld8?x z-0A`2fza}37mWZlH6ZONVQ4LcF5JuJfm8vpb8-5dq)kj-mj9({1q4*FPHdA`D<7bz z6(%NBF+^w93lNy^+XrP&$|h?Y0kXkVKSzM`^di2;Q0L?#BEFHTsdjCQQJe>%y(D(? zHaMKh;Q1lM(~L9{(&~q^kOA{M-ZkyejMCU!q{bQV4MdO`02SIJc zlp2@@RRZi3U^8b_lU0B#+Oj%rwJ$_*SVcOZafo>wq&D9)l1PK6R)@CU0JsfiXqI|x z{wXipHxq5M+cp)}C&u-*erP9S=xfXvtW(=fgLuvaJ19~B-K$uNoE+7li^aWwM?VDB zIEE>|y2BWCD{mtH;-Ct=Jxp)Ilov&QTHCv>vxNiQuU`7>vrm2ai!7hj7NQ8|?A;W& z8*^v@rh#n)z++Ik&FRQom@$yv28`#@n*+pSuJr=u0Xt6QhcFGC=l-VRrHSV`5DeiS zC&G;5&4nK?Xydr!Z~*5QrnsQZg`2yd1Ke|QrWQq-iDTd9fGxs)7w!3dpY(R6buNu= zpFkG~v(J0n5oe!{iuc>zz1nf-2KHPY_Dnm{7*C|BG{zHU>O1Gv_dR^|b02*6hu-_X zC+>g4Bkv|Ue1nyMEl4%HPAx%u&o{L+IN+AD3xX~Qm@bQcRT8TpdWm8WxRTLL0ah!s z|UrH9UF@1KU|Q_vZjJhVqaoc~#Px)q=yN zGFu*1;QXG#b$Ujd1n{;uuw+Q~;oUkMX z7ZnMJXsSqFSMiW#wa$=nphj;e*X&N5bYoXH8`Y6or<`HSn>Rg1@5XR{-1m`T3ORG@i=cL-JmVUM#r=0koouGPq?M zGC&M&ZGt(x<}8KGn<)6{i-k`LJb_HMTgu%4u9@pYSNxM$T0U(rvNoj1>DBfgY_>r; z(5dx}bM|fgbg^T?<_JM#^5fhLiyID?M{CC@s1gKUv@FdLPHR&I$;ve!0D5IA$bc6Q zd_AZw@Op}rq^-N7M_Kln+epV1C{Q+wMm8qoa|do1oGc*typ=Xws3*e8fqwBb&p-8% zuMp7~)LFt~Zt)!On**U!A{TRF7>m)j_-+hHw*l=0(;^-T<~hjYwC3uFFb#qeYzNCY z`i%e_V1DC*qi2{1GY%KS*cHFw=-oIROoW4(FynAE@f~K~jjvsxavb&|;bT0Ucn7dw z8NXZCxw?HfIM7q?w{`ZeaC3ueE^NHg9^tkPYM6LG6(>#@+L9)~{&gNdkKe_7us=J4 zCw}L{&%F8F?|t&Yhu`{v42KUCf{kqBm4`WM3J7wh4(F8&1GiQPVPaz6DWNu(&x=AF z1W?P`Q8~LCs4~)G>P!t{2st4EUgj`mSliYlk&}0BCIzmMzHly9Y#xFkI2IXWY~Wr~ z6lN1TSO%8Sl;_Ggy;5e$+wT!2!FS&a1vrbC$;~yww@;B31*=Q$Tc^aP-$u-L&jW}? zo!fZDl}lT>&KtIUT>GQ@3p_tsVw|QN=p48e|rb z-R65nauC|Mq|nNV<7KSVJ*fe~)RZu>ZNS?W)>nZ5SgjS&0WAekE5TYhTASOvPAZGt zdIAPz)ifY-pDn#m4(n4j>&b4d^G2P|$l_RU)4{!vj@}7ul?R)NLmF(TNH!Y^k;%F8 zilf!y53iNVer6GqDkirmYv$RtPe1$QZ+{Jd<^bUo7j+CW7ZY*z;Vh>u_haxpm&aVZ zIiNiSZl^W^X-B>1fOA|J7U3RY9vnxkfD>`j=-c=&UQ_RJBK^5|F!OyJZi>qsc_RRk zESyhc>K)94r3JSSDOR9?HgY3e(u|@-xz+MFmvChzTu8A z<8TP`lfZt{j`-uSb79VvV|8*Xf9+$x{LQz%=g}{}{!Qk6?6hBK*&7BFEZt6KxtCJa%3`z(1bO7-qN5a9g&`vBfm!1Eib-q4}|ALCMJA@r?od6v~W&I}g1(tah3l_wVQf@u-kKpAG|6kzjna{%N zv?|yc-4Z!;(h}Rd)<)n&o%<4uU^g1jVBgf0y|3enCo#h+MUm@G{x6%ALrW>RiAL}~ zU@)DlDLDZR?9H%3kSrEGa@K`OPcN!776F0Dtu74L;y8X&=>5h)w{lkAGkdcWvmXNZ zbbKd2bs=RE8h2DdYN(HmA!~s&XbFI^4QQ8H29ddyVW0dRLoIXtts+;Fj&S5r?<u%t;ddssimw=`Hic*Izq%+^(J9)r#QY-z;;evd9fw!1w*>FnyhHxHi$M`r3 zi!kIYM-ZGwamEYE6tI>Fem)L_bjSBo>BH!LxMWSgrF zc;F59e(4Qwd*4q09^Ox;1(%iMN`XWrA;O?Xkv5ggNNgq3;{e7E`6)TV**En1Fo+nAazhn8hZ3i3S!xIQ~9=0 zQG#lY?%~UY(_Coey9;Q3!CBZutI0um!?-F4=25}ZC zPlJ8(uDX$Cg+VaRR{_t@ei**}EB|{~KmRqh^(@w`Y^wGF47c?(`az@th}?uhBUY<0 zfMod+eIVel-3Dv6^~4aqjylW1gZyPM`Ope9i(3 ziX*btFA4M;($HAWVVMTp%i8yKd^b(K_G3;|l5XabDH0A_dDu<_W+kFo+Te+z?VFng z8H}LNHX2$!1AuB)kxisQ+dP_#tZ`<=fP(;jQh9EqruZwsS<9gu-C@_tH}K7f0(jK^ z#RiV$Yii>PF>Jw1DK1#a(2c1m=BcFNdx@!>H>`GplEM5zXA3mM!Qo zSXt!&NiBwCdoSgH5Z*UpsmbNLeRL2V1fI8jR&#x&PDc*|EZ+d0VlaGdAfrivw?5m+|ws+-Z+=$M2@%jq^@$evps9!6?nC$z$pI?)uhC-`f1rpZgPE_~ZZ9 z+5hf`e(YcTSK#O^e>|P0B^!gehw_Yu_unpyS`Col3HlzYhz6bM}Y&^)PeWl3kF#Y;_w znFN&y%oLPSIOqWPmsxPNkcQVE0X$fKuO0}HW|!DyS$L_?$(PpvH_po6DZp8-ZqKEA zgiwNmcmoO|u0jq}q6mV0s?JfWr46>#jXkVZH{j*3{0+GFkv|KYm%q(AM9s>B5NoMj z{WZHA8}4c$;A{Q1hPam_H|r`xqqa1GxL~FMAOvXUU*iz!wB%-6BJx|&zm12X`D0`6 zY&wM5vIzIl8PxL%c3DwC%W5OC^&Q*DO>$aM#W*&?*{@2hwg31YHxQXeL(u|&spZM# z#B%`CQX=*uXI4_g@Bxh$0C6d!67djW_249he~h23_K+2*8E2m7Mn?Al2r6I8Ol2EC zx?!zxWyqSMqk=pIo9wj3EP)_+`T$KF!hp3&v6~D&yS&GC*1&nxw3CV)AUP-8bt6C~ zoy+cmI2SU$wUj~2nN_(CObR)>sD*75Xh3g+9JYCw;f;J&@fz}zDRXXPCNg5a>_3nY!p74w?1&s_g{IDgrY**4?OQZSI^zO_qpqW;mMPXQM`C_-m$+>c4)Ify?^ayB*xma zQq3k8+0o;#x#qSquyTZX>;*Jec%lE-f7++>wPwV8Tj0M^*8q?{o<6>W!HOV+_3o$D zl}zY%&*hlR1FZ7_c0;0^z(x1~5VbUS5JNQ7!Kzi)J-$Xr(Ttfme-;SDJ~>Z;bmF%`HVnEPn~{q*t?NSB*3C zHck4o%CUPJqs7q`T05#M4%!Yp1Wh6Dx29G&~^|mb_hl>=*392a1?(kO{${3(o??Y zGsIb+p)W68-fKzP)aJ^O@u>uVTDGST*c0z$+WZcO$7EaW+v3o50hyvmm%wb*^1tuOKN>$d<-Zv}a5DFYq4S&iU;dMx`XlO; zAJ;pmgB~mAi$Z_n{neP4Tk!NlBc0v9R|MHlT}dgHpLzN4?Q@smT$pyH$PtDJZJx*7Ym<`>J)+EqFk zob`w2hB)8s@0zlm*UlSs90pk!GPhGiQ}hxoYE>T}OCzHMk4N({;Gg$iMO)uA1O{!O zUri-X<_BYY=2ynOemU;>Zd5YO-CT6nM?{S)dbjuPiu!v>0>)puzqfKr+K*c z9T!{B`c0_O*k1lJxh>LwevfZ5B}N~0w(rY zqfzi>?!^rhmS`<*uS8|;*y|GZdlz$ug1>6z1MnwmQ_ZyBT9t+L*_hL_a{PifDFZiV zAGAGhC3=|Mv|oK($?|&Bm;TM>CQITM$tQBwpVu~@8N0)*WYcP+bzRIlam6LDq`G3r ztZB%|a;j5q7C)=hD$iNdjH0tMpP2G_0Cm^4<2P-+G6j$4spR~@r{w{D2z&5^EQk|UTzCB;8Uj6Gan_Z&++Jn#ueh9AU##AU-? zKMJ^As%d?y{L1@NS!*x>uyLS}!%-UHBI;L!J&T=6sJs9{?NoBz;gM?a!d zQSgA!$2BDvNfMVY`CdH_h|GBk?Lf{$XBIt*vmf!?=0UE2IYam>f6I2+f}}sz$bdbGmnoeyb?%hEj=K-kIc^R|P)nHJ&PY7lkH^}>a|YkvwfYGY z!UBum<$TmEBmG;<59*bBoX)d2tB)wFTaV$1>gpn|!K98i1WEj#S^bZ*KuHl-qDwe6 z;;#g>3lAPA!wXvT5BpRZ0{AM-KFf=K{CeWCiR;+BM4=8K+491Op=}dj%v9ph9#oa} zP9U4qe|4_exXvAB@Le;*M$yY9-&cqKjKDwZhi!8MTzvYH-0)W5eL0Iy9!KnJ<9R_! zpz}q7gd5}YV*w*#AB_?kgJ&!pDR7<~PyS}waZ_WY?Ex=4VOqRQZHEZ}2D;EFQCbpJsuxlm zZ!wjG6*W>AI_{l=L&~8q@tcI05BA+KE_f5Su?aBzT*NPPI2kQvKY8)-jDroyrJqw= zCA(ZU+Kl~J_%Vq5iDl_Ilq2O2oQk-_^T<_`BFB#L3=DkMl8+vb$-hB{-#u&PMihkf zk9h^W)S(W_a3-hbit+A8yQnh*cJ6A>Z2|f= zx7mgMs3!~EHeTQWRKAybtDDWm9c>Tl0%X?8uc!KEd+u@m%xF-&%w3+f<*jYa;^%;X z8mq&eD^&PtWo^jOvi8bDe+w-SVQpuLrvkxnFPNiX)U&D` z+L5$?o`PjyD`i&qb0}G$>zS)t;U_#eV>LC&#tP(p8~19geQ212SbD@Z2YrvOgeXRu z*^Ec*w<;Xo0cv$rKL0NfP*oR!O_eEQsP_|>+IMe>6qdzyA=q;IsI`+~LwelP$xTwW zjHXgjGxBVHsW1^!sdvOwt%p@7x8bOX?A|=d=Lx)aKPGx2?i}y#(g%^xLSjDmy?D>z z##AHWh+EW`&RM-*C0$xIw2mA0Bdn^-L6R`Y8uD?G0sbQ=Z~bXXO()6L9}FkuQ7d66 zYy1ytAlBb*_Scg(OtujX|6C{2wy@52jahbns2k<9e%k7-knT7?n-sCS*%^6#u<=Ud z7_^hur|Fr0|7Xhrx96D9;a`8?>)?DmLQjxfau2GbBFY6fWgz5J0>)&;CS7#GpLeaD zEJ_vtmReABXTwkNzJYUP;%u9_=}c!^gHhbmy4j zisln35I7{XF;4K(ZMMT=tOI0w#Q{h<{#Vb%ldT%=UeB0iWnKCh!%AScqo?D$?}x&V z{_W?0!!96~paPlplXhhv%SEPN<%&XMQTtuagGC${1@zi@eh^nu=@6S|O}QRaU(UVF zEh6OCZw(1Vxu`Bu?J^n<$W%Crl2-7>Gtis|x>{ zb<49J16+T_J-FSP`hnO0L&CCEH9lGehGYjAb83d?1?Qo8j=jF<*y951r1q>eRba2e_>ff%y_7TJn=7!7Gl+!8n_gub*uqsQr9Oe?4ea=;ZS+ zSM*YIC4F5WsV7O|Znz+W^XM>mWT32GBNjx5`)Rd`ZXCvbDiw?V8%JkHc?EqzRfJ`I z?jxpK7JH(NVi1h@VmLN<&PvhasM6@=Gruo1yg1BB%;HtN)OjvQH_Q4I;ruyCk+;Wl zjLB-HfFl}oDHiB{#T+#z{^R=z-ak5N(uueAOEGrVb_8tZtdlhT#K0_g-Iw2I{C{0= zTSecLvnirPUwp^nagm_4UVp!v#%=c3nNy&#u`nt2(?_~D$H$Nw1^oOK3#u#5@*GXK zHhi~B=;Pom_jZwSD*fY39^zc7xW$0c<;^e8>=0Cp&*>|F7Su#aNPsrB&G^FhZ^*Oh z*b1A6TYn7Tsf1#`St%9BeX6#q=s@9__Y`LP$Miv%#EV;FvEBnc!Z4 zz?Zb8R`%_g|1L&(*6$WN{egO-Lx1udUR(<+an`Md6%VdT_Wup=!Yy3}uOvQ^MYZ}QXhx4tR76_POOqx?4gf_-V9hVnP#3`xZVZM$b9r)chgLlzls8FQkAHjoYzE(owca&{ zKQjo@tcuYXx#S3rCHdQ(X;i#aA9^mGtx9Gr+%#yve)#+;-E(tfFpqsGdnJ50la9N% zF%6TiK7%`_z}{4FJZh;t6wgt=Edwvl%=C#J8Fo2PMpbkep-5b!O^V*Ak#u;XkNT0$ z(x-Geh5R&b4*7s_<1i9k-2dK5^Lyw@Wu0PblAc~AV|&q`9IeVPjnUgkYYYew7>oV3 z;VB~zm}E8DGN^rXFud- zckF&crv2jgK+O+NJ^L(6Qfq|7r~U6h!KN~pe3m2t^!sn3&44U-f5I_GFSre7hu8DrpJ`p5%CGt5wI8L?ats{EgROa#s}u+eamnMwt-EDsMLH}QAxNe>op#XE23dvIE$A4IIfR3t(oiaqbQwS3LbAZJ_y^8}O<9nZ=vIc{t7c@3=HBO&or-d{GXE9)F0~zQ@G9->1%vD9o=!5%b<8ci(-Yphvs*!4Vwr@jbG*E5U*3q zssH>Xf{$qE>3aP&<}}+_m*o5z9=G2ohI_1^&ndZaUTHjRD?i^c>64y<2S11UL0^Vy zw(wv4HuO0c4TN`}j-2m|is0}ry|86MMiKj3;F?7UV3CKds8r;F>LxVQ681Lyuedyj zRQB12iEX^)*V|lE)UFInEN3gH^E_behD@R|$8JgBO4_K+}>{Zck8^!&E21hgty)(igOvaIJnx0=s- zGG}P`DlCR}J8@u6bg81rM&0st+I{z-4QqI-?A3p7XFguz%S4N{UZW!rwdmp|YS9Bf z=FRcO!Dg=o^B(-_afYTMHGJ)5k>``2ihea+{Z26T)swJVt9!^pAM7qJX8BI}-sF?W z!(^p_xN$9B3NNEk2G^2NA@cy(D~Ld2O?X;E7Z=m9@3e%B&)J3*sqpeFFPDf=Y#D@9 z|C+&Ge)X(Z+O^cP%nQr9T zRy9l!$bs+23pyFYAKWeUf4T$mN5GGb(TT{K{yg{Lk9jbvca@}jeKp>xjiw%!!+=mf zy$PSJuNoi(>PhHqYjc6QEybCLE|%SajeXV4ah{EPu+>BFsKBq_`=qEl9i6^ z2mF>xUuC8BTFFJ}ERN+5%2jUCQ?AnOLqLc{nHxsxdv~6CQ4K??0o*utr{mindv3NH zn^WX@+t0)|=kt2DI*B?41hY=z^nTQ%;(vE`cg9snaheIt-E~uZX9nrZ@>K#IV&iKio(asW-I^=>QGrg9UMM_u(K>y;C)~4W6Ut! z(EgCR)`1SUG1P%uitE!a6j%*Ttko61rJ}#lrTphSGfuobpT0WGbi2vS_OD9b-JgVA z@;uDJZp>uD*CSw8^d2{rhnCfoUxz4bXOfuQ8oEc{2&L;dL5AfUB)NpX+sLIIzsi7B zkU5%fmzF)X%2*tFjAsWa~srfQ?B@b@#K{O8eC>5yR*OzVWYKxBGXJtG! ziwA1y>wpYjcyC17mrnA~^Qx9Hkz=5T+ltQO=c75&# zs>8;42jP@#YNg{8}Wv&`snPowj!7*G2W+$0zJS2q|nBFi2#P+of> z19BN7qod&{3gC8g9e6~>fT$I^+?#DOYJFc#RvxD;9VeGw7Pk_>P{Km#e@z#9xb3HX zuSHZtquRv3#fUH;AUtMeO_F8>9&BuB3%Agl@?h|JrTilbRWDkTaJDo+X;wZ53Q23C zzE%?n>b)1cG_v>L<=gT1x!>;F*o)z_0^P=(pEQ2(O(SZSQiibSb?#=Y#aSIKx?{kv z*!V*PdT38SXsZ#M{(vzbFIrW^6#g){YBCrGme80eD+mOc0)$mK60+PGrPS1XQQ^2Z zeUqwJ)1h70+!OM7cy%SyMV$67+fW`oSJ#YC$|1TILnjzjFTbi#3wa&GO|8-+$E^1K=E(!BE-cWXsIT z{m9Dw4d4A;_<7z~*QH4K>Fvoj_9mbD{DW~VWE=6feMyQxLT2Mz7hQm{58iPYNyg!{ zqq>XOo+@1h@9}I5;RMfxYeW}OWiP1OA+i&a3$br$p`*L_M1UOvU&A#)zZ7=%RL%V>m_7|mm zA;{JqqyCrZ>+(dm5N$qpV*)#2NKrsYbb#$zF@8uYV(2e*%=C>N{kb_fgpokTGhI{? zby-SS$gAi+Oc~DICgF?@9iVQr=<*M#8(1mdM|6YK>0jDlw+d#ZfC)i0_ zZ|a$4{OQY-3>gh3>lR#-!kprs2HWdjxXT15S+n)AH^44Ae=`GyfyrvYFUs-s3N7JS z77_Ht>9Y&5A2k|vReE%pkOSb2#tRcn0lgU@^4YEIwZQ~LIKg&6eReq6y1|@3vbxi9 zo>--ER9%*!%JiGYi!D`?;tuaUrBRNnis?A|mWV)~>h5ZFjb!`>$8?jtTuF^DV7{l$u7CVCF;W)*&Df+9?Z zql3F8!?r@+Uk216x2iW&Z--<(}K6Mr5zg z9hHwlxL>R_5XfLJc0I9WfZ0Dh{plUdBGY|l*Fg)X#OHhJEE7$8u>zf_Uh=7KIX|i% zJknU(P@_HfZ))&@oF@en$Tu7m4WcRfT@j)>)L!%~h$G2Ofo>kJBd1oUDxMq3?k2~; zg}!(KnYkrEfP+V8YxI7*{IAS#eL?fopPGLUSVZTq#1xEzBo zKj<{lBgk1Zq zN>GtsRKS8Big#=D@igj`#Op_$n7%^2v98BHn48(W6KM=O6 zA;AXWEMr3Of;#HfpOL}r1yic~wHeLIVBKWS;V^~#+;9%i3e!ns(@}$%N1`uZM2W^MH84n9Qn+g=FyG!9Q6&4LP?z}#XCkRQ4 zb8EBS^yA()bz~+;ynKNdQq2gYcrRyX$08tL}mi^mm}UdHP#rarEkg zTqgb9gn`Dc;#e~i+o$E-gYF-9J<2Nyo-r%(!|GjOt2}(WrF<=NzE~x3%+cwe1iyBpf550}+b3K4OCmf33*1QMI_5dyKLFOpuNqJht`> zq+Yv9h29lSN4LL(M}M$ya+vFx1~;p>O$ghz&4%O?%ET-}CU%t#lEr`8K5s#neQu(s zZ=x8)PY=nGj&|wMG|SNqnagkZw)#f4X5W45ranu-R$?(3YpNa(ao*e>vODSCc)sI& zBNpzpesrBdNb!zutR{5jj^XfjIE_LuWnC!?)v<%>IJma$W2Q{k9phPIUZA#?m+r4p zjOBYl;!p#=51ijh%X(Re(lt}P=UienJ=u7>z*fqKid4$0u4CE6wgh8_{t<6*eMfNl z6-Vs4g4Rffa7tPw1`|HPhOxpmFReU$8p?qY0_7P2y%>ftt(G{gE1ZWLm9q743tXxSv+`wvJq1%-up$Gew&Hl~dpI4Ha-~s2 zYV2c!AC0L?6uq^VMt^^xEqzb_a4}|iyB#2M_Adx9O9{p&vJqypS6OokSqj+Zsp6yn zW3I7qF40J^gFhY$z&_S8`^KlZ*ruYm3-BL-7$?myXquf$Q0G(KbSd`7tMDyE1I`uj z{6+d0Ix}k}^cV^^y*BF&v&o2C(1IVvU&8_R-V(oVW$hWn4kYNGhH4CoBd>zwvIK{` zde5m$y6wXKZY9f}Ml9E9tG<6xY;eq>>dtao^!DH|+8zAHH@UyMbih7#i0CiBW-`x+ zyRKb=p5^3QpF(bV%T0m!#Ip%e;7{R8t4h3+5^>?dy0_7qm<`!9&OX2%Nxm`lmfH*8 zwR!`OG1ifk{dx){2gzyaaAtwli=6_=bdQp+WBE zmYBy~p#GoPKX+cdUYT4%C-+>P_nb#v_MGR{f{ymX??skD4`x;pVXIwyZX)(w3D9Y! z(%tixs@2mk*#A1lP)QTVag^9V%{}GtRqz-84?Or%?(cYQ7tRruxbAAbQ; z`*F`!Gju6!dF;p@&9o z=#Vtk%TzuY?qKct7=ffj-{snD8Y`Uzu?B+(%V&XB%TQ~D(8DG#&Wgu+r( zKMRK+gC{p)Rk*qv8s6dSLLIg7nH&7^p?m})^={Uo<4G8?w?eCot|?;|tx$)e>Snik zp(!bf3S(v`>UM|Gm4#hj71k3N4zx16YtHcm-kBbSo-Oos^q0=;dK(xK~IXzTWdPqfiK!o07}FIsFsu3P@3bwesa zg{ZYy)DkC502Udx%~tEeWDz@MXh^8=xZ5giUqLP(Uy7H{jdX*eK{XPcxT$Jk5@3hj zto^x@gFVtiv{HqYc$fy7jjt?XkOqNFkt8 z^=HjDsqI}4nkMC ziauLX4-z@=Lo}W?!tP+3e4yJ9Sl89W<>;fMI}G(dez>2F=Cu?CUtx}_>iIx27Mwjj z^Uj9ka{_ZTU3MS4OOsS!xh!8C=Qx96eNS$cgzZsYdcRNC?sc?^Mby4zydGNqWUHEG zzm}Rgf6L8K%Nf2kd)dho`x) z+2K z>eF0aQ#NFWF~_)*a)&^}^%p8|gPaJHuxhIdv-CyOr8#FMl1qn8XV>3pzzxJFL-rkm z^i{nDYoDDm1woUUTQg`|ZWo-WubXzpxqN*Hh2mvvGkTQDVdEoiR7uPtg^TygMAzDV zY+xO*LRS?cO{AslF#L2a=`wu#Ea~#$Cauis#-&Vq1-&t}O#!<14ZAs*OiOE-F-i{( z)0;tK+nUReSkr8j&{%r*(%a8kmW0)>PziMZDc%DO1}dhvP@oWq#{Is&51BcS3B$?l zJb29NevOb*OEyn;-bJ{nV(MBA!WG;GWSV7g={&YC3SUjI zm1_UiPUmCuvr|sy66^nVL^dyf?Om^Yo*_-iOyfPZtvyVc%W{$u(&y>iNk>Ez;cc40PEx~I(p#zFVmOWjp~F1Iu}m;?wy zTxp*+?q3kE*v_5e)OXH>oUhkka)6C6LbgPKwey(`=4Djg%zK8`MGz;|8r`P$ywky^ zL^TnCkruzsw<0b6gSVwE%Uys%$)FEiAoN|@$=TBRP|o4>$tZTy&A(Y#)ynmP^WA}w z;rhr}j~7{=G!L6c-kv3Yy|h?Yyb3rctAzqRCf@zC#WJ+LYcY3rKVj3T>UxrE`F1{G z|5T=uo*vci>$~GHk4AqHQO|;(8jco4crZ=(c zgh@%9h^IORO~5CIr_PwdiXnbu;N^?Sn@C5?od!a!Y-G4>c zynn1m*3x>A22u9$L~E)Fn3{Qezm`lp{05 zVZ?{0N$VW`&}jet;A_j^TFYm8Mjg>oXeeRVy_2*?eaZa#rd@j3yoq-%6MCS*$7r^< zet}h^A6jQ5j#Ss_Z*-bJPPR8Sb47;(v$oZp63Js`hbW9ISr+3rFU&K?FTw^9QP)7IvLvY^bL=tJ{1Xp zv2Sc~4XWu0zTyhra>lHyB5N3eUcl9n1P}NkTk^7xOWsVh znAS1?A>(4>2XrtU6yvzSf?U6t5kPD@Je zjMZTB^yorp%${>yKW+nMl+eX^Tcjah<>3L9q0BPd!BmXEn;xSw-(rf#c5vTA^PPge zDt2L@e{--`A#pv|XcLA zD&Rpnv+3gsHn$H}XvVLlWzCQhtGA%9tz&eBt2jyWLEPu+WnJu@F5N~j94oXg@>^b! zi*X}YSV~ZFI@=_~l4Z&2rIZgt>Ncc#!JV^7OcpV_F;(G%mX8psIjnXEq}CNnsk5fK zL&lL`DVoKU;dw53JZ#ir0QC;K7tOqu;85j3YsQE7O5$5FmNQt(qw6EeSdZHo*Y_)? z5!s95it#tkhFZi!KxSzee2vXmm<`l#xh5BqzoWIdMA~&!#6V9YS$i;jA+QGR@qE{* zgW@$tgfAY$JUj9^0x`;7#~9Ew4v2Yk3s} z@u}2E_@3(Xn@vgqA7XI`ST|V*&a0q?PXG~e`xc+=e>3utbJmruJDqeAaLF4|qoIjx+6*gHTu?fh%rzlB zUd}OKvu=-bUFaB;jaoC|H{OhS=9Y^*SI^fnSQRzl7=`boO;V5`%%odI%q8r|)gZpM z4bqOVC6sC)1VBKH{=D{dk~3P}ErD7S$AgV56so6oYgjgZ#ii7c^-YMPR!2eE_jc=b zF)Ny)b%WJbs&xjdrZQ7wduQo)4KGwnL@5hogBo0UMu4&k!ChT~V_=p^-R=!5?XY4^ zyN*<=nx?3|;Pv5?D$v=^+)2n_DN_xWj)4YB#-1*5fiTV&o7*hbX4DFUhWk@2U)7bQGbeC@$u^OENjSln@G7?XZK%}$EFi(OH;V@3cS zvaN1Qc^hJ#!|XEjKewwWBUWuclG1;(silH5dDE>0PWFp)1esqOgZdYGpg)K-@IV5 zEzSJpvVM9Zh_>4*kY2?5c^W2lI+l8B zPMVRNYpe#lyAfSs4@}T66<-tYU5gq`wZU;M`z(CPC!8U}k?5#`f@-;Vq zFRHg*{?M9}#9l2X6fhvf5Q8kcah~5jS8Uwm@ud6a!;6^o1s2Dl>RF$;cq!RAzfeK` z;klrjDECc^G&o^%5ZKdYSZM&{9d)X{Dlzb?nxBsSCdq0;kpv)yH~FOV4p4HYiSIiK ztgQ*XKiobJ^*C<1DdcRJ`uZWmZNzP@cr2q!TasC(?2350Z8zA|Rwai-a!Dl!kXpX9 zsO%>gmej&b$8lgw=&R7rG-r5LIBS{SdWuJ#CsH7o;HWC*9`ikDtS~ur99hV$$pnmL zreJ}IBZZ99G8|esVV&WHvf>%2@n z9n?F%Fe2|18Z_xLoX!>P_8e^$m_imG{JZmX@|$dy7&1nEefQ>PZ{`~4+YGtGcE&eB zhS}XZMZ2k67mHIJbj-wYzqsOTiMGl|iHnU9r=#|CrmvY9p?K{MjnDUhK_I%g8&w5W zSo$&fhagFN$c9^CiBqvD@v}<&>it3y_C-VHo=j#hlX>z^(6UcV$N)ZP?fmo&S;p6; zEytVbg~I0xuLMXtMM!+;Q#&W2WP zOj<|+kqwu3%xFojlIu_ki+s$k^92C#l>nu01EKPWP!J)fGmNI6`l}qttufT1k`hog zui)J`=;Fl1SP3x~a4qUo%UT=uF3uOB(}5|dw2)_93?pmSEmw$i`P71zuVNKyby509 zqMs^$LD9yt?FN=(l36Ou#I?-HiUlEOh0lmJF93P5=C!o@G!Ta-W0z}YJDwHp)PBS_ z1}mnc8O>Ow?n>b94fu2CuZW!bk$_={dXMO0JhUje$mtco!zYztdS zfdGjae!vBcloISqv6+j%v>YmUz`Y~}G8XU|deahti51$-3FH%qVfjxI3AV&rbW7d? z+v+LDbW6|~`By?66MdX=#hs41$_qfZa!Ar((7wv1J@6WbTMs-MRBV{AVX|JJ?PS*Y zdGI|S2Y0d+^Xc>fZ@D3`FsN~ zOU0_rjw7~MepMw#C|~5wN1FY6#X+>fErV=r6f7ARtqm9D8l67@ZwA+H$)DhCN@B+ znqKJr(i`_C;krFzX^2hHEAI)fvC|?uUZBUc$;{UPX+{RCL|+h(vk0;J&u?k#F8`Sy za*J_XLL={088@?3P}fO54l=@Xf5GmfRf36NP0k@E@X z$7(}%=d4Vs9YtSEEMIn&qIgl3sf^uf7R08Orz<$*7YqSd>MmuHR@#iPRJd7Evm!3f z1GKexQh@$r_=J}cV9WB3?ma-YQY*jIr9^pnAF{cft*y>0&HnGs_$wfUhtCM+g}=te|Sozo)^tr{8b-PI)+kz$&=5wnWv(?)K>9AUm<}rm$&e>%a4h z1}q+p`g~J?zjLr2zBR%)t}@E>3V`|k@vA3=UjyoMh_CmOZiCOK2DQ_3&s_(OR92>> zWg(~q#>bMSm)~f}S4g2P0JwITo>MR=YEeiKJ2>jLTe6mn<;Gn={R@2|1W{p5{?x%d zK4AK8e70Ij+>mNGA;ptYD%~3ir(oQ?h)-1(1p7Kh%5Nwa){tGX*-QOP#wl@qs^=OM z`KrVvEOB^Bg|k6@>X3=^>9!Ku*ah+LD(Xgqdcf48>Fy6;iPNr$|8P12f8Nq~Un#OS z4tT;7c#6T{pBWu+T6-;U8O`%Z0UcKGi!%asMYqChy831uH($p1HBFNz&3zqZFS*dU zJ|yp(E0h-mPo|Tl^gh{j32=wEJ{lD=UdP)c;Yx$UELoGe2+)X=eK0(D>f3ee*d+wq zT2g=jYnNgb!%{>*%jbI|w97(K$Y4|rZBeMeN#;ktu%=tvjJ!u9C8P`Jin5L80gpQi zMD1PEuIAz8>8%P=v}hNjWiBo~3X__t%sVsEAiUJy1_NxBZbkNLIg9ST=4L*h{O%CcZ28G+x;ec3 z+TQfR8(f5t`t>Dq=WcG@Lj@otkTkFy;K;EHLFC82t38;KRG&$3HxVu+qR$t`iuDb& zd&>j`oVlltNxQk9qfhOLzEHih^f+i#u zojOs*;lGhmgDYLMHqbEJVXeHcsM?K9`clb0SU1oKdtUBWTDTGp$4T0*H%uq^89=}V zB7VlxPZ|!qXqHZxJGHiWI`i_yMCWc#Y8c7Z^aNGy@|@b^V{JsB4;+_R#D?rLTKX^< z>7UqjliAM{CiaaVllvwWfA!J3opL89`YMZdHOqhQ27r@$eJO)@DVTB%w#0tqo|I#j zV~>kr{x~w4%TJNPSR$EJ6$JA7Lf1Q_OViV8UcAyNP!*bFuEnAMS;-h|K*yP>&}LUW z=5+brT}${gWDmz19bIl9irENd`_8BzlVE7$XXb7yKr*qjIuvu8toW-yij)iE>>w-( zb1!XtpT%wPAQxwilrm|{MOPX`$3qBl-x;6X3z7{xRE#d^F5@~CT0-}l!#Z8M#+Rmq z1hgt4uwP=2I!(IB7LjjTL?hN?^c=vlU+FjUoYH&1-Q`-Shm2McV(Gn>lD`h?gk&|O z82zj*q)AH~-8YFuBIM6^Dn2lupiu4;ITXC$WczHzhH96hao<7?1n(NUk<>(CohB_& zsr$#D@bVF`(B}VRpae3OWDLr$(<)kPxrw*K_jcKl>z^I)hEj@9_qaAI#e9Qsuz1OL8E=kp6e9JEREa8K|CL~Qvds#rcA&Mba3hto85tRl$PI8j~)KT^je zJ?2ZDl^+!~$)3FMIV;;zy1j^HU~AkD9VKU8OCYaKQn;A7HvhLC=28G~*9(nL^&cVR zgJrr|q#2@2+tt4V_ZR$BfniRLwi7Ns$;<(onadv(zzb1PlTef+gfKb6b=UWRz zS**KX=!xCNsKLZ8S;mNr{j!DfUy{em@RNY^WJU6pqee`}xr3_r$|c7dyP>ej(oXk@ zt(xm_rLY|@|?fqnYle(0;G-fS`kh1!ri@Jj@6~ukw zG(TN~;Y+JD;P#(9=-8paaUWIsh9Hfg8j>WC;)xi*SX{4UD0m#0%%e@0`H_}bxH^_s zjjfEEZ!Er$oW%-Czs;m@P$+HU2Zk=`u!G)^zCE1F707QM4Azwn@#Oy0DL>ZgI6$*7 z@=q`FI?GS{k!cD<>O@=7Xy$QEHnr%s(Cw7N^O6C!1RWLPPX&q!Op$aDjWHMw;}#1+ zJ`5lef3+5D$c!2WUm@{owTo80Uli0&BG*S`)80OV(aQ)IvU$Kwsbc)!K#PU{Gln;k z?=YnX9Nv}r?l?h4@*7gRnK}A6Pz_*L#{nOrI0EH}?tGZqoD|CE4@AQ^8F*ka|-ioLPa%e5vRnhEhi@8S^_wB|x3hFFrU z=_cuTkV>p;&%{lkxG=OG^q(>uXaD)CT#(t61oYLF;>s@B)@UA^jB{5ugKz`&4DCiw zZM4$ofGbc7o`%h9mfeH-iNaMb|7ja=O3ed_RI*u?09Bb+#|} zcrHXG%Q##1(9@OJO>qf2&eI>Xw!0Ktr6j0!WR4aG5kMJ6VxK4igUKiU`j-LK8p;wa z6b8HYS(|j`313>$0!1kHUqP%D@}QJ4>ysS4e**~pVk-CeTme*z8ipr<3ZGfGPnDU@ab-Ejn(!OBq z8l=A&+2M%#kIc?OQSu1snSZ1f1ya;oqH@gK?^W%TX9Yh^sLK^jxTs?*sz^~&RZ(MD zD!l{ahahM4R;x0rf}gD*C8Aw_k|Jrlo)ZPJA_ofn(pc=FN~x>=9ZEws@ECL@7tk`@ zEO5~;HBvElL2O;Xyny7oVEf>(sNpkroKiWa3%VCMdP+^XgRSf&zR3|P>5_7(E;_S~ zKV_u4hzBQ6{u2kAY4Zfsn2h>|9@z>tb`#k(-AV5I>V=PRatm>^Rb{neN!7lI(KtR|9m=sIV zU34IU@K83Jzjwik*CCk)ocwRcg(iMcda`L>VD&8B)wU-!<)5BE==^g2aicJhNgq!X zUT3Ll-`(SJ`mr37@%EfZwTXUvmLCEZoPk+JpQd#vRo%9%`Vinb(XD8!ou)$k?w7MJ z@uw=z1c!|f+q=)9_sV~U=Knr8&qvv6p8N_Q?{#I*&fi^TsCs_V^>42FjaJ70Bc2vd zy8U|bHNT66hihL z6HfWkRrb50Px0s7-)#N-cE|O^Kfs;<(9sD6@`5k4`sA57odb{T{*=4YXvu!ti|^Z* zF0DQBBbjyo#0wt!mpbniRNj|}uy;{i{0HJ%eg^);z&a1XO#XXuS=y(hJM;9e@?Gm^ zmDhge*1lK%=hhOXTA!-F=Tc26dqJr#JlFQc-!K&RSs10=~i+lVpUHTasz%_%K*a_cPv zCGp-(Sw?%K1C{K*Z9cKp^+2%>a7Y5^vWgOxU5T&i92>_JwZU zjy~^-J>nBxay{-Vr%Y;z<2~W>O<(!`tT|r_U-9}Zxi6fF5{{8Q~Jk=>aQTBlwKR>g(6EdYlfFpo3z$?DGe^`z^> z&UE1NobR6&86BN)Rs&o^3w65pUsq+i>wM>3)030(4+4+xOyxf5Uf*#&I_!z3jJGmp z1*n(+IyZ@5WaU?-lPND`nltRS*`9>ND6s2l`p(L$j^`&N(17a1rl~FP%z)b6*YKZz Xep`j2-;=X03_#%N>gTe~DWM4fq}Wj9 diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/Contents.json deleted file mode 100644 index b8688d6e97..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "support.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "support@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "support@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/support.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.support.imageset/support.png deleted file mode 100644 index dfbdaeff4ab806b293afb481f805c099565aad52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 462 zcmV;<0WtoGP)>L9 z;=Q*F$LRcBzM!+IJDbQs$!PhrVf-@Q7*C8Hz6*wf(~>e-REz;p4P^wuYH+KRaX<-O zHrkyVN*)5YfU)DBPsW}hhMsX|92g<0=-#C?a7M-lV_Ou(i#R!kETU*44dVpVNagtkSvAY>N?^#Q2>Wf1~tWv@SL* zWQ%kqQb}{qWFcjmTLk}M+-P1%1HPOqUdUZYPd}0WZ)jOw6>-ZPq4Dc)&7kB(z#<}v zgBHgd&2MW2~LyW`x@ybb{Ol$p%R$fKI@50=NlCCs3tBz6j33Hp%_>^qd$; z{+4B1keNgPfW@Xnc|<8tau&h`rDyq#(qviIo6i6eDN$-jM~$+L9Vd$*Qed-3*@$k6 zM1%6zjM0#=W*R*Q())oCdogQ)WcHrf776ygsP0TE&?rY~*AnsgvnZYLN51pb#^z3# zMJtZfEHVxUb0cV}Jbvqt(H?ZHCZ&*Z*lR|`ES!s^V9YbJsi>cYewUGC2JyS_5$gD1 z$N!HSDIR119UbfJl;>~x1J{Yyb23|@Y(>9DYVQ05W5TwP`nhLS3Q4H;GF>M144z#A z<1Rgh$f#qp1BcT1^GgmeK*X7ZIvbcSYpYB^M#)mglN)Hk`A!&ZOeAK5RSSBK_!Ip( zO+w~3=vXIt>+{mO$mWX9>D@nE6R}d1%SlMn3FX4RP;@GO-hDCS?M&zupKgg>*3>p= zLzRKM;R{8r=Qbxoq5H&gdokJf~=Dmp2e0JTKYAevYASYDM>&&oQL`3wKjv?g1DN&l=KE yL&E(RjF5+zHRC6}Z)S`JiTtD|qjyd%d;bIAG`EVs&19ndhzK$pPqKR-Iabe1TsDyeR{@nxIsrl zKN7wHw?5qu4XO?2Q%ftbqXqCUz4Mn3G<7kK&Zj5p-R-j|dpF1$g^qu`o1SP(ctXaf zOQM&98=gZ?2WuAUYzNsCj-eiHfnX)XzoC$4OUTT;Vbw;p@os~-i>@P=AQf<+H-dlHKGB9{2~@tcXEC-;bDv7eNPBMa+G-bBp+Szho?KC= zg=w#=NX^JMyznRrO{Os^at;fkaLf-eHX|#o_Q(r)!6#Axy_>Bjl_7Uj%3hev^O&i2 zL!nGI!q7@!`nz{ZIq5-7$h`uW*&ez-EN}Zh5Hl>JqdfNF`6JcGmEFhIC1d!) zWhAlBl!p<|9o2{QoV`M(WB2BU%3=6}cb$$ZqlV5U#9rtZfF!2*NM8}d2J3whoyDCQ zh;{7wH-$_mo;Cho3L~C1#0)|2%MHq%n0M^H3uZs99H5_3d5uvF zwo3-+Pr+i`0=LR<=3g%3(>+xJ`Xx2Pva;jk&}J@kT@(ZlVUH75Gqe)uBYc#GYlsEG zL&1{ROa{*m^`|Y5O4)O?Ga$Y*WWE`sSCbr;O*HpNPc#o1S!v}XFO=?RshkvtYUvrh zOFt;|9cFaI-H=sqtT1Xdl&#P@413C$F6M*p5??UYk~(7ff~i&3Juu5Vu7gs*beH9Vf@No>r$u_Ndc^Zk=T69JaKLnBt>s)| zn-bx7->|F@a^)h6u(NL?x`Nzzh(*rSyJ5C0WmKrDSzHctnvQ!i3e<&{UA~(2;p_RxG3VC&p9I+P%*Ek`Kb1BJz%s8N@hM5ZrJ8tQ* zzSdvlOjn{~DR!)H9K20N$NM)weTwu+wY9il{ky!J7a8002ovPDHLkV1iBMJNN(q diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/Contents.json deleted file mode 100644 index add923b2af..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/icon.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/icon.png deleted file mode 100644 index c9ae7d11680f7f27adf6f5a3303735aa25620b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1199 zcmV;g1W@~lP)W#Q>DD8EYGH~Ut) zODWqy?8<<3rXN6vxwBWMZ@v)t@Xn&klv;HKa^!`=L_1iy zVYGYtyf(C^nyrt4_wOvYwn{9s-EEieKh#K#O+^ij4hR&5yGj`qZG$g?lN<7+Wl!Zo za4XiptmXRN&Pa8;0E{sZoDmzGIs+~Q3YrVX6sIm2*CX(7&EMXH+SbO1CD?L-sML6l zemq+GdA3$OaI2f^p_3|d$C#!cxsN{9Q{4aMr^u7QZ2hAd-`Pe?ce_cJxlZeIxWBmI zqJ@RS)xVUi)tX^rChXomb@AID&HIBJpMfa-OWMpijQ$!N9S1V6zge!^BJT*vChPkL zP(L|AjfI9mjEprBl8aagV*(UW5i#9BC0U}zKiJK7tiY!z5Rr^o6em~}cv<=0>(J4^uSJO-6$vc$;i_te>QAf#BL zlCIy*44yA53u&XSG>25i$W1v5Gp0u`!MV3D!_a#lKxS;*D5H|6vm(fn&;U#%F?)Ul zl3m#q`_`W;{>=ODb|gB}lck+4%2{dX3PwqJE1*&=D%O$0(pCYy-+l#I^HE8Klu^W_ zp!iGu4uh8_AlZ|>IsC~Ne;8g0i}P7HtlZnVx9S$x??9!3eRt>YHKz diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/icon@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.warning.imageset/icon@2x.png deleted file mode 100644 index 6fab40975235959a8c459e3f1435057c308f2e5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3132 zcmV-C48!w@P)2N$Bn!Baca9s?6jpnp>0yNQdKHi^TM+ukZ3@VMgm0@sKMe#YEfkSp{axr z2}PnpfZQsoN(7S2L;ApvYMzjQQilZEMoF`dBf=(kmNkB9;A>>aL>4FruHwHytOTg-*SYhec0+?^Za_DvXdY!N~O7osE~8tQoN8;4g7c;@Jv11Qr$ z5k(*`UxIXU98|3a1}HKH9@}CNtYGG9rf_Z+b?AkD)m=9?L(5VKP%bWrV97%}0uQ!PD1#E1O>)JZCeES(sw}*45ChtBmCXHgc#_Z&>UJ7UNU|A`Z-V@$j)I8fFg^N0gN84@ z^_%A*tqvo3f%%hTAeYKsYo4ZhoJa`k9y}WyfMoqf=0U}j z&yep?Q4fAb{pcsArA#(#^y`q@&<;(+M;+O`4C+h&LZTA-eQDaMO$w=`l}lq+mau&8 zj9Gb=9`Y>EKhsBk-A5gJRJ96aa$lKn$%AP@bbz*S0)7-SYms8xB^3S()2Sw!SU#U`V0Vf?IE zv!$CTD|en987?H{q}+>@6l#=h)fN{8dbg#5e{iyl$5JL_2-J;=hu{QKH9BRjP40sx z0b*lw5nI3K{JJt@IN$AjxvDHdWp);FYugG<^VQx&)v%Y=8Y-o$hO2JoHfGtVL=MjA zSB1XR=)`+HhJu0Zg9$X6J`uRo!^~KC^@5M?pqT-o`!nOz=I0=H$6BBytT&02+M$=J zdacBq1q;L@uyjBUO3Om7$mXZtWWuk&VKz|5BbOk7g=NLsRpc(gSj@{M^5ttfx`13u zPeSY}=!&4WFt3ecnQnZh!$pJj$ID{0i`nFEr>7bsSY_^-o(*YO89NYxJ7$rJ@u@6N z@lM&Xq*|J_SFj_Y{ykbwb;0;v^r%c$qMXVDLEs{E(8@N5jT}aHFJ%2bC_B64OeB`_M`i5?wU%(p4$|b+GEwFZ69e9_bdrE^f@FPyIp8ihXsQRu5`v$RxmgR?UsOu6En z4rF;nVA2+Gmb%ACDp+}5n4BKg*+m{98&O}0n-xr)|? zGqM%ChDzoYyn*P&_bPMy;TW)wqoxO3eP{U7Y#TF&3XtxX(p`a}5zN z9|I9?iL9eAA<9H+VK!id$kVm}M_dKR6BM~o@^t%~TGtx4=3j;^HVEFl$pTpB+=WXy z9Dnt$Mb4-Y*$5?qb+p_w@V97b?Mwkotty>o_k%T4*<=)x8%<_HzjvWdTcZy(N`{#a!1dtR`4v%^93;WLPwd|&9K~PJ z|ATsyPPlSK+LFjQ?PFHR_%kwy1(`~^fIZCE8(=h$+2t$d@a|SPic`LKD z;a-Q|CDN1XcwjrMzk4fbHld9axhupNg*V$?=r2MpH>9C;J+c#8Da0zXR1M3h|It*$ z!j$fky=+7$rGSvrIRGn8(?Qi4aQ0r-rth^awA@+1yC2?R9Cfs1lwyF$Qx}Q&^tA z?mrudx@;UAb%Q-%+DdK8L+3-Eg-)VCOhJXdBoSZpqqLQ{cUynGfvp;_2mabC&toke zAa3_?1wer2rl(+zz9`L8;$EJgr<{78HbG5&n9!DKLI7Lo`$eI%3tB1bx^q*9%_3>} z^SPpmqW=5(58U$iy4wQmfgd{9MRelqd}tqq!1S4~)WX z9;*Tj9{6AZWZWww)k~3KN5r3PY1;tpr`t%-?hKUlcQ}m1c&u}8sE%&yA6)gP+y4RZ WAja4k5pb;l0000HJWKb$wQ7RdfHj!&p4oy|5{R6Jl zMv7WdqP9_*NPtjfrBMZz(jV=QK%@3YnpR-P@7G)~W;`%31I!F_A7`(wz1LcM?{k^q zWyqF?d+)jDoW1t9*ZS7$TpRc$jG2QkH41At88D9_V8b9Zz+fGLUXww`oAfe^CTp53 zYi5Q0PpIV0k*!Z3gIhcd+@dk_qXV0|V4lh{*oKxCjkIh)|6iO{-ypp+{wsgfooo2B zp;!8A(mzKK^Oslu-ZO{b7L1z;gxh&*?Xzg@H)!E?ki{F5`R|byl@T)T)yQX~3wGxs zLqXSr1I~EdEGR;TuWLf3a)j>l;>gx7H{m9Yn*xMa{i4_j)^5|C_abNRui{n)c<}<5 zP6zD59N_#MK+y$gx5DDRFn#?1?k~^53=E-JahrjGK`$oS0$8K?eBGDO|M0*TFm|unKMCUjaJyZ6bQ~-#-pH!u z5?wQ}-W!AATNCjSY#0UE{p4G-vTiEtHh>u%_JAO=>0}x4NM3z$^_RY~4{l&wHxR4^ z=XVx`(*pDwkX5Q+=PwWdCwc)0ickVYfVk#Kd(WqLrq&PnhI_$jizPENI#Z?ccX_^o zv}5ZmT*tUBARHHT+wFt26B|7bRB~_Y?GN52^*kPSB;Ssknd9zZhZoVE|{{$=mR!kUBD77c$POCv3(o$H~xe%yn>3YX17ZZ@xZdizxava13y^U~f%7xAb?TUVEO>Gf9t7cQ#&F&Z+- z9)}rX(4;S6$4gsp)UHetXC;x=WlEyanThu!3mF{3+5?|9>bA+vUK1GRY9J7{hlvv! zUQlA`#W!AoV)0VxLbHT=_l_R-nUF^K1bRxq6w~VwGNGJa_6&3**JZT<=zrueVvZZSebgS4Vspv;`8{NWYgj zB64O}9hyYGB)SZsUQVdt`-}p!p~pTe!7cq$&5zak>YJDICK)U1t4 ztzTfVu;6Xq+rK4aAu-(d&X>FQ`q_Qw&ap03cIQj@96tN&(O*x#k0R;<`96G(|MTA= z>bYJg+?@U%$vKD|lFK~q95;V)X#wV6J4&)wWI>&co!0Em<<`5TMx1_W?=~#Dd))*M zgx2v1Xi<;^z1t&R0V0!^T%T%;L=?SSF5VTHVL|DG#Zvzojf%05BSsBMs5(vKf}XlF z`|jEReH3qaZ{mW!s@b~snLjvmRUjNMw2I=eGYJfrBu+-B4uXic zSF%e8Kmq_>W=45L_4d_7aKpIp&Kq$t@lGKERr6C*Q}9Z$NIR7Fa#&;@5I|3NE1y^57iV!Uh!F& zcpvhS)jkcND74;b8D}Cpmeq(!(gxG*OgQ8+GKq!v-^RsLCyn0TFCqyPQ&QA>h=%CS z2DMc)ak^ctuflu&>O01z)h&YCTspRhib8Y3@FS0t zR&;&liq-1)SmH%Wl4Q2n>D7ns(V001iywXH$w!FK2stGr$;78bY0-vSf|I4NbRLr% z7Va7$y#CLA&McQ|^xgX@^!H(oG$@3bk|`=-ijAR7$Xed3-1^r(cNV&o347fkFtVak zBF-$;23r){d^$}#HTTZzykG_%SU6s^va?%h0K`koD(!_+M(00&+%2NZfWmTvN_wUc zub|f|;BsFtOBr-4f9k<3By+Q@^g7>skLwt&+*8y6tV30b#qHO`IQOF#o|j;bPS-5de5+IWAD7IW;j$x)B)zW!lmo}d-5QY2fn{40AaEF6zB2)t?AQ2)%7L?@2b0jr-B&uDIwWF zXmTwtB8enfyO4Rp)hw48?X%N9S>i?8n6=l{_{U=#8$iE?VMa^ zYx+!x-Z-*};cti?Y>Xm8Oc`^^;JwAQi$~|UKsaMrjSx2t73*P>sLl8VXt4uDBfS%|u)7r=?_EZII z%qjZbU$IPnfyG+07#ULF{AS5*~C&zVk?@AIU8R*a~hT($`2NUQOO)W ze~A-@+#^Z&{AxK-0}$4Oyd?GI z&xSQ8CZ&o6=ovyb82BY6kR>5-yJNljTTuC<*?B7it&4Jq1FD3M7ef&!?WLmr7jqQ) z^P6t;Aa2MB4Q|l7{9=AVf+$St0da(EDiI7#Ae2-)bY+lMs31hiXs!f?cLGwEgCzOF zR0O3=$h{o*W>c%3u?8k{6h5oi9Qt^%XoL8%gvtdjRdgw<2o zJ7`^&%gz{>8z4>CmKvSuDP}(57=xnViFU}+bw53QSmCa?DM}_GWe;lMBi6Y&FNsGRcxmNe;CKcRR5O&+pNO zJ-y0s8quUr4R=CLt+UR;f`No+Fz9ul2W5YDm#RStzb8xMn^P5&Jotgc+CD6xx6iXwVE$^Jr5 z!_BODzt<8@k3&7e*AIMF&q-Q$VGcg}pZ|vW`FZG4f!O`c5sRPv=}*G>q1J(#g-Ur& z>l`*o|3hCxvekmCXIul}C^_6$GF#WC(1%Uv*l`N6i{s+pp|;{S&}=f8S>hHUM42do zjrF=?V@Y4^IX(oEG-=~wQZ#?_`+pB}lanyi7^iOb5X>I^8BG89Uoi``=I$Y>Qc6EI zMyctJ185(`MB)r@L`$M_nJTR{guRe8bIS9M`P`fW?rMKONby9TQz*Nf5X7=u0tmDf z-a~xIA%qtuaVS!GrrkMr20z;WU1P=ED1I`zd*(_4N(_-mG=7sTB$x_DHy))3Fqm+@ zhBdN=0qUoqbA=UJdzKx^tJUI2x1bNCo&&2^2iJzt^z_CN>kz4le9G=Zt^w!}dkJ5N zp*m0FGEt|Tg~S3(a2Q;(=HGfH%En?^|5iCdj;$oX-Xw7!CIZQa`iEBl2S`MdHfv^M z+jlhSW}Yxzg?HfgQLPGv`XAQ_lVYsK9b&^asZPael?}a4E#QR0t`i?!cbmW<;VSO= zGvF$b1bC?T^G+_QL#FeDvb}s~wIruV zcoG(;PC>MwXa>?u0dWd^Q*j$%fbZYfkq5A_;pO9aqR_yq#{NmHB6Lq!d=ZH z=R5nq2k#&FfqG^!Ykf?HF%3w|a=kBA=a`yoc&at-2%8X|ALs=h}JwqidH1!t@XLbNuxM&r>krnajuzf_6x? zTY|kLz=|4aO+Gke+}gaU5Ls3Vc=0kI#-H2KB<9%fx+-bL5c`Qz~hSn^Ny(w0NQ}OrlTssp~RO@gOT6e$>YioikI2RAP4^b`-+CiN2c_6q3JqGlN@DU-p2D@6jJX3`#fxp%LVTW_06_l}4}XD{>l36)^+N$( z&Dpwid3{qE~M8g*4KB;+Y|wE|C67G>fjIqjv80U zqXTIyA#sMB6G)5~!p~E3Qw5>IBqG01;zDa0qr@5qN?k%qiIUF%@O?o@)YnfWQL7CN z!hOH~B>%|8DNC)|w1d@M%dOYI6~@GOcQ>HDco^HQhP!#2Z20Y;{0Fw@V>i2$g}$z+I^&8gJ~=D}b}QWG`ho|-95&&qIq`^m#zEsXWS20e9lCgFbmb{ z=JDtM?34dYA%Nk`q;<)G(LmevvHF?j1bjpur8UPtSqPpB0Ls6>DNiU{2^c*}2?hP2 zjT1;pf2l3%b(Lxj*FUz=tiAt1hRT6Ztu>)m-Fht`q%vG17~g6@2M%Lvv0=MRLe5l9 zzV<4de*fKA&5kY%w4f9mt%gFX_Xgs_q6xo*%9je70BaIbSh@BNxc7-@fbC{kSb16W{svHYnOV*;EQ%F9C9q5~>rg z9E0;8`)U(HXkkjT-YmOzwJ2X=1QY6&rIQ(e#|eNnLNDNdia@3?3wgGE{Ez?QhJG@A z!$7#J^51CUcN^Sd~ z4_>^QYrK|mQ-IJB0Kx8)?xzlpP>n{15OO2XY2{Z7$v`L_kd~>xjDHL6el;*l3CW%e z@_pAshF2Rm6^L|9?EdR56aa4_dwG(=;fDXUuGBDj!2qRpcds}a5V_xeQ$3a3(0*F{ zAzJ(qxCP^u0g( z9OUlAurI}M;+F^6-Z?BAb3rgSVLo@gSiawF&qJ#nJQtnZ zwE9F7_uJaG&BqIm88APv*PG5#aQR8EL5j}SE2V!XhHm;$ec|MZ{ekyte;P2XdAQ=f U#|hQ*KsPgZy85}Sb4q9e03jP?3jhEB diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/withdraw@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/withdraw@2x.png deleted file mode 100644 index 60963f2df0775714b7ba7de1eab7dd1e0a2f4d8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^Qb4T0!3HFGR%fsRDb50q$YKTtF;x&|^bAt@02E{_ z4sv&5Sa(k5C6L3C?&#~tz_78O`%fZJ2P3nmi(^Oy}inR(Ik9=Bkuvn2F9KTY+wDj#gwOoCsTjWe6}ntey|VXyx70SL zzPz<==BGFtHJ0wW$a;R&ZYQSsJ=Jnak0)N8aG>mMm6Eo?!5*LLcaJ4c2y*dnQj%O2 zzGPZhh)=fW)`DkQI~iw+hS|-Wb!Ua(xtT>J=XUnX{mN}x`^PEkgh7t5=C&QaAHKBK zsn}_#9y5KVQGMh{S><%IOH8*{sEALG2vpN6Oj%j^|5ioyZDIeUx2McaHmLxEhr!d; K&t;ucLK6UVREnJd diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/withdraw@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.crowdnode.withdraw.imageset/withdraw@3x.png deleted file mode 100644 index 7887a4f79b20c648b41fbb0a97041aa6b288a7b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 466 zcmV;@0WJQCP)K~#7F?U;dW z!Y~j;zdHdVcmzhs2y6hIpxvNsKsO+rpewLJyFt1^*x-8CI8kbxI6}gANIc0hLPmL# zbH}%VDU{Q)h4R7+`&&>$oArBVPHsai{_nv;SC z{NOE3Q$vG{)H@2{5J~Y=Ppm!j_(mZHF_!W?H88@{=yL@_jKzLnh(XLbcjD;-MsV>L zp&g_WgS`CDC|Cd&gswh?Zp@LMWm#^2uX1nDBqR36fk1|v|4m?t)`F(tR zlM9j^3@|>vNf-Zw5yqz^JJ*)@FLr_<;&)88^9ALQq>FSZhuS7-CLiN~$LmfM2@)7ggH{VaO>9vj6}907*qo IM6N<$f_q}QJ^%m! diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/Contents.json deleted file mode 100644 index 7f1bd167e1..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "icon-staking.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "icon-staking@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "icon-staking@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking.png deleted file mode 100644 index f1f46c07e0d5e0caeaddbc2a8dc0ebb45e76bb64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 969 zcmV;)12+7LP)RMowDxILd(jmWXQoHInE#!#2TdY0!Gq`v}}9V{E>oNTZvB~jF2?i z?T~EwZ1MXXoZ9EhlVG?xwbt{Ur-((w+@&x$%c#e{6X3N>wRQ+ZC<({S<0>IV9>z!k zEs1bAyq)L<49t%%HxprDavVDwj&`sq#U}y**EQleW*137`QnW9;q3_52}i6WCQ<`E z4d2U${}3CFo5e!X@>X)>9Hm&~GlP8sa}RGKlk7u!xR<^+C!MuZ#j7uWVO6R`tQNT@ z5`weH623OJqwF)IeRwx{E7W-yn1o^3So?Y$Z7ffRB$3EK11nF4v`H{h0|~4=9?~Tgo~Y?7jv9Y@{_iXVfO8Q=)zpo_!CBAs`Lk% zu%&A6G>|4uutsLzANU$LZL(qKd~f!{0VZDW;Sm)+Ef5ER;b9L~Ve)SR2402^?Og4XAf$n!D0j(3mklGR0SQWr@TrG;2y{IB=^-vyP8C5wCYF zpj)6yaCYEoEQj1xJMPt!VIK>l4bwvS$hlO>lXw?#Wh9dM^FOzqeZBFJ$#kZ(XH9T8 z&h13~b~~tkmd6a5T`xz%QpwO}2-kZpq3Vq4^y3j?0yPy1E7~*;ypBJk`dqKYq}LXH r=!8mrdQk&DySAt^UxhKIT@L;OfpBfPELq6W00000NkvXXu0mjfB)qp( diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking@2x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking@2x.png deleted file mode 100644 index f99a29f21e88fb3587713d4596cc2a9a51fd8598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1891 zcmV-p2b}ncP)6FGy~ctw5dQcWLr3LMQTUIp0cKj+`J6!dA0v=1B?@ zMFlQ?S;~wRNC5wW|Yx2DOm=cu1B)Es4wXQ@Ye z69gW^G_Uj43F=QuWJD%=u@-~6W&ZILS?29N76ZifIbJPapf2f7klZ7#G|fB(>pi5v zIp*{^cY*gJgB|xJ@K->}D}sJc_cjAcG)=iw99U3o`%5G}+by4H7Dnri;fG z+y2~kL%3Gd)Vres?S=}wr`0X(4PaL#!9MZW~pgZzmgg0ZX3>-^{n5)6I+tpce5oXUEmORn6xK=0#x=UO^>?8@1K6QY? zLf8toEd<_0u+36gwxm(X^@~6L~ONRX1^&K%Kr9fG((7+8mUNBshem}0kH>)M3{ zA#bg$9!YPXJWL*$pmiKH;({O!iS4UDaa;%* zXl^6T#ckrd^^044@P98C@26gBhqxe%_g>QU>4TpB>opC~jwMbDNMme|=@J9(5XB;B zP|;=z;-jic;)N1sJn`dNV8I#ok9|-4uqK~TQ&fr2$Cr})_I(lp*|BxAn#>tNeXvjY zt`H%_*T21>FMj@;Zk9IcjwObo-=n0ghn!0#DV~1$t}ZsXi-;rAzc_g(xJ-DAv%E$g z6){OCP~jHWwrGWgMGTNJd#Eya6WMoIJmn=6gS2oj>~P|-f^?@h;Gku z90IEfG!`+a=#-VKW!SYyo2E8WZAWQ4EJwXiS#P!m6e%acyt7*tw2%s28Xa+tsH_`g z8&f0ztYN1{mlK8h4}oN}@Ae8_9s9G50ts>c=F>o${f*!lS(1MYo; zqEOpJ4+1wQBHD4~Xi(F0H@~{T?su95Nq=yFran9%mbZWqNE-$qcAo2x^LSGg04qxV~P4CfrE`^%2>8c{z+R>zz8g;dLA@6jEn5 zCJ$U3ope9e-zwA2vXvw$U~r+YvtVUV9mno_OO;(&o#Xf< zlo5)7p~YxjZ`9&FcetBH@hAr9E}6O;Md?Be(0z8WZ^K0?0ou814}cQALSNH+I7D_+0i-o>x{ dJqE)o{{#Dd?!WJK8B72G002ovPDHLkV1jsudMp3{ diff --git a/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking@3x.png b/DashWallet/Resources/AppAssets.xcassets/CrowdNode/image.explore.dash.staking.imageset/icon-staking@3x.png deleted file mode 100644 index cad5edbf54ff0b52de7bcc642b66e27687cb7d74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2542 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 bl>YHA{Pj~5qxaDB00000NkvXXu0mjfjRhNa diff --git a/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/Contents.json b/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/Contents.json deleted file mode 100644 index 98e9c9f65c..0000000000 --- a/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "shortcut-bar-crowdnode.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "shortcut-bar-crowdnode@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "shortcut-bar-crowdnode@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/shortcut-bar-crowdnode.png b/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/shortcut-bar-crowdnode.png deleted file mode 100644 index c5f5c05085e43326efd131a38043d7153f76eeb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 761 zcmV#PGWkTBFls07S>q!jcbCaPMeqH)w~t5@2B}8>>{Om&I$qpIPj`P@eA_1j z7(XBip65BtmAWujDVxMm6eVPc$|}KbFmQzI07=Bmy_=N!iC-HlS^W5w3t4k^b2P7- zoM2Err^+EycA(B!ly*-2T4Ll_$WnYdg>k80kgeAHxKInSH#w`h9=X^{;2=IHD}dA1 z^bGV|ENjc`FXi}lFsKtP^d!@`TqPiNR^i|`{$ng#q|Uip*t&wH5l>)zXU=EV5wUOG z35FvTrwAV*q9OLjl2t~;)(6NCJ%^0+BGUHsY)Z2W&tYlAV{oaQ(KNz*hb9Cl`*S5w zg?0lp=-4!RKvcEkpF_Q9r#T~?l(Ozuzt+>WW%OhghAsDsfcd_OQ)9;k@@k%kkoH&U ruN|Y{!m`!I#mM|q|6WL2Y_Wjf)PU#I%7$2#00000NkvXXu0mjf?@w1s diff --git a/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/shortcut-bar-crowdnode@2x.png b/DashWallet/Resources/AppAssets.xcassets/Shortcuts/shortcut-bar-crowdnode.imageset/shortcut-bar-crowdnode@2x.png deleted file mode 100644 index 4d984ef952c1878b57a7016f200148f65592de30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1403 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 KMNUMnLSTY~wne1? diff --git a/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/cn-tx@2x.png b/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/cn-tx@2x.png deleted file mode 100644 index 6dedc3bccefb539e229e133c2a20a70e951b2721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1443 zcmV;U1zh@xP)Px)T}ebiRA@u(nNMgPRTRd*Gl@zUx)8CU1*3>rcBynzQ%g5m5Etp2nU|!9R##RY zs1;nKT?pC=LAz0@Aj!*}d3`Ivx)5ojE{g8DR1uBPlA6XFAc! zNoz+t4xEAdVfYM~&H>ovL>$o{NRktAEIx4I&k1N4hLZ`?1pp7b5LNK;wMTqZ2(f1C z*9oW}h9|)Ewyl^_d*&D8SiEEF+X-kR2rm-oaa%DJ_7~%5<%q3sYtTlcF-6|k6@c!x z6;omVt4F+F2=Sebe{0Ynm_5wkPi;h~Y(3(`LWs{)<7D3*fHsdY@S%+em90l~Oo;Z9 zYFw?LzTZ3!!uvKNRJIH{-ig}hRpV*}4T9N#!NNv_%9e?Pju5eGT&M#=mtjN+)jwVVgir8zBWASRn5?Q|bwqhSj>YmV0U89sJxtztFrKs()MwB5h$wkBilSd^{W^(g zD#G_?p8(-KfcM&p+Ofapk@uVs%b&RL=L~ckHVj)}dK18Hmf|+Rd@_#3qNSg|&7Fd# zUW1_d3IneJxNAg_zY*y5C~BV_(Z1BoIcQdegQp4J^8g+(6#Es3-;ITE-cr^An!<%) z_z*MAGS~-bN_v@F=`GmO5`@Y+F*)YLfG2y|lchw1g!1FN=rT=+5dp#)7GGR77Fo-P6saC*Hp zc}f?0VsY&h0}K7*X_c^bT6gg>AM|LymedD-uF@g}-M#qJI+>9qW(+moyAj4ts)43Pe^_dtH4hMjN9R(Y1zILrw}|xH+Jct1i8^hj z1*rOFGYDC{PT8cc4%l#uI*QeHI+xuq%bcnAkFGD%J8)6W$PrZ?L4&<(v2)74W!+PL zVb+1IIy!V>Wd$nhi+k0%{DmSHSJgR{q@K}>hO^Yo9jSU)-J&Jyd{nO(wMVo#LGeAO zzuoJ9YpNENHzIkXLfemURWAlQaL)FqY%-laH=JJb_a{@hTNbqJNyY~59|5)Ld|bi( z59)FyM~SFSL!i=bb&kr5k@<7ye-bq7oXq-Ro6hH7i)cEr$%~?kra%T;Tk6U>r+z`| xre75;o$s}S7J<{hv*(wr>oNIHnhuO?%wHVs-&u%xvdRDe002ovPDHLkV1i=l!6pCz diff --git a/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/cn-tx@3x.png b/DashWallet/Resources/AppAssets.xcassets/Transactions/tx.item.cn.icon.imageset/cn-tx@3x.png deleted file mode 100644 index 61eb4e75061529a18142d76b2b92511267ec19ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2259 zcmV;^2rT!BP)Px-jY&j7RCr$Pn_Y+`)fLD8r+Q`#YxW@_W>-mOB80pIl<0%zA?QX7#Tdve1n&ByQ=O--Fv%~t(SqBd(X%3o_o%@w`vFle9GndFM89xs|ene0AB`R4vaYf z(*WKB@CFDkFylE7_$PDsA3+ejTr^jxNCs7_^Sj~U+vxH2AY7_o+p7fpx#!_(u>6jvP5_P_B}wiNW=Ke+QHIV=(SivRGv>;g{XDbBkdZzNRwG)Yyr@ zt<`FC%=ig|erU>(3^@;Wr%MOILx-FLb`E#%-o4ZBymR_K5Z&PbY+nV_{oU@_{b3mX z&zVjD&f)rgeLn*~cj;uLi-5b^?dGCOy-wj)D)n!Whl2nvap~lSF2eC1_@;+it-rd` z?F{b1!h-kw3ojlbP~DYtV|oa!x8FRq$5jX646g6{-)DHgpBUJIVn#U#nojI+2Dj?h zR{+dU8ZLnjwcD%FfyMgc1a74=f4S%J;|y%K?vYr*DeigKbUG`~iihSK;RLSl*KcFs zSNTjeH=BuW>$FyXV@_hSBqwmIe*Jd<_SkktRz86bw%aZ1_PB!kB!I8VI&XU%0Z+Bt z&8r;fv8$q7E|*GEGyehbDZ84Kq@Vu81=ANTFE78ZG)r-?^~h~B8lPQT@10b%%lh!{ zbm?=p?;EVcEtktXOH(tiTc@R}fV;Cn5WK27O=Y|bxSuXf&HPuzC>LY9>*p>G!|;Sn zT`u5$vNSbwyl6SsBc5%wT5o=&;YP++{o20(ie5Ap;$h&qPP_SK+s0Ur+{gjnudVVV zFKk9B5?Vp4Y5fAp5#0J+4E(}&q{zx=&|RJO>V2}~b;mh@TdmH24a9%T{bpC!%h)_- zoFUNlL9iMfY^**`;BMsIYW-mlzGKxJIpKc_+Rg9E4b3;oA>7(cAo^`SbMwz;(9NCp zsuMe$!QH)k&-QKG&UQffW`0C^5(xMU5&O1Vuz_{X;P$(Qd7r@#0=Q5QPp(;SgK%OFo`G*lY-8Ju? zFkCs7UzofE=WzR-L-i|6-p>g1EqPNlM=}l*_3mxA+s|l9(4ICCxRJG$%KQ~n;{9M$ zw5=CRBv8mqi$SpRv@IQ3awi6NGlIVWOx+3M+X2iN1i%Dd@;q8sb-Ud+!Z1AN0+Ozdj|5y@=O#VxJY0(_ zpbdBD(y?nJyBMXPMn4Js_r9IIqbK%VdeoH7eLdc$F1n_#t9u~&X)eZ7Ad%LTQqz7 z$^g~}+t)3-Q(XBYgqzriP{{5%lXpra zKRU>yA7V_y1+r6JCR{W5Nxjim?LkEmG`biO!x&=7OtsXc#MDDW|mfk+wf4 zIod>#mIifjG#?zBb>)j|Ne;Lo=Q2Cn5wJ4R7{M9^k!HgvSQ+_A`Pih73Bi?)NVmF< zJ1%oi5G#9Q3$t~;ZTaGemFwLF1x@afCT`5AU(M3Cd@ENw@~^vPY+juoboaPQ&7((lsPsA*z4bqYBtYmoV(lEy9&e4|#9W zbgv+7My>V8m8tCMSBvVau5yKFE6+N~x#LAA`Mx0zM0HD#8AqPCsRMT+J_qij)O{E6gmocJ1Dcm7qV35uo@K$H-ybDtS zT3EPw(?d~CX0gMJ?z-5SC-Y^`xMp`ZT`FD|q7_RrST+Y2DaVfbQCPT|YXtxR diff --git a/DashWallet/Sources/Infrastructure/Database/DatabaseConnection.swift b/DashWallet/Sources/Infrastructure/Database/DatabaseConnection.swift index 18d9e6042d..e4699347ea 100644 --- a/DashWallet/Sources/Infrastructure/Database/DatabaseConnection.swift +++ b/DashWallet/Sources/Infrastructure/Database/DatabaseConnection.swift @@ -100,7 +100,8 @@ extension DatabaseConnection { NormalizePlatformAddressActivityUnits(), AddNotifiedEventsTable(), AddBuyTrackingColumnsToSwapOrders(), - AddPayoutIdentityColumnsToSwapOrders() + AddPayoutIdentityColumnsToSwapOrders(), + MarkRetiredNotificationTopicsSeen() ] } diff --git a/DashWallet/Sources/Infrastructure/Notifications/Core/DeepLinkRoute.swift b/DashWallet/Sources/Infrastructure/Notifications/Core/DeepLinkRoute.swift index 4c22606de2..833f7f04d6 100644 --- a/DashWallet/Sources/Infrastructure/Notifications/Core/DeepLinkRoute.swift +++ b/DashWallet/Sources/Infrastructure/Notifications/Core/DeepLinkRoute.swift @@ -24,8 +24,6 @@ import Foundation enum DeepLinkRoute: Codable, Equatable { case home case transactionDetail(txid: Data) - /// CrowdNode. - case staking case swapOrder(id: String) /// The DashPay bell screen. case dashPayNotifications diff --git a/DashWallet/Sources/Infrastructure/Notifications/Core/NotificationTopic.swift b/DashWallet/Sources/Infrastructure/Notifications/Core/NotificationTopic.swift index 5e2d3e52d8..5e95671e1f 100644 --- a/DashWallet/Sources/Infrastructure/Notifications/Core/NotificationTopic.swift +++ b/DashWallet/Sources/Infrastructure/Notifications/Core/NotificationTopic.swift @@ -24,8 +24,13 @@ import Foundation enum NotificationTopic: String, CaseIterable { case transactions case dashpay - case crowdnode case swap case announcements case system } + +extension NotificationTopic { + /// Raw values of topics the app no longer posts. Older builds may have + /// left their notifications in the tray and their events in the store. + static let retiredRawValues: Set = ["crowdnode"] +} diff --git a/DashWallet/Sources/Infrastructure/Notifications/NotificationLifecycle.swift b/DashWallet/Sources/Infrastructure/Notifications/NotificationLifecycle.swift index 02c5b921c9..82ae96fb76 100644 --- a/DashWallet/Sources/Infrastructure/Notifications/NotificationLifecycle.swift +++ b/DashWallet/Sources/Infrastructure/Notifications/NotificationLifecycle.swift @@ -30,6 +30,11 @@ final class NotificationLifecycle: NSObject { /// The identifier older builds delivered every transaction notification /// under; removed on activation so upgraders don't keep a stale banner. nonisolated static let legacyTransactionIdentifier = "Now" + /// Threads and identifiers of notification kinds the app no longer + /// posts. Older builds may have left them in the tray, where a tap has + /// nowhere to go, so activation removes them. + nonisolated static let retiredThreadIdentifiers = NotificationTopic.retiredRawValues + nonisolated static let retiredIdentifiers: Set = ["CrowdNode"] /// Presentation for notifications whose `userInfo` carries no /// `NotificationForegroundBehavior` — anything delivered by an older @@ -81,12 +86,12 @@ final class NotificationLifecycle: NSObject { /// Become-active reconciliation: the app now shows the transactions /// feed, so the badge and the delivered transaction notifications are - /// stale. Other threads (CrowdNode, swap, DashPay, announcements) stay - /// in the tray until acted on — but the badge is zeroed for all of - /// them, so the store's unseen set is zeroed to match: the dispatcher - /// computes every later badge from that set, and an unseen CrowdNode - /// record left behind would otherwise resurface in the badge alongside - /// the next new event. + /// stale, and notifications of retired kinds go with them. Other + /// threads (swap, DashPay, announcements) stay in the tray until acted + /// on — but the badge is zeroed for all of them, so the store's unseen + /// set is zeroed to match: the dispatcher computes every later badge + /// from that set, and an unseen record left behind would otherwise + /// resurface in the badge alongside the next new event. func reconcileAfterBecomingActive() async { // One item on the dispatcher's queue, not three steps racing it: a // post that has already read its unseen count must either finish @@ -95,7 +100,9 @@ final class NotificationLifecycle: NSObject { await submissions.run { [client, store] in client.setBadgeCount(0) await Self.clearTray(topic: .transactions, - extraIdentifiers: [Self.legacyTransactionIdentifier], + extraThreads: Self.retiredThreadIdentifiers, + extraIdentifiers: Self.retiredIdentifiers + .union([Self.legacyTransactionIdentifier]), client: client, store: store) await store.markAllSeen() @@ -118,21 +125,27 @@ final class NotificationLifecycle: NSObject { } #endif - /// Removes the delivered notifications on `topic`'s thread (plus any - /// `extraIdentifiers` regardless of thread — legacy identifiers - /// delivered by older builds) and marks the topic seen in the store. + /// Removes the delivered notifications on `topic`'s thread (plus those + /// on `extraThreads` and any `extraIdentifiers` regardless of thread — + /// legacy threads and identifiers delivered by older builds) and marks + /// the topic seen in the store. /// /// Static so it can be called from inside the serial queue's `@Sendable` /// closure with the two dependencies it needs, rather than capturing an /// `NSObject` subclass. private static func clearTray(topic: NotificationTopic, + extraThreads: Set = [], extraIdentifiers: Set = [], client: UserNotificationCenterClient, store: NotifiedEventStoring) async { let thread = topic.rawValue let delivered = await client.deliveredNotificationSummaries() let identifiers = delivered - .filter { $0.threadIdentifier == thread || extraIdentifiers.contains($0.identifier) } + .filter { + $0.threadIdentifier == thread + || extraThreads.contains($0.threadIdentifier) + || extraIdentifiers.contains($0.identifier) + } .map(\.identifier) if !identifiers.isEmpty { client.removeDeliveredNotifications(withIdentifiers: identifiers) @@ -199,16 +212,11 @@ final class NotificationLifecycle: NSObject { } } - /// Tap handling: decode the route and hand it to the router. The legacy - /// CrowdNode identifier predates encoded routes and folds into - /// `.staking`, keeping the old `AppDelegate` special case working for - /// already-delivered notifications. + /// Tap handling: decode the route and hand it to the router. A + /// notification without a route, or with one this build no longer + /// knows, just opens the app. func handleNotificationTap(identifier: String, userInfo: [AnyHashable: Any]) { - var route = DeepLinkRoute.decode(fromUserInfo: userInfo) - if route == nil, identifier == CrowdNode.notificationID { - route = .staking - } - guard let route else { return } + guard let route = DeepLinkRoute.decode(fromUserInfo: userInfo) else { return } router.open(route) } } diff --git a/DashWallet/Sources/Infrastructure/Notifications/NotificationRouter.swift b/DashWallet/Sources/Infrastructure/Notifications/NotificationRouter.swift index b0bb0091c6..8ef337d666 100644 --- a/DashWallet/Sources/Infrastructure/Notifications/NotificationRouter.swift +++ b/DashWallet/Sources/Infrastructure/Notifications/NotificationRouter.swift @@ -45,13 +45,6 @@ final class NotificationRouter: NotificationRouting { // destination: home is the root screen, nothing to present. break - case .staking: - // CrowdNode needs a synced wallet; before that, the tap just - // opens the app. - guard SyncingActivityMonitor.shared.state == .syncDone else { return } - let controller = CrowdNodeModelObjcWrapper.getRootVC() - presentingController()?.present(controller, animated: true) - case .url(let url): UIApplication.shared.open(url) diff --git a/DashWallet/Sources/Infrastructure/Notifications/NotificationsBootstrap.swift b/DashWallet/Sources/Infrastructure/Notifications/NotificationsBootstrap.swift index e043c8150e..b514711bd3 100644 --- a/DashWallet/Sources/Infrastructure/Notifications/NotificationsBootstrap.swift +++ b/DashWallet/Sources/Infrastructure/Notifications/NotificationsBootstrap.swift @@ -33,8 +33,6 @@ final class NotificationsBootstrap: NSObject { let lifecycle: NotificationLifecycle /// Posts a notification per newly persisted incoming transaction. let transactionProducer: TransactionNotificationProducer - /// Posts CrowdNode result/error messages (injected into `CrowdNode`). - let crowdNodeProducer: CrowdNodeNotificationProducer /// Posts a notification per swap order reaching a terminal state. let swapProducer: SwapNotificationProducer /// Schedules the 30-day "you still have funds" reminder on backgrounding. @@ -121,7 +119,6 @@ final class NotificationsBootstrap: NSObject { } }) self.backgroundGrace = BackgroundGraceHold(permissions: permissionCoordinator) - self.crowdNodeProducer = CrowdNodeNotificationProducer(dispatcher: dispatcher, store: store) // Foreground terminal-swap banners are suppressed only while the // live swap-status screen is on screen (it marks itself visible on // `SwapTrackingService`). @@ -156,9 +153,7 @@ final class NotificationsBootstrap: NSObject { // one rescan of every producer with a persisted source right after // the user grants posts them. Each producer's freshness window // bounds what can retroactively fire — only events at most 10 - // minutes old are admitted; older drops stay dropped. CrowdNode - // results are one-shot and intentionally not recovered - // (`CrowdNodeNotificationProducer`). + // minutes old are admitted; older drops stay dropped. let swapProducer = self.swapProducer permissionCoordinator.onAuthorizationGranted = { [weak transactionProducer, weak swapProducer] in if let transactionProducer { @@ -174,13 +169,9 @@ final class NotificationsBootstrap: NSObject { #endif } - // `CrowdNode.shared` is created before this graph exists (in - // `didFinishLaunching`), so its posting seam is injected statically - // instead of adding another global. - CrowdNode.notificationProducer = crowdNodeProducer - #if DASHPAY - // Same static-injection shape for the contacts service: its + // The contacts service exists before this graph, so its seam is + // injected statically instead of adding another global: its // `markNotificationsViewed` (every bell-screen exit) must also // clear the tray's dashpay thread and the store's dashpay // seen-state, without the pre-existing singleton depending on diff --git a/DashWallet/Sources/Infrastructure/Notifications/NotifiedEventStore.swift b/DashWallet/Sources/Infrastructure/Notifications/NotifiedEventStore.swift index d14223e086..f8881ff274 100644 --- a/DashWallet/Sources/Infrastructure/Notifications/NotifiedEventStore.swift +++ b/DashWallet/Sources/Infrastructure/Notifications/NotifiedEventStore.swift @@ -75,6 +75,20 @@ struct AddNotifiedEventsTable: Migration { } } +/// Marks seen the unseen events of topics the app no longer posts, so the +/// badge never counts an event that has nowhere to open. The rows stay, so +/// their ids keep deduplicating until the store prunes them. +struct MarkRetiredNotificationTopicsSeen: Migration { + var version: Int64 = 20261030120000 + + func migrateDatabase(_ db: Connection) throws { + typealias S = NotifiedEventSchema + try db.run(S.table + .filter(NotificationTopic.retiredRawValues.contains(S.colTopic) && S.colSeenAt == nil) + .update(S.colSeenAt <- Int64(Date().timeIntervalSince1970))) + } +} + // MARK: - NotifiedEventStore /// SQLite-backed store over the app's shared `store.db` (or any injected @@ -183,8 +197,8 @@ actor NotifiedEventStore: NotifiedEventStoring { typealias S = NotifiedEventSchema // Re-arms the id on both paths `markIfNew` can admit it through — // otherwise, while the database is failing, a caller that unmarks - // to post the same id again (CrowdNode's single result id) would see - // every later result refused as a duplicate. + // to post the same id again would see every later post refused as + // a duplicate. admittedWithoutRecord.remove(id) do { try connection.run(S.table.filter(S.colId == id).delete()) diff --git a/DashWallet/Sources/Infrastructure/Notifications/Producers/CrowdNodeNotificationProducer.swift b/DashWallet/Sources/Infrastructure/Notifications/Producers/CrowdNodeNotificationProducer.swift deleted file mode 100644 index ce99419684..0000000000 --- a/DashWallet/Sources/Infrastructure/Notifications/Producers/CrowdNodeNotificationProducer.swift +++ /dev/null @@ -1,108 +0,0 @@ -// -// Created by Roman Chornyi -// Copyright © 2026 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation -import UserNotifications - -// MARK: - CrowdNodeResultNotifying - -/// The seam `CrowdNode` posts its result/error messages through. -/// `CrowdNode.shared` is created before the notifications graph exists, so -/// `NotificationsBootstrap` injects the implementation statically -/// (`CrowdNode.notificationProducer`) instead of adding another global. -/// -/// The caller-side policy stays with the caller: `CrowdNode.notifyIfNeeded` -/// keeps its `showNotificationOnResult` guard (set by the CrowdNode screens -/// around user-visible operations), so only messages that pass it reach -/// this seam. -protocol CrowdNodeResultNotifying: AnyObject { - /// Fire-and-forget: posts a one-shot CrowdNode result or error message. - func postResult(message: String) -} - -// MARK: - CrowdNodeNotificationProducer - -/// Translates CrowdNode result/error messages into `AppNotification`s — -/// the dispatcher-backed replacement for the `UNMutableNotificationContent` -/// code that used to live inline in `CrowdNode.notifyIfNeeded`. -/// -/// Identity: these messages are one-shot UX events (signup finished, -/// address confirmed, operation failed) with no natural content identity, -/// and every message the guard lets through is news — but only the latest -/// one is worth a banner. `handleError` fires on every API error, so a -/// retrying operation produces a run of them. Every result is therefore -/// posted under one stable identifier (`resultNotificationID`): the -/// notification center replaces the delivered banner instead of stacking -/// one per retry, and the store holds at most one CrowdNode row, so the -/// badge counts one unseen result rather than one per retry. -/// -/// That id would make the store drop every message after the first as a -/// duplicate, so each post first re-arms it (`unmark`), serialized with the -/// post that follows so two results cannot race for the same row. If the -/// permission gate then drops the post, the previous row stays deleted — -/// its banner, if any, was already delivered and nothing new is posted. -/// Notifications delivered under the legacy "CrowdNode" id keep their -/// tap-fold to `.staking` in `NotificationLifecycle`. -/// -/// Post-grant catch-up: none, on purpose. A message the dispatcher dropped -/// while authorization was `.notDetermined` has no source to rescan and is -/// discarded rather than queued — the CrowdNode screen that ran the -/// operation shows its outcome inline, and a "signup finished" banner -/// arriving minutes later, after the user has moved on, would be noise -/// rather than news. The other producers (transactions, swaps, contacts) -/// rescan their persisted rows on the grant instead. -final class CrowdNodeNotificationProducer: CrowdNodeResultNotifying { - /// The request identifier and store id every CrowdNode result shares. - static let resultNotificationID = "crowdnode.result" - - private let dispatcher: NotificationDispatcher - /// The dispatcher's store, for re-arming `resultNotificationID`. - private let store: NotifiedEventStoring - /// Orders each re-arm with the post that follows it. - private let posts = NotificationSerialQueue() - - init(dispatcher: NotificationDispatcher, store: NotifiedEventStoring) { - self.dispatcher = dispatcher - self.store = store - } - - // MARK: CrowdNodeResultNotifying - - func postResult(message: String) { - Task { await post(message: message) } - } - - /// The awaitable body of `postResult` — behavior parity with the - /// legacy inline posting: `.crowdnode` topic, `.staking` route, default - /// sound, banner in the foreground. - @discardableResult - func post(message: String) async -> Bool { - let notification = AppNotification( - id: Self.resultNotificationID, - topic: .crowdnode, - title: nil, - body: message, - sound: .default, - route: .staking, - foregroundBehavior: .banner) - return await posts.run { [store, dispatcher] in - // The previous result's row, seen or not, gives way to this one. - await store.unmark(id: Self.resultNotificationID) - return await dispatcher.post(notification) - } - } -} diff --git a/DashWallet/Sources/Infrastructure/Notifications/Producers/TransactionNotificationProducer.swift b/DashWallet/Sources/Infrastructure/Notifications/Producers/TransactionNotificationProducer.swift index b963a7f5d7..d3c1143825 100644 --- a/DashWallet/Sources/Infrastructure/Notifications/Producers/TransactionNotificationProducer.swift +++ b/DashWallet/Sources/Infrastructure/Notifications/Producers/TransactionNotificationProducer.swift @@ -282,9 +282,7 @@ final class TransactionNotificationProducer { DWLogger.log("TransactionNotificationProducer: window not exhausted; the catch-up boundary must stay put") } - // After the rows above, not before: a CrowdNode deposit posts in every - // app state, and consuming its id first left the dispatcher nothing - // to post. `consume` leaves an id that was already posted untouched. + // `consume` leaves an id that was already posted untouched. if appState.isApplicationActive { await consumeShownRows() } @@ -327,7 +325,7 @@ final class TransactionNotificationProducer { !isShieldedWithdrawalPayout(row), row.wrapped.dashAmount > 0 else { continue } await store.consume(id: Self.notificationId(for: row), - topic: Self.topic(forAmount: row.wrapped.dashAmount)) + topic: .transactions) } } @@ -436,8 +434,8 @@ final class TransactionNotificationProducer { // or inactive — the foreground feed is already showing it. The id // is still consumed in the store, so a later scan (relaunch, // background refresh) cannot post a payment the user watched - // arrive. CrowdNode deposits post in every app state. - if notification.topic != .crowdnode, appState.isApplicationActive { + // arrive. + if appState.isApplicationActive { await store.consume(id: notification.id, topic: notification.topic) return .appActive } @@ -482,23 +480,10 @@ final class TransactionNotificationProducer { return tx.timestamp } - /// Classification picks copy, topic, sound, and route only — the - /// identity stays the txid, so a CrowdNode deposit still dedups per - /// transaction like every other received payment. + /// The identity is the txid, so a received payment dedups per + /// transaction. private func notification(for tx: ObservedTransaction, amount: UInt64) async -> AppNotification { let id = Self.notificationId(for: tx) - - if Self.topic(forAmount: amount) == .crowdnode { - return AppNotification( - id: id, - topic: .crowdnode, - title: nil, - body: NSLocalizedString("Your deposit to CrowdNode is received.", comment: "CrowdNode"), - sound: .default, - route: .staking, - foregroundBehavior: .banner) - } - let amountText = amount.formattedDashAmount let fiatText = await fiatFormatter(amount.dashAmount) return AppNotification( @@ -519,12 +504,6 @@ final class TransactionNotificationProducer { "tx.\(tx.txidHexDisplay)" } - /// The CrowdNode API encodes "deposit received" as an exact amount - /// (apiOffset + code) paid back to the account. - private static func topic(forAmount amount: UInt64) -> NotificationTopic { - amount == ApiCode.depositReceived.rawValue + CrowdNode.apiOffset ? .crowdnode : .transactions - } - // MARK: Production defaults /// The persisted catch-up boundary the background sweep reads. diff --git a/DashWallet/Sources/Infrastructure/RetiredCrowdNodeDefaults.swift b/DashWallet/Sources/Infrastructure/RetiredCrowdNodeDefaults.swift new file mode 100644 index 0000000000..53d4dd1bb2 --- /dev/null +++ b/DashWallet/Sources/Infrastructure/RetiredCrowdNodeDefaults.swift @@ -0,0 +1,107 @@ +// +// Created by Dash Core Group. +// Copyright © 2026 Dash Core Group. All rights reserved. +// +// Licensed under the MIT License (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://opensource.org/licenses/MIT +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +import UIKit +import WebKit + +/// Removes the UserDefaults the app's CrowdNode integration wrote, and the +/// cookies and website data its web screens left. The app no longer reads +/// any of them. +/// +/// Runs once, recorded by a done flag. Before the first unlock after a reboot +/// UserDefaults can read back empty, and a flag written then would skip the +/// keys for good, so a launch without protected data leaves the work to the +/// next one. +@objc(DWRetiredCrowdNodeDefaults) +final class RetiredCrowdNodeDefaults: NSObject { + static let doneKey = "retiredCrowdNodeDefaultsRemoved" + + /// Keys stored as written, not per wallet. The names are copied byte for + /// byte: the online-state key starts with a Cyrillic "с" (U+0441), and + /// some names don't mention CrowdNode at all. + static let globalKeys: [String] = [ + "crowdNodeInfoShownKey", + "crowdNodeWithdrawalLimitPerTxKey", + "crowdNodeWithdrawalLimitPerHourKey", + "crowdNodeWithdrawalLimitPerDayKey", + "crowdNodeWithdrawalLimitsInfoShownKey", + "feePercentageKey", + "crowdNodeOnlineAccountAddressKey", + ] + + /// Keys stored once per wallet as `_`, and also bare + /// by installs that predate per-wallet scoping. + static let perWalletKeys: [String] = [ + "lastKnownCrowdNodeBalanceKey", + "\u{0441}rowdNodeOnlineAccountStateKey", + "crowdNodeAccountAddressKey", + "crowdNodePrimaryAddressKey", + "crowdNodeConfirmationDialogShownKey", + "crowdNodeOnlineInfoShownKey", + "crowdNodeSignedEmailMessageId", + "shouldShowConfirmedNotification", + "lastWithdrawalBlockKey", + "crowdNodeFruitlessRestoreTxCountKey", + ] + + @MainActor @objc + static func removeAllOnce() { + let didRun = removeAllOnce(from: .standard, + isProtectedDataAvailable: UIApplication.shared.isProtectedDataAvailable) + if didRun { + removeWebsiteData() + } + } + + /// Removes the defaults unless already recorded as done or protected data + /// is unavailable. Returns whether it ran. + @discardableResult + static func removeAllOnce(from defaults: UserDefaults, isProtectedDataAvailable: Bool) -> Bool { + guard isProtectedDataAvailable, !defaults.bool(forKey: doneKey) else { return false } + removeAll(from: defaults) + defaults.set(true, forKey: doneKey) + return true + } + + /// The service's hosts end in this domain on every network. + private static let webDomain = "crowdnode.io" + + @MainActor + private static func removeWebsiteData() { + let cookies = HTTPCookieStorage.shared + for cookie in cookies.cookies ?? [] where cookie.domain.hasSuffix(webDomain) { + cookies.deleteCookie(cookie) + } + let store = WKWebsiteDataStore.default() + store.fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in + let retired = records.filter { $0.displayName.hasSuffix(webDomain) } + guard !retired.isEmpty else { return } + store.removeData(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes(), for: retired) { } + } + } + + static func removeAll(from defaults: UserDefaults) { + for key in globalKeys + perWalletKeys { + defaults.removeObject(forKey: key) + } + let prefixes = perWalletKeys.map { "\($0)_" } + for key in defaults.dictionaryRepresentation().keys + where prefixes.contains(where: { key.hasPrefix($0) }) { + defaults.removeObject(forKey: key) + } + } +} diff --git a/DashWallet/Sources/Infrastructure/SwiftDashSDK/Contacts/SwiftDashSDKContactsService.swift b/DashWallet/Sources/Infrastructure/SwiftDashSDK/Contacts/SwiftDashSDKContactsService.swift index 0e16bee6b3..78c58535dc 100644 --- a/DashWallet/Sources/Infrastructure/SwiftDashSDK/Contacts/SwiftDashSDKContactsService.swift +++ b/DashWallet/Sources/Infrastructure/SwiftDashSDK/Contacts/SwiftDashSDKContactsService.swift @@ -295,8 +295,7 @@ final class SwiftDashSDKContactsService: ObservableObject { // MARK: - Notifications read-state (bell badge) - /// Injected by `NotificationsBootstrap` — the same static-injection - /// seam shape as `CrowdNode.notificationProducer`, because this + /// Injected by `NotificationsBootstrap` as a static seam, because this /// singleton is created before the notifications graph exists and must /// not depend on the module directly. Fired by every /// `markNotificationsViewed`, so the notifications module can clear diff --git a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKHost.swift b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKHost.swift index 29e35b3bd5..27bc1a406c 100644 --- a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKHost.swift +++ b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKHost.swift @@ -600,8 +600,7 @@ final class SwiftDashSDKHost { /// the runtime handles don't expose. The instances derive keys locally /// (no networking, no persistence); drop them when done. /// - /// Consumers: the masternode Owner/Voting key deriver and CrowdNode - /// message signing. Returns nil when no wallet is bound/running or the + /// Consumer: the masternode Owner/Voting key deriver. Returns nil when no wallet is bound/running or the /// mnemonic can't be read (logged). func derivationWallet() -> (manager: WalletManager, wallet: Wallet, walletId: Data)? { guard let hostWalletId = wallet?.walletId, let network = runningNetwork else { diff --git a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKTransactionSender.swift b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKTransactionSender.swift index e8e5535c19..9900683dc3 100644 --- a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKTransactionSender.swift +++ b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKTransactionSender.swift @@ -17,8 +17,8 @@ // payment-output broadcast path stamps `alreadyAuthorized` so it doesn't // re-prompt. // -// The selected-input (CrowdNode) and CoinJoin-sweep paths below broadcast -// inline — post-auth programmatic flows with no confirmation UI. +// The CoinJoin-sweep path below broadcasts inline — a post-auth +// programmatic flow with no confirmation UI. // // This file intentionally does NOT import DashSync. // @@ -67,14 +67,8 @@ final class SwiftDashSDKTransactionSender: NSObject { /// (`DashpayExternalAccount`) is a contact's watch-only coins and is NOT /// pooled — the local seed cannot sign them. private static let dashpayReceivingTypeTag: UInt8 = 12 - /// Signal sends spend from the primary BIP44 account. + /// The primary BIP44 account, the one Core sends fund from. private static let bip44AccountIndex: UInt32 = 0 - /// How long to wait for a just-broadcast funding output to appear in the - /// SDK's UTXO set (the local mempool apply is async relative to - /// `broadcastTransaction` returning). - private static let selectedInputUtxoTimeout: TimeInterval = 30 - /// Poll interval for the UTXO wait above. - private static let selectedInputPollInterval: TimeInterval = 0.5 // MARK: - Build & Sign @@ -610,152 +604,10 @@ final class SwiftDashSDKTransactionSender: NSObject { } } - // MARK: - Selected-input send (CrowdNode signal txs) - - /// Build, sign, and broadcast a transaction funded ONLY from UTXOs sitting - /// on `fromAddress`, with change returned to `fromAddress`. - /// - /// SwiftDashSDK replacement for the retired DashSync - /// `LegacySelectedInputSendExecutor`. CrowdNode identifies the user by the - /// address its signal transactions originate from, so both the inputs and - /// the change must stay on the account address, and the destination output - /// must carry the exact signal amount (`apiOffset + ApiCode`). - /// - /// Semantic delta vs legacy: the legacy path spent ALL outputs of specific - /// candidate transactions matching the address; this path spends from the - /// address's current UTXO pool. Same sender address, change back to it — - /// the CrowdNode-visible semantics hold. - /// - /// Freshness: signup/deposit spend a just-broadcast top-up output. The SDK - /// applies its own broadcasts to the local mempool asynchronously (0-conf - /// outputs are spendable once applied), so the UTXO set is polled until - /// the required funds appear or `selectedInputUtxoTimeout` elapses. - /// - /// - Parameters: - /// - fromAddress: The address whose UTXOs fund the send and receive the change. - /// - address: Destination Dash address (Base58Check). - /// - amount: Amount to send in duffs — passed through untouched unless - /// `adjustAmountDownwards` fires. - /// - adjustAmountDownwards: Mirror of the legacy executor's single retry: - /// when the address balance can't cover `amount + fee`, send - /// `amount − fee` instead (used by the confirmation-forward). - /// - Returns: Tuple of (serialized signed tx bytes, exact fee in duffs, 32-byte txHash). - static func buildAndSignFromAddress( - fromAddress: String, - to address: String, - amount: UInt64, - adjustAmountDownwards: Bool - ) async throws -> (txData: Data, fee: UInt64, txHash: Data) { - logger.info("💸 TXSEND :: selected-input send — amount=\(amount, privacy: .public) adjust=\(adjustAmountDownwards, privacy: .public)") - - // Resolve the sender address to its P2PKH/P2SH script for byte-exact - // UTXO matching (`AccountUtxo` carries scriptPubkey, not an address). - // The resolver keeps this file free of DashSync imports. - let network: PaymentNetwork - do { - network = try PaymentNetworkResolver.current() - } catch { - throw SendError.walletNotReady("unsupported network for selected-input send") - } - guard let script = ScriptAddressCodec.scriptPubKey(forAddress: fromAddress, network: network) else { - throw SendError.invalidInput("cannot derive scriptPubKey for the funding address") - } - - // Wait for the address's UTXOs to cover the send (tolerates the async - // mempool apply of a just-broadcast top-up). For adjust-downwards sends - // any funds at all are workable — the amount shrinks to fit. - let minimumTotal = adjustAmountDownwards ? 1 : amount + estimatedSignalFee(inputCount: 1) - let utxos = try await waitForAddressUtxos(script: script, minimumTotal: minimumTotal) - - // Deterministic legacy-parity pre-adjust: same size-based estimate as - // `chain.fee(forTxSize:)` at the relay-minimum rate, single-shot - // adjustment exactly like the legacy executor's one retry. `.all` - // drain is deliberately avoided — it would over-send whenever the - // address balance exceeds the signal amount. - let selected = utxos.reduce(UInt64(0)) { $0 + $1.valueDuffs } - let feeEstimate = estimatedSignalFee(inputCount: utxos.count) - let adjusted = amount + feeEstimate > selected - if adjusted, !(adjustAmountDownwards && amount > feeEstimate) { - throw SendError.insufficientSelectedFunds(selected: selected, amount: amount, fee: feeEstimate) - } - let sendAmount = adjusted ? amount - feeEstimate : amount - - let (txData, exactFee): (Data, UInt64) = try await MainActor.run { - guard let wallet = SwiftDashSDKHost.shared.wallet, - let network = SwiftDashSDKHost.shared.runningNetwork else { - throw SendError.walletNotReady("PlatformWalletManager wallet is not available") - } - let core = try wallet.coreWallet() - let builder = try CoreTransactionBuilder(network: network) - try builder.addInputs( - wallet: wallet, accountType: .bip44, - accountIndex: Self.bip44AccountIndex, utxos: utxos) - try builder.addOutput(address: address, amountDuffs: sendAmount) - // Required with `addInputs` (funding selection is what normally - // routes change) — and the change MUST return to the sender address - // so CrowdNode keeps recognizing the account. - try builder.setChangeAddress(fromAddress) - try builder.setFeeRate(satPerKb: Self.feeRateSatPerKb) - let tx = try builder.finalizeAtomic( - wallet: wallet, accountType: .bip44, accountIndex: Self.bip44AccountIndex) - // Serialize BEFORE broadcast — broadcasting consumes the handle. - let data = try tx.serializedData() - let fee = tx.fee - let outcome = try core.broadcastTransactionWithOutcome(tx) - _ = try Self.requireAccepted(outcome) - return (data, fee) - } - - let txHash = computeTxHash(from: txData) - logger.info("💸 TXSEND :: selected-input send broadcast — txHash=\(txHash.map { String(format: "%02x", $0) }.joined(), privacy: .public) fee=\(exactFee, privacy: .public) adjusted=\(adjusted, privacy: .public) inputs=\(utxos.count, privacy: .public)") - return (txData, exactFee, txHash) - } - - /// The BIP44 account-0 UTXOs sitting on `script`, unlocked only. - /// Byte-exact scriptPubkey compare — no per-UTXO address decoding. - @MainActor - private static func addressUtxos(script: Data) throws -> [PlatformWalletManager.AccountUtxo] { - let host = SwiftDashSDKHost.shared - guard let wallet = host.wallet, let manager = host.manager else { - throw SendError.walletNotReady("PlatformWalletManager wallet is not available") - } - // BIP44 account-0 balance descriptor (mirrors the sweep's CoinJoin - // descriptor resolution above). - guard let bip44 = manager.accountBalances(for: wallet.walletId).first(where: { - $0.typeTag == Self.bip44TypeTag - && $0.standardTag == Self.bip44StandardTag - && $0.index == Self.bip44AccountIndex - }) else { - return [] - } - return manager.accountUtxos(for: wallet.walletId, balance: bip44) - .filter { !$0.isLocked && $0.scriptPubkey == script } - } - - /// Poll `addressUtxos` until their sum covers `minimumTotal` or the - /// timeout elapses; returns the last snapshot either way (the caller - /// decides insufficiency). Sleeps off-main between polls. - private static func waitForAddressUtxos( - script: Data, minimumTotal: UInt64 - ) async throws -> [PlatformWalletManager.AccountUtxo] { - let deadline = Date().addingTimeInterval(selectedInputUtxoTimeout) - var polls = 0 - while true { - polls += 1 - let utxos = try await MainActor.run { try addressUtxos(script: script) } - let total = utxos.reduce(UInt64(0)) { $0 + $1.valueDuffs } - if total >= minimumTotal || Date() >= deadline { - logger.info("💸 TXSEND :: selected-input UTXO wait — polls=\(polls, privacy: .public) utxos=\(utxos.count, privacy: .public) total=\(total, privacy: .public) needed=\(minimumTotal, privacy: .public)") - return utxos - } - try await Task.sleep(nanoseconds: UInt64(selectedInputPollInterval * 1_000_000_000)) - } - } - - /// Size-based fee estimate for a signal send at the relay-minimum + /// Size-based fee estimate for a P2PKH send at the relay-minimum /// 1 duff/byte: base 10 + 148/input + 34 × 2 outputs (dest + change). /// Mirrors the legacy `chain.fee(forTxSize: tx.size + TX_OUTPUT_SIZE)`. - private static func estimatedSignalFee(inputCount: Int) -> UInt64 { + private static func estimatedFee(inputCount: Int) -> UInt64 { UInt64(10 + inputCount * 148 + 2 * 34) } @@ -765,7 +617,7 @@ final class SwiftDashSDKTransactionSender: NSObject { /// The flat `WalletBalance.sendFeeReserveDuffs` (100_000 duffs) is a large /// worst-case over-estimate — a typical send costs ~1–2k duffs, so Max used /// to leave ~0.001 DASH behind as change. Here the reserve is the same - /// size model as `estimatedSignalFee` (1 duff/byte over the enumerated + /// size model as `estimatedFee` (1 duff/byte over the enumerated /// inputs) plus a **+50 % safety margin** so it can never *under*-reserve — /// an under-estimate would make the Max send fail to build. /// @@ -803,7 +655,7 @@ final class SwiftDashSDKTransactionSender: NSObject { total + manager.accountUtxos(for: walletId, balance: balance).count } guard count > 0 else { return nil } - let base = estimatedSignalFee(inputCount: count) + let base = estimatedFee(inputCount: count) return base + base / 2 // +50 % margin — must never under-reserve } @@ -982,7 +834,6 @@ final class SwiftDashSDKTransactionSender: NSObject { case invalidInput(String) case invalidSwapMemo(String) case walletNotReady(String) - case insufficientSelectedFunds(selected: UInt64, amount: UInt64, fee: UInt64) case transactionRejected(txid: String, reason: String) case transactionStatusUnknown(txid: String, reason: String) @@ -994,8 +845,6 @@ final class SwiftDashSDKTransactionSender: NSObject { return reason case .walletNotReady(let reason): return "Wallet not ready: \(reason)" - case .insufficientSelectedFunds(let selected, let amount, let fee): - return "Not enough funds. Selected: \(selected), Amount: \(amount), Fee: \(fee)" case .transactionRejected(_, let reason): return "The transaction wasn't sent. You can try again. \(reason)" case .transactionStatusUnknown(_, let reason): diff --git a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletRuntime.swift b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletRuntime.swift index 0b8d56c389..eb971840eb 100644 --- a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletRuntime.swift +++ b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletRuntime.swift @@ -1288,9 +1288,9 @@ final class SwiftDashSDKWalletRuntime: NSObject { target: network) } - /// Internal (was private): reused by CrowdNode's TransactionObserver row - /// scanner to render decoded addresses for the active network — reuse, not - /// a copy, per the repo's no-copy-then-adapt guardrail. + /// Internal, not private: reused by `TransactionObserver`'s row scanner + /// to render decoded addresses for the active network — reuse, not a + /// copy, per the repo's no-copy-then-adapt guardrail. func resolveCurrentNetwork() -> Result { steps.resolveCurrentNetwork() } diff --git a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletState.swift b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletState.swift index 59d7e3e329..8769818910 100644 --- a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletState.swift +++ b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletState.swift @@ -85,8 +85,8 @@ public struct WalletBalance: Equatable, Sendable { /// Conservative fee headroom reserved on top of a fixed-amount send so a /// "Max"/affordability value stays sendable. Approximate — Core has no - /// pre-build fee-estimate FFI yet (the send path settles the exact fee via - /// `adjustAmountDownwards`); sized for a realistic multi-input InstantSend + /// pre-build fee-estimate FFI yet (the send path settles the exact fee + /// when it builds); sized for a realistic multi-input InstantSend /// (10 × DashSync `TX_FEE_PER_INPUT` of 10_000 = 100_000 duffs ≈ 0.001 DASH). public static let sendFeeReserveDuffs: UInt64 = 100_000 diff --git a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletWiper.swift b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletWiper.swift index 8f539831fb..03f13ee567 100644 --- a/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletWiper.swift +++ b/DashWallet/Sources/Infrastructure/SwiftDashSDK/SwiftDashSDKWalletWiper.swift @@ -326,7 +326,6 @@ final class SwiftDashSDKWalletWiper: NSObject { App.shared.cleanUp() DWGlobalOptions.sharedInstance().restoreToDefaults() DWAppGroupOptions.sharedInstance().restoreToDefaults() - CrowdNode.shared.resetForWipe() } // These stores use UserDefaults + locks and are safe on this queue. @@ -986,8 +985,8 @@ final class SwiftDashSDKWalletWiper: NSObject { } // Clear this wallet's per-wallet app-side state that lives outside the - // SDK/SwiftData/Keychain teardown above: CrowdNode account state and the - // CoinJoin withdrawal tag set are UserDefaults, keyed by walletId hex. + // SDK/SwiftData/Keychain teardown above: the CoinJoin and shielded + // withdrawal tag sets are UserDefaults, keyed by walletId hex. // Done here (not in the UI) so BOTH the per-wallet Remove flow and the // full wipe's per-wallet loop clear them — one shared deletion primitive // (guardrail #1). Hex must match `WalletEnvironment.activeWalletIdHex` @@ -996,7 +995,6 @@ final class SwiftDashSDKWalletWiper: NSObject { clearAppState(walletId) } else { let walletIdHex = walletId.map { String(format: "%02x", $0) }.joined() - CrowdNodeDefaults.shared.clearPerWalletKeys(forWalletIdHex: walletIdHex) CoinJoinWithdrawalStore.shared.clearForWallet(walletIdHex: walletIdHex) ShieldedWithdrawalStore.shared.clearForWallet(walletIdHex: walletIdHex) // The full wipe can continue after another scope's deletion fails. diff --git a/DashWallet/Sources/Infrastructure/SwiftDashSDK/WalletEnvironment.swift b/DashWallet/Sources/Infrastructure/SwiftDashSDK/WalletEnvironment.swift index 09ee9b846c..9478b0cc8d 100644 --- a/DashWallet/Sources/Infrastructure/SwiftDashSDK/WalletEnvironment.swift +++ b/DashWallet/Sources/Infrastructure/SwiftDashSDK/WalletEnvironment.swift @@ -115,8 +115,8 @@ public final class WalletEnvironment: NSObject { /// managed switch (the runtime's `switchNetwork(to:)` owns the mirror /// zeroing and the lifecycle refresh itself) from an external write /// (recovery, sole-network selection), which still gets the full - /// observer behavior. Other listeners (DWRootModel, HomeViewModel, - /// CrowdNode, …) ignore `userInfo` and are unaffected. + /// observer behavior. Other listeners (DWRootModel, HomeViewModel, …) + /// ignore `userInfo` and are unaffected. public enum NetworkSwitchSource { case external case managedSwitch(transitionID: String) diff --git a/DashWallet/Sources/Models/Coinbase/Coinbase+Error.swift b/DashWallet/Sources/Models/Coinbase/Coinbase+Error.swift index 5325f47de1..06ad5a4a3e 100644 --- a/DashWallet/Sources/Models/Coinbase/Coinbase+Error.swift +++ b/DashWallet/Sources/Models/Coinbase/Coinbase+Error.swift @@ -44,7 +44,7 @@ extension Coinbase { case .rateNotFound: return NSLocalizedString("Could not find exchange rate.", comment: "") case .depositFailed: - return NSLocalizedString("We couldn’t make a deposit to your CrowdNode account.", comment: "Coinbase") + return NSLocalizedString("Couldn't complete the transfer", comment: "Coinbase") } } diff --git a/DashWallet/Sources/Models/CrowdNode/API/CrowdNodeEndpoint.swift b/DashWallet/Sources/Models/CrowdNode/API/CrowdNodeEndpoint.swift deleted file mode 100644 index 64de5a96a0..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/CrowdNodeEndpoint.swift +++ /dev/null @@ -1,76 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Moya - -public enum MessageType: Int { - case registerEmail = 1 - case withdrawal = 4 -} - -// MARK: - CrowdNodeEndpoint - -public enum CrowdNodeEndpoint { - case getTransactions(String) - case getBalance(String) - case getWithdrawalLimits(String) - case isAddressInUse(String) - case addressStatus(String) - case hasDefaultEmail(String) - case sendSignedMessage(address: String, message: String, signature: String, messagetype: MessageType) - case getMessages(String) - case getFees(String) -} - -// MARK: TargetType - -extension CrowdNodeEndpoint: TargetType { - - public var baseURL: URL { - URL(string: CrowdNode.baseUrl)! - } - - public var path: String { - switch self { - case .getTransactions(let address): return "odata/apifundings/GetFunds(address='\(address)')" - case .getBalance(let address): return "odata/apifundings/GetBalance(address='\(address)')" - case .getWithdrawalLimits(let address): return "odata/apifundings/GetWithdrawalLimits(address='\(address)')" - case .isAddressInUse(let address): return "odata/apiaddresses/IsApiAddressInUse(address='\(address)')" - case .addressStatus(let address): return "odata/apiaddresses/AddressStatus(address='\(address)')" - case .hasDefaultEmail(let address): return "odata/apiaddresses/UsingDefaultApiEmail(address='\(address)')" - case .sendSignedMessage(let address, let message, let signature, let messagetype): return "odata/apimessages/SendMessage(address='\(address)',message='\(message)',signature='\(signature)',messagetype=\(messagetype.rawValue))" - case .getMessages(let address): return "odata/apimessages/GetMessages(address='\(address)')" - case .getFees(let address): return "odata/apifundings/GetFeeJson(address='\(address)')" - } - } - - public var method: Moya.Method { - .get - } - - public var task: Moya.Task { - .requestPlain - } - - public var headers: [String : String]? { - [:] - } -} - -final class CrowdNodeAPI: HTTPClient { - static let shared = CrowdNodeAPI() -} diff --git a/DashWallet/Sources/Models/CrowdNode/API/DTOs/AddressStatus.swift b/DashWallet/Sources/Models/CrowdNode/API/DTOs/AddressStatus.swift deleted file mode 100644 index fecfa9eea8..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/DTOs/AddressStatus.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -struct AddressStatus: Codable { - let status: String - - enum CodingKeys: String, CodingKey { - case status = "Status" - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/API/DTOs/CrowdNodeBalance.swift b/DashWallet/Sources/Models/CrowdNode/API/DTOs/CrowdNodeBalance.swift deleted file mode 100644 index f8c969d4f5..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/DTOs/CrowdNodeBalance.swift +++ /dev/null @@ -1,30 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -struct CrowdNodeBalance: Codable { - let dashAddress: String - let totalBalance: Double - let totalActiveBalance: Double - let totalDividend: Double - - enum CodingKeys: String, CodingKey { - case dashAddress = "DashAddress" - case totalBalance = "TotalBalance" - case totalActiveBalance = "TotalActiveBalance" - case totalDividend = "TotalDividend" - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/API/DTOs/FeeInfo.swift b/DashWallet/Sources/Models/CrowdNode/API/DTOs/FeeInfo.swift deleted file mode 100644 index 59827bdb30..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/DTOs/FeeInfo.swift +++ /dev/null @@ -1,46 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2024 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -private let kDefaultAmount = 100.0 -private let kTypeNormal = "Normal" - -struct FeeInfo: Codable { - static let empty = FeeInfo(feeLadder: [FeeLadder.empty]) - let feeLadder: [FeeLadder] - - enum CodingKeys: String, CodingKey { - case feeLadder = "FeeLadder" - } - - func getNormalFee() -> FeeLadder? { - return feeLadder.first { $0.type == kTypeNormal } - } -} - -struct FeeLadder: Codable { - let name: String - let type: String - let amount: Double - let fee: Double - - static let empty = FeeLadder( - name: "", - type: kTypeNormal, - amount: kDefaultAmount, - fee: CrowdNode.defaultFee * 100 - ) -} diff --git a/DashWallet/Sources/Models/CrowdNode/API/DTOs/IsAddressInUse.swift b/DashWallet/Sources/Models/CrowdNode/API/DTOs/IsAddressInUse.swift deleted file mode 100644 index 34aded4552..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/DTOs/IsAddressInUse.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -struct IsAddressInUse: Codable { - let isInUse: Bool - let primaryAddress: String? - - enum CodingKeys: String, CodingKey { - case isInUse = "inUse" - case primaryAddress = "DashAddress" - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/API/DTOs/IsDefaultEmail.swift b/DashWallet/Sources/Models/CrowdNode/API/DTOs/IsDefaultEmail.swift deleted file mode 100644 index 41846b53ab..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/DTOs/IsDefaultEmail.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -struct IsDefaultEmail: Codable { - let isDefault: Bool - - enum CodingKeys: String, CodingKey { - case isDefault = "value" - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/API/DTOs/MessageStatus.swift b/DashWallet/Sources/Models/CrowdNode/API/DTOs/MessageStatus.swift deleted file mode 100644 index b90380c522..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/DTOs/MessageStatus.swift +++ /dev/null @@ -1,28 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -struct MessageStatus: Codable { - let id: Int - let messageStatus: String - let result: String? - - enum CodingKeys: String, CodingKey { - case id = "Id" - case messageStatus = "MessageStatus" - case result = "Result" - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/API/DTOs/WithdrawalLimit.swift b/DashWallet/Sources/Models/CrowdNode/API/DTOs/WithdrawalLimit.swift deleted file mode 100644 index e9790b2cf6..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/API/DTOs/WithdrawalLimit.swift +++ /dev/null @@ -1,41 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -// MARK: - WithdrawalLimit - -struct WithdrawalLimit: Codable { - static let maxPerTxKey = "AmountApiWithdrawalMax" - static let maxPer1hKey = "AmountApiWithdrawal1hMax" - static let maxPer24hKey = "AmountApiWithdrawal24hMax" - - let key: String - let value: String - - enum CodingKeys: String, CodingKey { - case key = "Key" - case value = "Value" - } -} - -// MARK: - WithdrawalLimitPeriod - -enum WithdrawalLimitPeriod: Int { - case perTransaction = 0 - case perHour = 1 - case perDay = 2 - case perBlock = 3 -} diff --git a/DashWallet/Sources/Models/CrowdNode/CrowdNode+Constants.swift b/DashWallet/Sources/Models/CrowdNode/CrowdNode+Constants.swift deleted file mode 100644 index 084d05db34..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/CrowdNode+Constants.swift +++ /dev/null @@ -1,76 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -extension CrowdNode { - private static let crowdNodeTestNetAddress = "yMY5bqWcknGy5xYBHSsh2xvHZiJsRucjuy" - private static let crowdNodeMainNetAddress = "XjbaGWaGnvEtuQAUoBgDxJWe8ZNv45upG2" - - static var crowdNodeAddress: String { - if WalletEnvironment.isMainnet { - return crowdNodeMainNetAddress - } - else { - return crowdNodeTestNetAddress - } - } - - static let minimumRequiredDash: UInt64 = 1_000_000 - static let requiredForSignup = minimumRequiredDash - 100_000 - static let requiredForAcceptTerms: UInt64 = 100_000 - static let apiOffset: UInt64 = 20000 - static let minimumDeposit = UInt64(kOneDash / 2) - static let minimumLeftoverBalance: UInt64 = 30_000 - static let apiConfirmationDashAmount: UInt64 = 54321 - static let defaultFee = 0.35 - - static let notificationID = "CrowdNode" - - private static let mainnetBaseUrl = "https://app.crowdnode.io/" - private static let testnetBaseUrl = "https://test.crowdnode.io/" - - static var baseUrl: String { - if WalletEnvironment.isMainnet { - return mainnetBaseUrl - } - else { - return testnetBaseUrl - } - } - - static var fundsOpenUrl: String { baseUrl + "FundsOpen/" } - static var apiLinkUrl: String { baseUrl + "APILink/" } - static var profileUrl: String { baseUrl + "Profile" } - - private static let mainnetLoginUrl = "https://login.crowdnode.io" - private static let testnetLoginUrl = "https://logintest.crowdnode.io" - - static var loginUrl: String { - if WalletEnvironment.isMainnet { - return mainnetLoginUrl - } - else { - return testnetLoginUrl - } - } - - static let websiteUrl = "https://crowdnode.io/" - static let termsOfUseUrl = "https://crowdnode.io/terms/" - static let privacyPolicyUrl = "https://crowdnode.io/privacy/" - static let supportUrl = "https://knowledge.crowdnode.io/" - static let withdrawalLimitsUrl = "https://knowledge.crowdnode.io/en/articles/6387601-api-withdrawal-limits" - static let howToVerifyUrl = "https://knowledge.crowdnode.io/en/articles/6114502-how-to-confirm-your-api-dash-address" -} diff --git a/DashWallet/Sources/Models/CrowdNode/CrowdNode+UserDefaults.swift b/DashWallet/Sources/Models/CrowdNode/CrowdNode+UserDefaults.swift deleted file mode 100644 index 6aa76244d4..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/CrowdNode+UserDefaults.swift +++ /dev/null @@ -1,352 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -// Genuinely app-global keys: user-level UX-education flags shown once ever, and -// CrowdNode service parameters (withdrawal limits, fee) that are refreshed from -// the CrowdNode API and identical for every account. These describe the app/user -// or the service, not one wallet's CrowdNode relationship — they stay global. -private let kInfoShown = "crowdNodeInfoShownKey" -private let kWithdrawalLimitPerTx = "crowdNodeWithdrawalLimitPerTxKey" -private let kWithdrawalLimitPerHour = "crowdNodeWithdrawalLimitPerHourKey" -private let kWithdrawalLimitPerDay = "crowdNodeWithdrawalLimitPerDayKey" -private let kWithdrawalLimitsInfoShown = "crowdNodeWithdrawalLimitsInfoShownKey" -private let kFeePercentage = "feePercentageKey" - -// Per-wallet keys: everything below describes ONE wallet's CrowdNode account -// (its funding/primary address, that account's signup/online state, its last -// known balance, its pending confirmation notification, its email-signing -// message id, its last withdrawal block). These are the LEGACY key names — kept -// as the migration source and as the fallback when no wallet is active — routed -// through `perWalletKey(_:)` so the effective key is `_`. -private let kLastKnownBalance = "lastKnownCrowdNodeBalanceKey" -private let kOnlineAccountState = "сrowdNodeOnlineAccountStateKey" -private let kCrowdNodeAccountAddress = "crowdNodeAccountAddressKey" -private let kCrowdNodePrimaryAddress = "crowdNodePrimaryAddressKey" -private let kConfirmationDialogShown = "crowdNodeConfirmationDialogShownKey" -private let kOnlineInfoShown = "crowdNodeOnlineInfoShownKey" -private let kSignedEmailMessageId = "crowdNodeSignedEmailMessageId" -private let kShouldShowConfirmedNotification = "shouldShowConfirmedNotification" -private let kLastWithdrawalBlock = "lastWithdrawalBlockKey" -// Unlike the keys above this one is NOT legacy — it was introduced after the -// per-wallet scoping, so no pre-multi-wallet install ever wrote the bare key. -// It still routes through `perWalletKey(_:)` like the rest: the bare name is -// only the no-active-wallet fallback. -private let kFruitlessRestoreTxCount = "crowdNodeFruitlessRestoreTxCountKey" - -/// The set of legacy keys that are scoped per wallet. Enumerated by `resetForWipe` -/// (which must clear the per-wallet variant for EVERY wallet) and used by -/// `CrowdNodeDefaults.perWalletKeysToClear(forWalletIdHex:)` to build the exact -/// per-wallet keys to remove when a single wallet is deleted. -private let kPerWalletKeys = [ - kLastKnownBalance, - kOnlineAccountState, - kCrowdNodeAccountAddress, - kCrowdNodePrimaryAddress, - kConfirmationDialogShown, - kOnlineInfoShown, - kSignedEmailMessageId, - kShouldShowConfirmedNotification, - kLastWithdrawalBlock, - kFruitlessRestoreTxCount, -] - -// MARK: - CrowdNodeDefaults - -class CrowdNodeDefaults { - public static let shared: CrowdNodeDefaults = .init() - - // MARK: - Per-wallet key scoping - // - // CrowdNode state describes ONE wallet's CrowdNode account (bound to a - // funding address in a specific wallet). With multi-wallet switching, an - // app-global key would show wallet A's CrowdNode balance/account under - // wallet B. The per-wallet keys above are scoped by the active walletId, - // mirroring the mechanism `DWGlobalOptions` established for its per-wallet - // flags: effective key = `_`, resolved live on - // every access; seeded once from the legacy key on first read for a wallet; - // legacy key kept dormant and used as the fallback when no wallet is active - // yet (e.g. before the SDK binds a wallet). The active id comes from - // `WalletEnvironment.activeWalletIdHex`. - - /// The active wallet's per-wallet key for `legacyKey`, or `nil` when no - /// wallet is active yet (fresh install / post-wipe window) — callers fall - /// back to the legacy global key in that case. - private func perWalletKey(_ legacyKey: String) -> String? { - guard let walletIdHex = WalletEnvironment.activeWalletIdHex as String?, - !walletIdHex.isEmpty else { - return nil - } - return "\(legacyKey)_\(walletIdHex)" - } - - /// Resolve the effective UserDefaults key for a per-wallet `legacyKey`, - /// seeding the per-wallet key once from the legacy value on first read so an - /// existing single-wallet install keeps its CrowdNode state. Returns the - /// legacy key itself when no wallet is active (fallback). - private func resolvedKey(_ legacyKey: String) -> String { - let defaults = UserDefaults.standard - guard let key = perWalletKey(legacyKey) else { return legacyKey } - if defaults.object(forKey: key) == nil, - let legacyValue = defaults.object(forKey: legacyKey) { - // First access for this wallet: seed from the legacy global value so - // a pre-multi-wallet install's CrowdNode account carries over. - defaults.set(legacyValue, forKey: key) - } - return key - } - - /// Drop the in-memory caches so the next read resolves the now-active - /// wallet's per-wallet keys. Called on `activeWalletDidChange` — the - /// persisted per-wallet values are untouched. - func invalidateCache() { - _accountAddress = nil - _infoShown = nil - _lastKnownBalance = nil - _crowdNodeWithdrawalLimitPerTx = nil - _crowdNodeWithdrawalLimitPerHour = nil - _crowdNodeWithdrawalLimitPerDay = nil - _feePercentage = nil - _withdrawalLimitsInfoShown = nil - _savedOnlineAccountState = nil - _crowdNodePrimaryAddress = nil - _confirmationDialogShown = nil - _onlineInfoShown = nil - _shouldShowConfirmedNotification = nil - _signedEmailMessageId = nil - _lastWithdrawalBlock = nil - _fruitlessRestoreTxCount = nil - } - - private var _accountAddress: String? = nil - var accountAddress: String? { - get { _accountAddress ?? UserDefaults.standard.value(forKey: resolvedKey(kCrowdNodeAccountAddress)) as? String } - set(value) { - _accountAddress = value - UserDefaults.standard.set(value, forKey: resolvedKey(kCrowdNodeAccountAddress)) - } - } - - private var _infoShown: Bool? = nil - var infoShown: Bool { - get { _infoShown ?? UserDefaults.standard.bool(forKey: kInfoShown) } - set(value) { - _infoShown = value - UserDefaults.standard.set(value, forKey: kInfoShown) - } - } - - private var _lastKnownBalance: UInt64? = nil - var lastKnownBalance: UInt64 { - get { _lastKnownBalance ?? UserDefaults.standard.value(forKey: resolvedKey(kLastKnownBalance)) as? UInt64 ?? 0 } - set(value) { - _lastKnownBalance = value - UserDefaults.standard.set(value, forKey: resolvedKey(kLastKnownBalance)) - } - } - - private var _crowdNodeWithdrawalLimitPerTx: UInt64? = nil - var crowdNodeWithdrawalLimitPerTx: UInt64 { - get { _crowdNodeWithdrawalLimitPerTx ?? UserDefaults.standard.value(forKey: kWithdrawalLimitPerTx) as? UInt64 ?? 15 * kOneDash } - set(value) { - _crowdNodeWithdrawalLimitPerTx = value - UserDefaults.standard.set(value, forKey: kWithdrawalLimitPerTx) - } - } - - private var _crowdNodeWithdrawalLimitPerHour: UInt64? = nil - var crowdNodeWithdrawalLimitPerHour: UInt64 { - get { _crowdNodeWithdrawalLimitPerHour ?? UserDefaults.standard.value(forKey: kWithdrawalLimitPerHour) as? UInt64 ?? 30 * kOneDash } - set(value) { - _crowdNodeWithdrawalLimitPerHour = value - UserDefaults.standard.set(value, forKey: kWithdrawalLimitPerHour) - } - } - - private var _crowdNodeWithdrawalLimitPerDay: UInt64? = nil - var crowdNodeWithdrawalLimitPerDay: UInt64 { - get { _crowdNodeWithdrawalLimitPerDay ?? UserDefaults.standard.value(forKey: kWithdrawalLimitPerDay) as? UInt64 ?? 60 * kOneDash } - set(value) { - _crowdNodeWithdrawalLimitPerDay = value - UserDefaults.standard.set(value, forKey: kWithdrawalLimitPerDay) - } - } - - private var _feePercentage: Double? = nil - var feePercentage: Double { - get { _feePercentage ?? UserDefaults.standard.value(forKey: kFeePercentage) as? Double ?? CrowdNode.defaultFee } - set(value) { - _feePercentage = value - UserDefaults.standard.set(value, forKey: kFeePercentage) - } - } - - private var _withdrawalLimitsInfoShown: Bool? = nil - var withdrawalLimitsInfoShown: Bool { - get { _withdrawalLimitsInfoShown ?? UserDefaults.standard.bool(forKey: kWithdrawalLimitsInfoShown) } - set(value) { - _withdrawalLimitsInfoShown = value - UserDefaults.standard.set(value, forKey: kWithdrawalLimitsInfoShown) - } - } - - private var _savedOnlineAccountState: CrowdNode.OnlineAccountState? = nil - var savedOnlineAccountState: CrowdNode.OnlineAccountState { - get { _savedOnlineAccountState ?? CrowdNode.OnlineAccountState(rawValue: UserDefaults.standard.integer(forKey: resolvedKey(kOnlineAccountState))) ?? .none } - set(value) { - _savedOnlineAccountState = value - UserDefaults.standard.set(value.rawValue, forKey: resolvedKey(kOnlineAccountState)) - } - } - - private var _crowdNodePrimaryAddress: String? = nil - var crowdNodePrimaryAddress: String? { - get { _crowdNodePrimaryAddress ?? UserDefaults.standard.value(forKey: resolvedKey(kCrowdNodePrimaryAddress)) as? String } - set(value) { - _crowdNodePrimaryAddress = value - UserDefaults.standard.set(value, forKey: resolvedKey(kCrowdNodePrimaryAddress)) - } - } - - private var _confirmationDialogShown: Bool? = nil - var confirmationDialogShown: Bool { - get { _confirmationDialogShown ?? UserDefaults.standard.bool(forKey: resolvedKey(kConfirmationDialogShown)) } - set(value) { - _confirmationDialogShown = value - UserDefaults.standard.set(value, forKey: resolvedKey(kConfirmationDialogShown)) - } - } - - private var _onlineInfoShown: Bool? = nil - var onlineInfoShown: Bool { - get { _onlineInfoShown ?? UserDefaults.standard.bool(forKey: resolvedKey(kOnlineInfoShown)) } - set(value) { - _onlineInfoShown = value - UserDefaults.standard.set(value, forKey: resolvedKey(kOnlineInfoShown)) - } - } - - private var _shouldShowConfirmedNotification: Bool? = nil - var shouldShowConfirmedNotification: Bool { - get { _shouldShowConfirmedNotification ?? UserDefaults.standard.bool(forKey: resolvedKey(kShouldShowConfirmedNotification)) } - set(value) { - _shouldShowConfirmedNotification = value - UserDefaults.standard.set(value, forKey: resolvedKey(kShouldShowConfirmedNotification)) - } - } - - private var _signedEmailMessageId: Int? = nil - var signedEmailMessageId: Int { - get { _signedEmailMessageId ?? UserDefaults.standard.value(forKey: resolvedKey(kSignedEmailMessageId)) as? Int ?? -1 } - set(value) { - _signedEmailMessageId = value - UserDefaults.standard.set(value, forKey: resolvedKey(kSignedEmailMessageId)) - } - } - - private var _lastWithdrawalBlock: UInt32? = nil - var lastWithdrawalBlock: UInt32 { - get { _lastWithdrawalBlock ?? UserDefaults.standard.value(forKey: resolvedKey(kLastWithdrawalBlock)) as? UInt32 ?? 0 } - set(value) { - _lastWithdrawalBlock = value - UserDefaults.standard.set(value, forKey: resolvedKey(kLastWithdrawalBlock)) - } - } - - private var _fruitlessRestoreTxCount: Int? = nil - /// Persisted-row count as of the last `restoreState()` pass that scanned - /// this wallet's full post-2022 history and found no CrowdNode account at - /// all, or nil when no such pass is on record. Lets a later launch skip - /// the full history scan when nothing was persisted since — the memo is - /// keyed to the row count rather than latching permanently precisely so a - /// restored seed whose history syncs in later (count changes) rescans. - /// Written ONLY by the account-not-found branch; setting nil clears it. - /// - /// Resolution deliberately bypasses `resolvedKey`'s seed-from-legacy step: - /// the bare key can only hold a memo written while no wallet was active, - /// i.e. from a pass whose wallet-scoped scan was vacuous — seeding it into - /// a wallet's key would let that wallet skip a scan it never ran. - var fruitlessRestoreTxCount: Int? { - get { - let key = perWalletKey(kFruitlessRestoreTxCount) ?? kFruitlessRestoreTxCount - return _fruitlessRestoreTxCount ?? UserDefaults.standard.value(forKey: key) as? Int - } - set(value) { - _fruitlessRestoreTxCount = value - let key = perWalletKey(kFruitlessRestoreTxCount) ?? kFruitlessRestoreTxCount - UserDefaults.standard.set(value, forKey: key) - } - } - - - /// Reset the ACTIVE wallet's CrowdNode state (plus the two global education - /// flags). Writes through the per-wallet-scoped properties, so it clears the - /// active wallet's keys only — used by `CrowdNode.reset()` on - /// network-change / alien-address detection, where only the current wallet's - /// relationship is being torn down. - func resetUserDefaults() { - infoShown = false - lastKnownBalance = 0 - withdrawalLimitsInfoShown = false - savedOnlineAccountState = .none - accountAddress = nil - crowdNodePrimaryAddress = nil - confirmationDialogShown = false - onlineInfoShown = false - signedEmailMessageId = -1 - lastWithdrawalBlock = 0 - fruitlessRestoreTxCount = nil - } - - /// Clear a SINGLE wallet's per-wallet CrowdNode keys (the removed wallet may - /// not be the active one, so this addresses keys by explicit `walletIdHex` - /// rather than through the active-wallet-scoped properties). Invoked from the - /// shared per-wallet deletion primitive when a wallet is removed. Leaves the - /// legacy keys and the global education/limit flags intact. - func clearPerWalletKeys(forWalletIdHex walletIdHex: String) { - guard !walletIdHex.isEmpty else { return } - let defaults = UserDefaults.standard - for legacyKey in kPerWalletKeys { - defaults.removeObject(forKey: "\(legacyKey)_\(walletIdHex)") - } - } - - /// Clear CrowdNode state for a full wallet wipe (which destroys EVERY - /// wallet). Removes the per-wallet variant of each per-wallet key for every - /// wallet — enumerated by prefix over UserDefaults, since the walletIds are - /// gone by wipe time — plus the dormant legacy keys, plus the global - /// education flags. Also drops the in-memory cache on the long-lived - /// `shared` singleton so stale values don't linger until the next launch. - func resetForWipe() { - let defaults = UserDefaults.standard - for key in defaults.dictionaryRepresentation().keys { - if kPerWalletKeys.contains(where: { key.hasPrefix("\($0)_") }) { - defaults.removeObject(forKey: key) - } - } - // Dormant legacy (pre-multi-wallet) per-wallet keys. - for legacyKey in kPerWalletKeys { - defaults.removeObject(forKey: legacyKey) - } - // Global education flags (limits/fee are re-fetched from the API, so - // they're left to refresh on next use). - defaults.removeObject(forKey: kInfoShown) - defaults.removeObject(forKey: kWithdrawalLimitsInfoShown) - invalidateCache() - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/CrowdNode.swift b/DashWallet/Sources/Models/CrowdNode/CrowdNode.swift deleted file mode 100644 index ff48d3d4a9..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/CrowdNode.swift +++ /dev/null @@ -1,1362 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import BackgroundTasks -import Combine - -// MARK: - CrowdNodeObjcWrapper - -@objc -public class CrowdNodeObjcWrapper: NSObject { - @objc - public class func start() { - let _ = CrowdNode.shared - } - - @objc - public class func restoreState() { - CrowdNode.shared.restoreState() - } - - @objc - public class func isInterrupted() -> Bool { - CrowdNode.shared.signUpState == .acceptTermsRequired - } - - @objc - public class func continueInterrupted() { - let crowdNode = CrowdNode.shared - - if crowdNode.signUpState == .acceptTermsRequired { - Task { - let address = crowdNode.accountAddress - await crowdNode.signUp(accountAddress: address) - } - } - } - - @objc - public class func crowdNodeWebsiteUrl() -> URL { - URL(string: CrowdNode.websiteUrl)! - } - - @objc - public class func notificationID() -> String { - CrowdNode.notificationID - } - - @objc - public class func apiOffset() -> UInt64 { - CrowdNode.apiOffset - } -} - -private let kValidStatus = "valid" -private let kConfirmedStatus = "confirmed" -private let kMessageReceivedStatus = "received" -private let kMessageFailedStatus = "failed" - -// MARK: - CrowdNode - -public final class CrowdNode { - enum SignUpState: Comparable { - case notInitiated - case notStarted - // Create New Account - case fundingWallet - case signingUp - case acceptTermsRequired - case acceptingTerms - case finished - case error - // Link Existing Account - case linkedOnline - } - - enum OnlineAccountState: Int, Comparable { - case none = 0 - case linking = 1 - case validating = 2 - case confirming = 3 - case creating = 4 - case signingUp = 5 - case done = 6 - - static func < (lhs: CrowdNode.OnlineAccountState, rhs: CrowdNode.OnlineAccountState) -> Bool { - lhs.rawValue < rhs.rawValue - } - - var isLinkingInProgress: Bool { - self == .linking || self == .validating || self == .confirming - } - } - - private var cancellableBag = Set() - private lazy var sendCoinsService = SendCoinsService() - private lazy var txObserver = TransactionObserver() - private lazy var webService = CrowdNodeService() - private let prefs = CrowdNodeDefaults.shared - private var timer: Timer? = nil - - @Published private(set) var signUpState = SignUpState.notInitiated - @Published private(set) var onlineAccountState = OnlineAccountState.none - @Published private(set) var balance: UInt64 = 0 - @Published private(set) var isBalanceLoading = false - @Published var apiError: Swift.Error? = nil - - var accountAddress: String { prefs.accountAddress ?? "" } - private(set) var primaryAddress: String? = nil - private(set) var linkingApiAddress: String? = nil - private(set) var isOnlineStateRestored = false - var showNotificationOnResult = false - - var masternodeAPY: Double - var crowdnodeAPY: Double - - public static let shared: CrowdNode = .init() - private static let topUpFeeReserve: UInt64 = 10_000 - - init() { - masternodeAPY = MasternodeAPYCalculator.estimatedAPY() - crowdnodeAPY = masternodeAPY * (1 - prefs.feePercentage) - print("CrowdNode: masternodeAPY: \(masternodeAPY), crowdnodeAPY: \(crowdnodeAPY)") - - NotificationCenter.default.publisher(for: NSNotification.Name.DWCurrentNetworkDidChange) - .sink { [weak self] _ in self?.reset() } - .store(in: &cancellableBag) - - // A runtime wallet switch rebinds every per-wallet fact: CrowdNode state - // is scoped by the active walletId (see CrowdNodeDefaults), and this - // singleton caches the previous wallet's account/balance/signup state in - // memory (plus CrowdNodeDefaults' own `_`-backed value cache). Reload - // against the now-active wallet so wallet A's CrowdNode balance/account - // never shows under wallet B. Mirrors SwiftDashSDKContactsService's - // observer of the same notification. - NotificationCenter.default.publisher(for: SwiftDashSDKWalletState.activeWalletDidChangeNotification) - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in self?.handleActiveWalletChanged() } - .store(in: &cancellableBag) - - $onlineAccountState - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - guard let wSelf = self else { return } - - wSelf.timer?.invalidate() - let fireImmediately = wSelf.isOnlineStateRestored - - switch state { - case .linking: - wSelf.startTrackingLinked(address: wSelf.linkingApiAddress!) - case .validating: - wSelf.startTrackingValidated(address: wSelf.accountAddress, fireImmediately: fireImmediately) - case .confirming: - wSelf.startTrackingConfirmed(address: wSelf.accountAddress, fireImmediately: fireImmediately) - case .creating: - wSelf.startTrackingCreating(address: wSelf.accountAddress, fireImmediately: fireImmediately) - default: - break - } - } - .store(in: &cancellableBag) - } - - private func topUpAccount(_ accountAddress: String, _ amount: UInt64, - sessionAuthSufficient: Bool = false) async throws -> Data { - // sendCoins broadcasts via SwiftDashSDK and throws on failure, and the - // follow-up signal send polls the SDK's UTXO set itself before - // spending the top-up — no extra spendability wait is needed here. - return try await sendCoinsService.sendCoins(address: accountAddress, amount: amount, - sessionAuthSufficient: sessionAuthSufficient) - } -} - -// MARK: Restoring state -extension CrowdNode { - func restoreState() { - checkAPY() - - if signUpState > SignUpState.notStarted { - // Already started/restored - return - } - - // Read the count ONCE, before the scans, and memoize that same value - // below. Reading it again afterwards would record rows the scans never - // inspected — a save landing mid-restore would make the next call skip - // a scan that still owes work on those rows. - let txCountBeforeScans = TransactionObserver.persistedTransactionCount() - - // A previous pass — this launch or an earlier one; the memo persists - // per wallet in CrowdNodeDefaults — already scanned this exact history - // and found no account; without new rows it would reach the same - // conclusion. The restore's own guard is `signUpState > .notStarted`, - // which a wallet that never signed up never reaches, so without this - // memo every caller (launch sync-done, each entry into the CrowdNode - // portal) re-runs the full history scan and blocks the main thread - // for seconds apiece. A signup can still turn up later when a - // restored seed syncs its history in, which is why the memo is keyed - // to the row count rather than latching: new rows persisted → miss → - // the scan runs again. - if let scanned = prefs.fruitlessRestoreTxCount, txCountBeforeScans == scanned { - return - } - - DWLogger.log("restoring CrowdNode state") - signUpState = SignUpState.notStarted - // Anything but `.owned` keeps the stored address but leaves it - // unproven. `CrowdNodeDefaults` - // seeds a new wallet's per-wallet keys from the retained pre-multi-wallet - // globals (account address, saved online state, last known balance), so - // an unproven address can be the *previous* wallet's. The signup scan - // below proves ownership from this wallet's own history; the online-account - // path has no such evidence and must not activate the address on trust. - let ownsStoredAddress = validatePrefs() - - // One snapshot serves the whole restore. The signup reconstruction and - // the linked-account confirmation lookup consume the same window — - // floored at 2022 because CrowdNode protocol traffic cannot predate - // CrowdNode — and each running the identical fetch is what doubled the - // multi-second scan on large wallets. No fetchLimit: a signup can sit - // anywhere in the post-2022 history, so a newest-first cap would drop - // real accounts. - let observed = TransactionObserver - .fetchObserved(firstSeenAtOrAfter: FullCrowdNodeSignUpTxSet.januaryFirst2022Epoch) - - // `validatePrefs` preserves an unproven stored address rather than - // destroying it — but the metadata stored BESIDE it (saved online state, - // last known balance, primary address) came from the same legacy globals - // and is just as unproven. The reconstruction below proves an ADDRESS - // from this wallet's own history; it proves nothing about that metadata. - // Left in place, `setFinished` would publish another wallet's cached - // balance, `restoreCreatedOnlineAccount` would publish its - // `.done`/`.creating` online state under this one, and - // `tryRestoreLinkedOnlineAccount` would copy its primary address into - // `primaryAddress` — which the portal's account-details screen shows and - // copies to the pasteboard, synchronously, before the `isAddressInUse` - // lookup that would replace it has returned (and it stays if that lookup - // fails). So quarantine all three across the reconstruction and hand - // them back only to an address that turns out to be the same one they - // were stored against. - let storedAddress = prefs.accountAddress - let quarantinedOnlineState = prefs.savedOnlineAccountState - let quarantinedBalance = prefs.lastKnownBalance - let quarantinedPrimaryAddress = prefs.crowdNodePrimaryAddress - let metadataIsUnproven = - CrowdNode.storedAccountVerdict(ownership: ownsStoredAddress) != .trusted - if metadataIsUnproven { - prefs.savedOnlineAccountState = .none - prefs.lastKnownBalance = 0 - prefs.crowdNodePrimaryAddress = nil - } - - if tryRestoreSignUp(observed) { - if CrowdNode.metadataSurvivesReconstruction( - ownership: ownsStoredAddress, - storedAddress: storedAddress, - recoveredAddress: prefs.accountAddress) { - // This wallet's own history recovered the very address the - // metadata was stored against. That is the account-specific - // evidence it was missing, so it is this wallet's after all. - prefs.savedOnlineAccountState = quarantinedOnlineState - prefs.lastKnownBalance = quarantinedBalance - prefs.crowdNodePrimaryAddress = quarantinedPrimaryAddress - } - refreshWithdrawalLimits() - refreshFees() - restoreCreatedOnlineAccount(accountAddress) - return - } - - // No signup in this wallet's history — but nothing is settled yet - // either: the online lookup below can still replace the stored address - // with one recovered from this wallet's own API-confirmation history. - // So the quarantine HOLDS across that lookup and is resolved on the - // other side of it, against the address we actually ended on. Handing - // the metadata back here instead would publish another wallet's cached - // balance under this one — `refreshBalance(seedFromCache:)` defaults to - // true, and `CrowdNodePortalController.viewDidLoad` takes that default, - // so a failed API request leaves that figure on screen. - // - // The saved state is still needed as an INPUT to the lookup — it is how - // `trustsStoredOnlineAddress` knows an online account was claimed at all - // — so read it locally rather than un-quarantining prefs. - var onlineState = metadataIsUnproven ? quarantinedOnlineState : prefs.savedOnlineAccountState - - let trustStoredAddress = - CrowdNode.storedAccountVerdict(ownership: ownsStoredAddress) == .trusted - if let address = getOnlineAccountAddress( - state: onlineState, - observed: observed, - trustStoredAddress: trustStoredAddress) { - prefs.accountAddress = address - - // The address is settled now, so the quarantine resolves — by the - // same rule the signup branch uses, just against the address the - // online lookup recovered. Same address: this wallet's history has - // proven the one the metadata was stored against, so it stands. - // Different address: the stored pair was another wallet's, and the - // cached balance is cleared for good rather than left for the next - // cache-seeded refresh to publish. The online state needs no - // matching write — `getOnlineAccountAddress` already persisted the - // `.linking` its own evidence supports. - if metadataIsUnproven { - if CrowdNode.metadataSurvivesReconstruction( - ownership: ownsStoredAddress, - storedAddress: storedAddress, - recoveredAddress: address) { - prefs.savedOnlineAccountState = quarantinedOnlineState - prefs.lastKnownBalance = quarantinedBalance - prefs.crowdNodePrimaryAddress = quarantinedPrimaryAddress - } else { - prefs.lastKnownBalance = 0 - // Left nil, not restored: a different recovered address - // means the stored primary belonged to the other wallet. - // `tryRestoreLinkedOnlineAccount` therefore has nothing to - // seed `primaryAddress` from, and the `.linking` state this - // path forces sends it through `checkIfAddressIsInUse`, - // which fills the field from CrowdNode's own answer for - // THIS account. A failed lookup leaves it empty, which is - // the honest state — an empty field cannot be copied to the - // pasteboard as if it were the user's. - } - } - - // Without trust, the address came from this wallet's own API - // confirmation transaction, and that lookup already downgraded the - // persisted state to `.linking`. Carrying the stored `onlineState` - // forward here would publish a further-along state — `.done` for a - // legacy value copied from another wallet — that nothing in this - // wallet has established. Re-link from the evidence instead. - if !trustStoredAddress || onlineState == .none { - onlineState = .linking - } - - do { - try tryRestoreLinkedOnlineAccount(state: onlineState, address: address) - refreshWithdrawalLimits() - // Linked online accounts don't go through `setFinished`, so their balance was - // never fetched at restore — only when the user opened the CrowdNode portal. - // Refresh it proactively so the balance reminder (banner/sheet) can appear after - // sync without requiring the user to enter CrowdNode. `refreshBalance` self-guards - // on `signUpState`, so it no-ops for accounts that aren't linked yet. - // Don't seed from cache: a stale positive `lastKnownBalance` would otherwise drive - // the balance reminder before the first fresh fetch, surfacing/consuming it even - // when the server returns 0. - refreshBalance(seedFromCache: false) - } catch { - DWLogger.log("Failure while restoring linked CrowdNode account: \(error.localizedDescription)") - } - } else { - // Nothing recovered by either scan, so the stored address is - // untouched and its metadata is exactly as unproven as - // `validatePrefs` deliberately leaves it — hand it back to the - // address it still belongs to. - if metadataIsUnproven { - prefs.savedOnlineAccountState = quarantinedOnlineState - prefs.lastKnownBalance = quarantinedBalance - prefs.crowdNodePrimaryAddress = quarantinedPrimaryAddress - } - DWLogger.log("CrowdNode: account not found") - // Nothing found by either the signup scan or the online-account - // lookup, so this whole pass was a no-op — memoize it against the - // history the scans actually saw, not the store's count now. A nil - // count means the SDK container wasn't up and the scans were - // vacuous: nothing to memoize, and don't clobber a prior launch's - // valid memo with it. - // A pass whose ownership check never ran (the SDK wallet was not - // up) is not evidence about this history either: it sends the - // stored address down the confirmation-tx lookup, which on - // unsynced history finds nothing for reasons that have nothing to - // do with the rows. Memoizing that would short-circuit the next - // restore, which is the one that would have had a wallet. - if let txCountBeforeScans, ownsStoredAddress?.wasChecked != false { - prefs.fruitlessRestoreTxCount = txCountBeforeScans - } - } - } - - private func tryRestoreSignUp(_ observed: [ObservedTransaction]) -> Bool { - let fullSet = FullCrowdNodeSignUpTxSet() - observed.forEach { fullSet.tryInclude($0) } - - if let welcomeResponse = fullSet.welcomeToApiResponse { - precondition(welcomeResponse.toAddress != nil) - setFinished(address: welcomeResponse.toAddress!) - return true - } - - if let acceptTermsResponse = fullSet.acceptTermsResponse { - precondition(acceptTermsResponse.toAddress != nil) - - if fullSet.acceptTermsRequest == nil { - setAcceptTermsRequired(address: acceptTermsResponse.toAddress!) - } - else { - setAcceptingTerms(address: acceptTermsResponse.toAddress!) - } - return true - } - - if let signUpRequest = fullSet.signUpRequest { - precondition(signUpRequest.fromAddresses.first != nil) - setSigningUp(address: signUpRequest.fromAddresses.first!) - return true - } - - return false - } - - private func setFinished(address: String) { - prefs.accountAddress = address - DWLogger.log("found finished CrowdNode sign up, account: \(address)") - signUpState = SignUpState.finished - refreshBalance(retries: 1) - setTaxCategories() - } - - private func setAcceptingTerms(address: String) { - prefs.accountAddress = address - DWLogger.log("found accept terms CrowdNode response, account: \(address)") - signUpState = SignUpState.acceptingTerms - } - - private func setAcceptTermsRequired(address: String) { - prefs.accountAddress = address - DWLogger.log("found accept terms CrowdNode response, account: \(address)") - signUpState = SignUpState.acceptTermsRequired - } - - private func setSigningUp(address: String) { - prefs.accountAddress = address - DWLogger.log("found signUp CrowdNode request, account: \(address)") - signUpState = SignUpState.signingUp - } - - /// What a restore may do with the stored CrowdNode account, given the - /// tri-state ownership verdict. Named so the rule is pinned by tests - /// without standing an SDK wallet up: the whole point of ticket 32026 is - /// that `unproven` must behave like neither of the other two. - enum StoredAccountVerdict: Equatable { - /// The scan found the address among this wallet's keys — the online - /// restore may activate the stored account on it. - case trusted - /// Ownership is unknown (wallet not up, or the address sits beyond - /// the scan bound). Keep the stored data, but never activate an - /// account on it: the legacy per-wallet key seeding can have copied - /// it from another wallet on the same network. - case unproven - /// The address cannot be this wallet's — the account is reset. - /// - /// Nearly unreachable for real data: prefs only ever hold addresses - /// this app produced, so a stored value that is not a P2PKH address of - /// the running network means a network switch or corrupted defaults. - /// The live defence against another wallet's account is `.unproven` - /// plus `trustStoredAddress` — NOT this case. Read `reset()` here as a - /// backstop, not as the guard doing the work. - case alien - } - - /// Whether the saved online state and cached balance stored beside an - /// account address may be published for the address the restore ended up - /// with. Pure so the rule is testable without a wallet, a keychain or the - /// network. - /// - /// `true` ownership is proof for the stored address, so its metadata stands. - /// Otherwise the metadata is only as good as the address it was stored - /// against: it survives only if this wallet's own history recovered that - /// same address. A different recovered address means the two were never - /// related — `CrowdNodeDefaults` seeds a new wallet's keys from the retained - /// pre-multi-wallet globals, so the pair can easily be another wallet's. - static func metadataSurvivesReconstruction(ownership owns: Bool?, - storedAddress: String?, - recoveredAddress: String?) -> Bool { - metadataSurvives(verdict: storedAccountVerdict(ownership: owns), - storedAddress: storedAddress, - recoveredAddress: recoveredAddress) - } - - static func metadataSurvivesReconstruction(ownership owns: CrowdNodeMessageSigner.Ownership?, - storedAddress: String?, - recoveredAddress: String?) -> Bool { - metadataSurvives(verdict: storedAccountVerdict(ownership: owns), - storedAddress: storedAddress, - recoveredAddress: recoveredAddress) - } - - private static func metadataSurvives(verdict: StoredAccountVerdict, - storedAddress: String?, - recoveredAddress: String?) -> Bool { - if verdict == .trusted { return true } - guard let storedAddress, !storedAddress.isEmpty else { return false } - return storedAddress == recoveredAddress - } - - /// Whether the online restore may take the stored account address at face - /// value, or has to re-derive one from this wallet's own history. - /// - /// The stored address is taken only when ownership was actually proven AND - /// the stored state says an online account exists. An unproven address is - /// never taken however far along its stored state claims to be — that state - /// can have been copied from another wallet by the legacy per-wallet key - /// seeding, and taking it is exactly what published another wallet's - /// account in ticket 32026. - static func trustsStoredOnlineAddress(trustStoredAddress: Bool, - storedAddress: String?, - state: OnlineAccountState) -> Bool { - trustStoredAddress && storedAddress != nil && state != .none - } - - /// Whether the untrusted path may persist its `.linking` downgrade. - /// - /// Only when the API confirmation recovered a genuinely different account. - /// Recovering the address already stored means the stored state describes - /// THIS account and is further along, so writing `.linking` over it is a - /// backward write driven by a transient condition — and on the population - /// this guard exists for the verdict is unproven on every launch, so it - /// would repeat forever and park an offline account at `.linking`. - static func persistsLinkingDowngrade(confirmationAddress: String, - storedAddress: String?) -> Bool { - confirmationAddress != storedAddress - } - - static func storedAccountVerdict(ownership owns: Bool?) -> StoredAccountVerdict { - switch owns { - case true?: return .trusted - case false?: return .alien - case nil: return .unproven - } - } - - /// Four-case form. `nil` means there is no stored address at all — nothing - /// to trust and nothing to destroy — which the `Bool?` form cannot express - /// separately from "unknown". - static func storedAccountVerdict( - ownership owns: CrowdNodeMessageSigner.Ownership? - ) -> StoredAccountVerdict { - switch owns { - case .owned: return .trusted - case .foreign: return .alien - case .walletUnavailable, .notFoundWithinBound, nil: return .unproven - } - } - - /// Validate the stored account address against the active wallet and - /// report the verdict to the restore that called it. - /// - /// `nil` means there is no stored address at all — distinct from a stored - /// address whose ownership is unknown, which is what the earlier `Bool?` - /// return conflated it with. Otherwise the four-case verdict: - /// `.owned` proves the address is this wallet's, `.foreign` proves it is - /// not (the account is reset), and `.walletUnavailable` / - /// `.notFoundWithinBound` prove nothing. The last two keep the stored - /// account on disk but leave it unproven, and the caller must not activate - /// it on trust alone. They are kept apart because only - /// `.walletUnavailable` means the check never ran, which the restore's - /// fruitless-pass memo has to know. - private func validatePrefs() -> CrowdNodeMessageSigner.Ownership? { - guard let accountAddress = prefs.accountAddress else { return nil } - - // SDK-native ownership check (BIP44 acct-0 scan — the same one the - // CrowdNode signer uses). Tri-state: nil ⇒ unknown (the SDK wallet - // isn't up yet, or the address sits beyond the bounded scan) — keep - // the stored account rather than resetting it. false is returned only - // for an address that cannot belong to this wallet (not a P2PKH - // address of the running network). - let owns: CrowdNodeMessageSigner.Ownership - if Thread.isMainThread { - owns = MainActor.assumeIsolated { CrowdNodeMessageSigner.ownership(of: accountAddress) } - } else { - var captured: CrowdNodeMessageSigner.Ownership = .walletUnavailable - DispatchQueue.main.sync { - captured = MainActor.assumeIsolated { CrowdNodeMessageSigner.ownership(of: accountAddress) } - } - owns = captured - } - - switch CrowdNode.storedAccountVerdict(ownership: owns) { - case .alien: - DWLogger.log("Found alien address in CrowdNode prefs") - reset() - case .unproven: - DWLogger.log("CrowdNode prefs validation inconclusive (wallet not up, or address beyond scan bound) — keeping stored account, ownership unproven") - case .trusted: - break - } - - return owns - } - - private func reset() { - DWLogger.log("CrowdNode reset triggered") - signUpState = .notStarted - onlineAccountState = .none - linkingApiAddress = nil - primaryAddress = nil - apiError = nil - balance = 0 - // resetUserDefaults() also clears the persisted fruitless-restore memo, - // so a network change or alien-address teardown always rescans. - prefs.resetUserDefaults() - } - - /// Full-device wipe cleanup. Called only after every SDK wallet deletion - /// has succeeded, so a failed wipe leaves both published and persisted - /// CrowdNode state available for retry. - func resetForWipe() { - reset() - isBalanceLoading = false - isOnlineStateRestored = false - showNotificationOnResult = false - prefs.resetForWipe() - } - - /// React to a runtime wallet switch: drop the in-memory state cached for the - /// previous wallet and re-restore from the now-active wallet's per-wallet - /// defaults. Unlike `reset()`, this does NOT call `prefs.resetUserDefaults()` - /// — that would erase the newly-active wallet's persisted CrowdNode state. - /// It only invalidates `CrowdNodeDefaults`' in-memory value cache (so the - /// next read resolves the new wallet's keys) and re-runs `restoreState()`. - private func handleActiveWalletChanged() { - DWLogger.log("CrowdNode reloading for active wallet change") - prefs.invalidateCache() - // Clear the previous wallet's published/in-memory state without touching - // persisted defaults, then re-open the restore path (its `signUpState > - // .notStarted` guard would otherwise short-circuit the reload). - signUpState = .notInitiated - onlineAccountState = .none - linkingApiAddress = nil - primaryAddress = nil - apiError = nil - balance = 0 - isOnlineStateRestored = false - // The active wallet has already changed here (and invalidateCache() - // above dropped the stale per-wallet resolution), so this clears the - // NEW wallet's persisted memo: the row count is store-global while the - // scan is wallet-scoped, so a memo recorded against a different - // wallet-mix of the store can't be trusted after a switch — force a - // real scan for this wallet. - prefs.fruitlessRestoreTxCount = nil - restoreState() - } - - private func checkAPY() { - // Estimated figure at the current SPV tip; recomputing is cheap. - // TODO(masternode-stats-ffi): use the live virtual masternode count - // once the upstream stats FFI lands. - masternodeAPY = MasternodeAPYCalculator.estimatedAPY() - crowdnodeAPY = masternodeAPY * (1 - prefs.feePercentage) - } -} - -// MARK: Signup -extension CrowdNode { - func signUp(accountAddress: String) async { - prefs.accountAddress = accountAddress - - do { - if signUpState < SignUpState.acceptTermsRequired { - signUpState = SignUpState.fundingWallet - let topUpTx = try await topUpAccount(accountAddress, CrowdNode.requiredForSignup, - sessionAuthSufficient: true) - DWLogger.log("CrowdNode TopUp tx hash: \(Transaction.displayHex(topUpTx))") - - signUpState = SignUpState.signingUp - try await makeSignUpRequest(accountAddress) - - signUpState = SignUpState.acceptingTerms - try await acceptTerms(accountAddress) - } - else { - signUpState = SignUpState.acceptingTerms - let _ = try await topUpAccount(accountAddress, CrowdNode.requiredForAcceptTerms, - sessionAuthSufficient: true) - try await acceptTerms(accountAddress) - } - - notifyIfNeeded(message: NSLocalizedString("Your CrowdNode account is set up and ready to use!", comment: "CrowdNode")) - signUpState = SignUpState.finished - refreshBalance() - } - catch { - DWLogger.log("CrowdNode error: \(error)") - signUpState = SignUpState.error - apiError = error - } - } - - private func makeSignUpRequest(_ accountAddress: String) async throws { - let requestValue = CrowdNode.apiOffset + ApiCode.signUp.rawValue - // Capture BEFORE broadcast: the response always postdates the request, - // and the observer's freshness floor keys off this instant. - let requestSentAt = Date() - let signUpTx = try await sendCoinsService.sendCoins(address: CrowdNode.crowdNodeAddress, - amount: requestValue, - inputSelector: SingleInputAddressSelector(address: accountAddress), - sessionAuthSufficient: true) - DWLogger.log("CrowdNode SignUp tx hash: \(Transaction.displayHex(signUpTx))") - - let successResponse = CrowdNodeResponse(responseCode: ApiCode.pleaseAcceptTerms, - accountAddress: accountAddress) - let errorResponse = CrowdNodeErrorResponse(errorValue: requestValue, - accountAddress: accountAddress) - - let responseTx = await txObserver.first(filters: errorResponse, successResponse, after: requestSentAt) - DWLogger.log("CrowdNode AcceptTerms response tx: \(responseTx.txidHexDisplay)") - - if errorResponse.matches(responseTx) { - throw CrowdNode.Error.signUp - } - } - - private func acceptTerms(_ accountAddress: String) async throws { - let requestValue = CrowdNode.apiOffset + ApiCode.acceptTerms.rawValue - let requestSentAt = Date() - let termsAcceptedTx = try await sendCoinsService.sendCoins(address: CrowdNode.crowdNodeAddress, - amount: requestValue, - inputSelector: SingleInputAddressSelector(address: accountAddress), - sessionAuthSufficient: true) - DWLogger.log("CrowdNode Terms Accepted tx hash: \(Transaction.displayHex(termsAcceptedTx))") - - let successResponse = CrowdNodeResponse(responseCode: ApiCode.welcomeToApi, - accountAddress: accountAddress) - let errorResponse = CrowdNodeErrorResponse(errorValue: requestValue, - accountAddress: accountAddress) - - let responseTx = await txObserver.first(filters: errorResponse, successResponse, after: requestSentAt) - DWLogger.log("CrowdNode Welcome response tx: \(responseTx.txidHexDisplay)") - - if errorResponse.matches(responseTx) { - throw CrowdNode.Error.signUp - } - } -} - -// MARK: Deposits / withdrawals -extension CrowdNode { - func deposit(amount: UInt64) async throws { - guard !accountAddress.isEmpty else { return } - - let maxSendable = SwiftDashSDKWalletState.shared.balance?.maxSendable ?? 0 - let addition = amount.addingReportingOverflow(Self.topUpFeeReserve) - let requiredTopUp = addition.overflow ? UInt64.max : addition.partialValue - let finalTopUp = min(maxSendable, requiredTopUp) - - // One PIN per deposit action: the top-up (the flow's first send) keeps - // the default per-send prompt — a successful entry sets - // DSAuthenticationManager.didAuthenticate — and the deposit signal a - // moment later rides that session instead of prompting a second time. - let topUpTx = try await topUpAccount(accountAddress, finalTopUp) - DWLogger.log("CrowdNode deposit topup tx hash: \(Transaction.displayHex(topUpTx))") - - let requestSentAt = Date() - let depositTx = try await sendCoinsService.sendCoins(address: CrowdNode.crowdNodeAddress, - amount: min(maxSendable, amount), - inputSelector: SingleInputAddressSelector(address: accountAddress), - sessionAuthSufficient: true) - DWLogger.log("CrowdNode deposit tx hash: \(Transaction.displayHex(depositTx))") - - Task { - let successResponse = CrowdNodeResponse(responseCode: ApiCode.depositReceived, - accountAddress: accountAddress) - let errorResponse = CrowdNodeErrorResponse(errorValue: amount, - accountAddress: accountAddress) - - // The freshness floor is what keeps a PREVIOUS deposit's ack row - // from instantly satisfying this wait on the initial scan. - let responseTx = await txObserver.first(filters: errorResponse, successResponse, after: requestSentAt) - DWLogger.log("CrowdNode deposit response tx: \(responseTx.txidHexDisplay)") - - if errorResponse.matches(responseTx) { - handleError(error: CrowdNode.Error.deposit) - } else { - refreshBalance() - } - } - } - - func withdraw(amount: UInt64, signature: String) async throws { - guard !accountAddress.isEmpty else { return } - guard amount <= balance else { return } - - try checkWithdrawalLimits(amount) - - DWLogger.log("CrowdNode: request withdrawal") - let result = try await webService.requestWithdrawal(address: accountAddress, amount: amount, signature: signature) - - if result.messageStatus.lowercased() == kMessageReceivedStatus { - DWLogger.log("CrowdNode: withdrawal request sent successfully") - refreshBalance(afterWithdrawal: true) - updateLastWithdrawalBlock() - } else { - DWLogger.log("CrowdNode: sendMessage not received, status: \(String(describing: result.messageStatus)). Result: \(String(describing: result.result))") - - if let msg = result.result { - handleError(error: CrowdNode.Error.messageStatus(error: msg)) - } else { - handleError(error: CrowdNode.Error.withdraw) - } - } - } - - func calculateWithdrawalPermil(forAmount: UInt64) -> UInt64 { - let maxPermil = ApiCode.withdrawAll.rawValue - - if balance == 0 { - return maxPermil - } - - let permil = UInt64(round(Double(forAmount * maxPermil) / Double(balance))) - let requestPermil = min(permil, maxPermil) - - return requestPermil - } - - func hasAnyDeposits() -> Bool { - guard !accountAddress.isEmpty else { return false } - let filter = CrowdNodeDepositTx(accountAddress: accountAddress) - return TransactionObserver.fetchObserved().contains { filter.matches($0) } - } - - private func checkWithdrawalLimits(_ amount: UInt64) throws { - // One withdrawal per block: tipHeight is the SPV synced-headers tip - // (0 only before the client publishes one — the staking UI is gated - // on syncDone, so a live height is available whenever this runs). - let tipHeight = SwiftDashSDKSPVCoordinator.shared.tipHeight - - if tipHeight > 0, tipHeight <= prefs.lastWithdrawalBlock { - throw CrowdNode.Error.withdrawLimit(amount: 0, period: .perBlock) - } - - let perTransactionLimit = getWithdrawalLimit(.perTransaction) - - if amount > perTransactionLimit { - throw CrowdNode.Error.withdrawLimit(amount: perTransactionLimit, period: .perTransaction) - } - - let withdrawalsLastHour = getWithdrawalsForTheLast(hours: 1) - let perHourLimit = getWithdrawalLimit(.perHour) - - if withdrawalsLastHour + amount > perHourLimit { - throw CrowdNode.Error.withdrawLimit(amount: perHourLimit, period: .perHour) - } - - let withdrawalsLast24h = getWithdrawalsForTheLast(hours: 24) - let perDayLimit = getWithdrawalLimit(.perDay) - - if withdrawalsLast24h + amount > perDayLimit { - throw CrowdNode.Error.withdrawLimit(amount: perDayLimit, period: .perDay) - } - } - - private func getWithdrawalsForTheLast(hours: Int) -> UInt64 { - let now = Date() - let from = Calendar.current.date(byAdding: .hour, value: -hours, to: now)! - - let filter = CrowdNodeWithdrawalReceivedTx() - .and(txFilter: TxWithinTimePeriod(from: from, to: now)) - let floor = UInt64(max(0, from.timeIntervalSince1970)) - - return TransactionObserver.fetchObserved(firstSeenAtOrAfter: floor) - .filter { filter.matches($0) } - .map(\.ownOutputsAmount) - .reduce(0, +) - } - - private func updateLastWithdrawalBlock() { - prefs.lastWithdrawalBlock = SwiftDashSDKSPVCoordinator.shared.tipHeight - } -} - -// MARK: Balance -extension CrowdNode { - /// - Parameter seedFromCache: When `true` (default) the cached `lastKnownBalance` is published - /// immediately so UI (e.g. the CrowdNode portal) shows a value while the fetch is in flight. - /// Pass `false` for silent/background refreshes (e.g. restore) where a stale positive cache - /// must not drive balance-derived UI such as `CrowdNodeBalanceReminder` before the first - /// fresh fetch completes. - func refreshBalance(retries: Int = 3, afterWithdrawal: Bool = false, seedFromCache: Bool = true) { - guard !accountAddress.isEmpty && signUpState != .notStarted else { return } - - Task { - let lastBalance = prefs.lastKnownBalance - var currentBalance = lastBalance - if seedFromCache { - balance = currentBalance - } - isBalanceLoading = true - - do { - for i in 0...retries { - if i != 0 { - let secondsToWait = UInt64(pow(5.0, Double(i))) - try await Task.sleep(nanoseconds: secondsToWait * 1_000_000_000) - } - - let result = try await webService.getBalance(address: accountAddress) - let dashNumber = Decimal(result.totalBalance) - let duffsNumber = Decimal(kOneDash) - let plainAmount = dashNumber * duffsNumber - currentBalance = NSDecimalNumber(decimal: plainAmount).uint64Value - prefs.lastKnownBalance = currentBalance - // Publish the fresh value as soon as it arrives. The loop keeps polling (with - // escalating backoff) until the balance *changes* vs. the cached baseline, which - // can take minutes; without this, a non-seeded refresh (e.g. restore) wouldn't - // surface the real balance — and the balance reminder — until the loop ends. - balance = currentBalance - - var breakDifference: UInt64 = 0 - - if afterWithdrawal { - breakDifference = CrowdNode.apiOffset + ApiCode.maxCode().rawValue - } - - if llabs(Int64(lastBalance) - Int64(currentBalance)) > breakDifference { - // Balance changed, no need to retry anymore - break - } - } - } - - balance = currentBalance - isBalanceLoading = false - } - } -} - -// MARK: Errors / Notifications -extension CrowdNode { - /// Posting seam, injected by `NotificationsBootstrap` at launch — - /// `CrowdNode.shared` is created before the notifications graph, so the - /// composition root sets this statically instead of adding a global. - static var notificationProducer: CrowdNodeResultNotifying? - - private func handleError(error: CrowdNode.Error) { - apiError = error - notifyIfNeeded(message: error.errorDescription) - DWLogger.log("CrowdNode error: \(error.errorDescription)") - } - - private func notifyIfNeeded(message: String) { - // Screen-driven: the CrowdNode controllers clear this flag while - // their UI is on screen showing the result and set it on exit, so - // only unwatched results notify. - guard showNotificationOnResult else { return } - guard let producer = Self.notificationProducer else { - DWLogger.log("CrowdNode: notification dropped — no producer injected") - return - } - - // The user-enabled check lives in the dispatcher's permission gate. - producer.postResult(message: message) - } -} - -// MARK: Withdrawal limits -extension CrowdNode { - private func refreshWithdrawalLimits() { - Task { - do { - let limits = try await webService.getWithdrawalLimits(address: accountAddress) - - if let value = limits[WithdrawalLimitPeriod.perTransaction], let perTx = value { - prefs.crowdNodeWithdrawalLimitPerTx = perTx - } - - if let value = limits[WithdrawalLimitPeriod.perHour], let perHour = value { - prefs.crowdNodeWithdrawalLimitPerHour = perHour - } - - if let value = limits[WithdrawalLimitPeriod.perDay], let perDay = value { - prefs.crowdNodeWithdrawalLimitPerDay = perDay - } - } catch { - DWLogger.log("CrowdNode refreshWithdrawalLimits error: \(error.localizedDescription)") - } - } - } - - private func refreshFees() { - Task { - do { - let feeInfo = try await webService.getFees(address: accountAddress) - - if let value = feeInfo.getNormalFee() { - prefs.feePercentage = value.fee / 100 - } - } catch { - DWLogger.log("CrowdNode refreshFees error: \(error.localizedDescription)") - } - } - } - - private func getWithdrawalLimit(_ period: WithdrawalLimitPeriod) -> UInt64 { - switch period { - case .perTransaction: - return prefs.crowdNodeWithdrawalLimitPerTx - case .perHour: - return prefs.crowdNodeWithdrawalLimitPerHour - case .perDay: - return prefs.crowdNodeWithdrawalLimitPerDay - case .perBlock: - return 0 - } - } -} - -// MARK: Online account -extension CrowdNode { - func trackLinkingAccount(address: String) { - linkingApiAddress = address - prefs.accountAddress = address - changeOnlineState(to: .linking) - } - - func stopTrackingLinked() { - if signUpState == .notStarted && onlineAccountState <= .linking { - DWLogger.log("CrowdNode: stopTrackingLinked") - changeOnlineState(to: .none) - - if let address = linkingApiAddress { - Task { - // One last check just in case - try await Task.sleep(nanoseconds: 5 * UInt64(pow(10.0, 9.0))) - checkIfAddressIsInUse(address: address) - } - } - } - } - - func registerEmailForAccount(email: String, signature: String) async throws { - guard !accountAddress.isEmpty else { return } - - DWLogger.log("CrowdNode: sending signed email message") - let result = try await webService.registerEmail(address: accountAddress, email: email, signature: signature) - - if result.messageStatus.lowercased() == kMessageReceivedStatus { - DWLogger.log("CrowdNode: signed email sent successfully") - prefs.signedEmailMessageId = result.id - changeOnlineState(to: .creating) - } else { - DWLogger.log("CrowdNode: sendMessage not received, status: \(String(describing: result.messageStatus)). Result: \(String(describing: result.result))") - apiError = CrowdNode.Error.messageStatus(error: result.result ?? "") - } - } - - func setOnlineAccountCreated() { - changeOnlineState(to: .done) - } - - private func changeOnlineState(to: OnlineAccountState, save: Bool = true) { - if signUpState != .finished { - if to < .validating { - signUpState = .notStarted - } else { - signUpState = .linkedOnline - } - } - - if onlineAccountState == .none { - isOnlineStateRestored = true - } - - onlineAccountState = to - - if save { - prefs.savedOnlineAccountState = to - } - } - - - private func tryRestoreLinkedOnlineAccount(state: OnlineAccountState, address: String) throws { - if let address = prefs.crowdNodePrimaryAddress { - primaryAddress = address - } - - switch state { - case .none: - break - case .linking: - DWLogger.log("CrowdNode: found linking online account in progress, account: \(address), primary: \(String(describing: primaryAddress))") - checkIfAddressIsInUse(address: address) - case .creating, .signingUp: - // This should not happen - this method is reachable only for a linked account case - throw CrowdNode.Error.restoreLinked(state: state) - default: - changeOnlineState(to: state, save: false) - DWLogger.log("CrowdNode: found online account, state: \(state), account: \(address), primary: \(String(describing: primaryAddress))") - break - } - } - - private func startTrackingLinked(address: String) { - DWLogger.log("CrowdNode: startTrackingLinked, account: \(address)") - let timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: true) { [weak self] _ in - self?.checkIfAddressIsInUse(address: address) - } - timer.tolerance = 0.5 - self.timer = timer - } - - private func startTrackingValidated(address: String, fireImmediately: Bool) { - DWLogger.log("CrowdNode: startTrackingValidated, account: \(address)") - let timer = Timer.scheduledTimer(withTimeInterval: 30, repeats: true) { [weak self] _ in - self?.checkAddressStatus(address: address) - } - timer.tolerance = 0.5 - self.timer = timer - - if fireImmediately { - timer.fire() - } - } - - private func startTrackingConfirmed(address: String, fireImmediately: Bool) { - let timer = Timer.scheduledTimer(withTimeInterval: 20, repeats: true) { [weak self] _ in - self?.checkAddressStatus(address: address) - } - timer.tolerance = 0.5 - self.timer = timer - - if fireImmediately { - timer.fire() - } - - Task { - DWLogger.log("CrowdNode: startTrackingConfirmed, account: \(address)") - - // First check or wait for the confirmation tx. - // No need to make web requests if it isn't found. - let confirmationTx = await waitForApiAddressConfirmation(primaryAddress: primaryAddress!, apiAddress: accountAddress) - DWLogger.log("CrowdNode: confirmation tx found: \(confirmationTx.txidHexDisplay)") - - if hasDepositConfirmations() { - // If a deposit confirmation was received, the address has been confirmed already - changeOnlineState(to: .done) - - if prefs.shouldShowConfirmedNotification { - prefs.shouldShowConfirmedNotification = false - notifyIfNeeded(message: NSLocalizedString("Your CrowdNode address has been confirmed.", comment: "CrowdNode")) - } - - return - } - - // Chain acceptance (IS-lock or mined) was enforced by the gated - // filter in waitForApiAddressConfirmation — the SDK stand-in for - // the legacy DashSync account.transactionIsValid gate (stronger: - // legacy accepted mempool txs). - let forwardedFilter = CrowdNodeAPIConfirmationTxForwarded() - if TransactionObserver.fetchObserved().contains(where: { forwardedFilter.matches($0) }) { - DWLogger.log("CrowdNode: confirmation already forwarded — skipping") - return - } - - do { - let forwardTx = try await sendCoinsService.sendCoins( - address: CrowdNode.crowdNodeAddress, - amount: CrowdNode.apiConfirmationDashAmount, - inputSelector: SingleInputAddressSelector(address: address), - adjustAmountDownwards: true, - sessionAuthSufficient: true - ) - DWLogger.log("CrowdNode: forwarded confirmation tx: \(Transaction.displayHex(forwardTx))") - } catch { - // Legacy parity: log only — the 20s web poll (checkAddressStatus) - // is the fallback that completes linking. - DWLogger.log("CrowdNode: error forwarding confirmation tx: \(error)") - } - } - } - - private func startTrackingCreating(address: String, fireImmediately: Bool) { - DWLogger.log("CrowdNode: startTrackingCreating, account: \(address)") - let timer = Timer.scheduledTimer(withTimeInterval: 20, repeats: true) { [weak self] _ in - self?.checkIfEmailRegistered(address: address) - } - timer.tolerance = 0.5 - self.timer = timer - - if fireImmediately { - timer.fire() - } - } - - private func checkIfAddressIsInUse(address: String) { - Task { - let result = await webService.isAddressInUse(address: address) - primaryAddress = result.primaryAddress - - if result.isInUse && onlineAccountState <= .linking { - if primaryAddress == nil { - apiError = CrowdNode.Error.missingPrimary - changeOnlineState(to: .none) - } else { - prefs.accountAddress = address - prefs.crowdNodePrimaryAddress = result.primaryAddress - setTaxCategories() - changeOnlineState(to: .validating) - } - } - } - } - - private func checkAddressStatus(address: String) { - Task { - let status = await webService.addressStatus(address: address) - - if status.lowercased() == kValidStatus && onlineAccountState != .confirming { - changeOnlineState(to: .confirming) - notifyIfNeeded(message: NSLocalizedString("Your CrowdNode address has been validated, but verification is required.", comment: "CrowdNode")) - } else if status.lowercased() == kConfirmedStatus { - changeOnlineState(to: .done) - - if prefs.shouldShowConfirmedNotification { - prefs.shouldShowConfirmedNotification = false - notifyIfNeeded(message: NSLocalizedString("Your CrowdNode address has been confirmed.", comment: "CrowdNode")) - } - refreshBalance() - } - } - } - - private func checkIfEmailRegistered(address: String) { - Task { - let usingDummyEmail = await webService.isDefaultEmail(address: address) - - if usingDummyEmail { - // User email isn't set yet. Check the message status in case there is an error - let messageId = prefs.signedEmailMessageId - - if messageId != -1 { - let message = await webService.checkMessageStatus(id: messageId, address: address) - - if message?.messageStatus.lowercased() == kMessageFailedStatus { - // Operation failed - apiError = CrowdNode.Error.messageStatus(error: message?.result ?? "") - prefs.signedEmailMessageId = -1 - changeOnlineState(to: .none) - } - } - } else { - // Good to go - changeOnlineState(to: .signingUp) - } - } - } - - private func waitForApiAddressConfirmation(primaryAddress: String, apiAddress: String) async -> ObservedTransaction { - // Chain-accepted only: the caller forwards money on match, so a - // mempool-only sighting must not resolve this wait (the gate lives in - // the filter — the observer's txid dedupe runs after the filters, so - // the same row re-matches once the persister upgrades its context). - let filter = CrowdNodeAPIConfirmationTx(primaryAddress: primaryAddress, apiAddress: apiAddress, - requireChainAccepted: true) - - if let tx = TransactionObserver.fetchObserved().first(where: { filter.matches($0) }) { - return tx - } - else { - // Deep floor instead of the default now−120s: a confirmation row - // first seen before this wait started (e.g. mempool at restore - // time) must still match when its context flips to accepted. - // Safe for this filter — it is unique per link (primary+api - // pair), and the caller's already-forwarded guard covers a - // re-link's historic confirmation. - return await txObserver.first( - filters: filter, - after: Date(timeIntervalSince1970: TimeInterval(FullCrowdNodeSignUpTxSet.januaryFirst2022Epoch))) - } - } - - private func hasDepositConfirmations() -> Bool { - let filter = CrowdNodeResponse(responseCode: ApiCode.depositReceived, - accountAddress: accountAddress) - - return TransactionObserver.fetchObserved().contains { filter.matches($0) } - } - - /// - Parameter trustStoredAddress: whether the ownership scan proved the - /// stored address belongs to the active wallet. When false the stored - /// address is ignored and the address must come from this wallet's own - /// API-confirmation transaction, so an unproven address — including one - /// inherited from a pre-multi-wallet install's globals — can never - /// publish another wallet's linked account or its balance. - private func getOnlineAccountAddress(state: OnlineAccountState, - observed: [ObservedTransaction], - trustStoredAddress: Bool) -> String? { - let savedAddress = prefs.accountAddress - - if CrowdNode.trustsStoredOnlineAddress(trustStoredAddress: trustStoredAddress, - storedAddress: savedAddress, - state: state) { - return savedAddress - } else if let confirmationTx = getApiAddressConfirmationTx(in: observed), - let apiAddress = confirmationTx.ownOutputAddresses.first { - prefs.accountAddress = apiAddress - signUpState = .linkedOnline - - if CrowdNode.persistsLinkingDowngrade(confirmationAddress: apiAddress, - storedAddress: savedAddress) { - prefs.savedOnlineAccountState = .linking - } - - return apiAddress - } - - return nil - } - - /// `observed` is `restoreState()`'s shared snapshot of the post-2022 - /// history — this lookup runs against it rather than fetching its own. - private func getApiAddressConfirmationTx(in observed: [ObservedTransaction]) -> ObservedTransaction? { - let filter = CoinsToAddressTxFilter(coins: CrowdNode.apiConfirmationDashAmount, address: nil) // account address is unknown at this point - let forwardedConfirmationFilter = CrowdNodeAPIConfirmationTxForwarded() - - // There might be several matching transactions. The real one is the - // one whose destination CrowdNode forwarded from. - guard observed.contains(where: { forwardedConfirmationFilter.matches($0) }) else { - return nil - } - - return observed.first { confirmationTx in - guard filter.matches(confirmationTx), - let receivedTo = confirmationTx.ownOutputAddresses.first else { return false } - return forwardedConfirmationFilter.fromAddresses.contains(receivedTo) - } - } - - private func restoreCreatedOnlineAccount(_ address: String) { - let state = prefs.savedOnlineAccountState - - switch state { - case .none: - checkIfEmailRegistered(address: address) - case .creating, .signingUp, .done: - changeOnlineState(to: state, save: false) - default: - break - } - } -} - -extension CrowdNode { - private func setTaxCategories() { - Taxes.shared.mark(address: accountAddress, with: .transferIn) - Taxes.shared.mark(address: CrowdNode.crowdNodeAddress, with: .transferOut) - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/CrowdNodeBalanceReminder.swift b/DashWallet/Sources/Models/CrowdNode/CrowdNodeBalanceReminder.swift deleted file mode 100644 index dbcdb09f8c..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/CrowdNodeBalanceReminder.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// Created by OpenAI Codex -// Copyright © 2026 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import Foundation - -@MainActor -final class CrowdNodeBalanceReminder: ObservableObject { - static let shared = CrowdNodeBalanceReminder() - - @Published private(set) var hasBalance: Bool - @Published private(set) var balance: UInt64 - @Published private(set) var activeScreenReminderDismissed: Bool = false - /// Set once the active-screen reminder has been shown this session. Never reset, so the - /// reminder sheet appears at most once per app launch (unlike the dismissed flag, which - /// resets when the balance clears). - @Published private(set) var didShowActiveScreenReminder: Bool = false - - private let crowdNode: CrowdNode - private var cancellableBag = Set() - - var formattedBalance: String { - balance.formattedDashAmount - } - - var shouldShowOnActiveScreen: Bool { - hasBalance && !activeScreenReminderDismissed && !didShowActiveScreenReminder - } - - var shouldShowOnExplore: Bool { - hasBalance - } - - private init(crowdNode: CrowdNode = .shared) { - self.crowdNode = crowdNode - self.balance = crowdNode.balance - self.hasBalance = crowdNode.balance > 0 - - crowdNode.$balance - .receive(on: DispatchQueue.main) - .sink { [weak self] balance in - self?.update(balance: balance) - } - .store(in: &cancellableBag) - } - - func dismissActiveScreenReminder() { - // TODO(product): persist dismissal per account if this should survive app restarts. - activeScreenReminderDismissed = true - } - - /// Mark the active-screen reminder as shown so it isn't presented again this session. - func markActiveScreenReminderShown() { - didShowActiveScreenReminder = true - } - - private func update(balance: UInt64) { - self.balance = balance - hasBalance = balance > 0 - - if balance == 0 { - activeScreenReminderDismissed = false - } - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/MasternodeAPYCalculator.swift b/DashWallet/Sources/Models/CrowdNode/MasternodeAPYCalculator.swift deleted file mode 100644 index 000cfbfd74..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/MasternodeAPYCalculator.swift +++ /dev/null @@ -1,216 +0,0 @@ -// -// Created by Bartosz Rozwarski -// Copyright © 2026 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -/// Masternode APY estimate, DashSync-free. -/// -/// A pure-Swift port of the deterministic block-reward math from the retired -/// `DSChain+DashWallet` category (subsidy curve → masternode payment share → -/// payouts per year / collateral). Consensus constants are compiled in per -/// network (`WalletEnvironment.networkKind`); the chain height comes from -/// SwiftDashSDK's SPV coordinator. -/// -/// This is the ESTIMATED figure — same as what the app has effectively shown -/// since M6: the masternode count is the fixed `estimatedMasternodeCount` -/// (the category's live `validMasternodeCount` path read a DashSync -/// masternode list that no longer syncs, so its nil-fallback ran the same -/// fixed-count estimate). TODO(masternode-stats-ffi): replace the fixed count -/// with the live virtual count (regular + 4×evo) once the upstream -/// masternode-list stats FFI lands. -/// -/// The difficulty input is a per-network constant rather than a chain-tip -/// read: at every height this calculator can see, the subsidy base CLAMPS — -/// mainnet difficulty is orders of magnitude past the 5-DASH floor, and -/// testnet difficulty stays far below the ~86 threshold where the GPU-era -/// branch would leave the 25-DASH cap — so the constant reproduces the -/// category's output exactly on both networks. -enum MasternodeAPYCalculator { - private static let blockTargetSpacing = 2.625 * 60 - /// 1000 DASH collateral, in duffs (DashSync's MASTERNODE_COST). - private static let masternodeCostDuffs: UInt64 = 100_000_000_000 - /// The category's fixed estimate; see the header note on the live count. - private static let estimatedMasternodeCount: UInt64 = 3800 - - /// Per-network consensus constants, copied verbatim from the - /// `DSChain+DashWallet` category (which read them from DashSync), except - /// `core20Height` which the category fetched via the - /// `chain_core20_activation_height` FFI — values verified against Dash - /// Core `chainparams.cpp` (`consensus.V20Height`). - private struct Consensus { - let increaseBlockHeight: UInt64 - let period: UInt64 - let brrHeight: UInt64 - let superblockCycle: UInt64 - let budgetPaymentsStartBlock: UInt64 - let subsidyDecreaseBlockCount: UInt64 - let core20Height: UInt64 - let constantDifficulty: Double - /// Height floor used before the first SPV tick (see `estimatedAPY`). - let referenceHeight: UInt64 - - static let mainnet = Consensus( - increaseBlockHeight: 158_000, - period: 576 * 30, - brrHeight: 1_374_912, - superblockCycle: 16_616, - budgetPaymentsStartBlock: 328_008, - subsidyDecreaseBlockCount: 210_240, - core20Height: 1_987_776, - constantDifficulty: 100_000_000, // any post-ASIC value clamps the base to the 5-DASH floor - referenceHeight: 1_987_776) - - static let testnet = Consensus( - increaseBlockHeight: 4030, - period: 10, - brrHeight: 387_500, - superblockCycle: 24, - budgetPaymentsStartBlock: 4100, - subsidyDecreaseBlockCount: 210_240, - core20Height: 905_100, - constantDifficulty: 1, // any low-diff value clamps the base to the 25-DASH cap - referenceHeight: 905_100) - - // The category's DevNet arm — used whenever the app runs on a - // devnet (generic dash defaults; a specific devnet may differ). - static let devnet = Consensus( - increaseBlockHeight: 4030, - period: 10, - brrHeight: 300, - superblockCycle: 24, - budgetPaymentsStartBlock: 4100, - subsidyDecreaseBlockCount: 210_240, - core20Height: 300, - constantDifficulty: 1, - referenceHeight: 300) - - static func current() -> Consensus { - switch WalletEnvironment.networkKind { - case .mainnet: return .mainnet - case .testnet: return .testnet - case .devnet: return .devnet - } - } - } - - /// The estimated masternode APY in percent (e.g. 5.8), computed at the - /// SPV tip. Before the first SPV tick (both published heights still 0) - /// the per-network v20 activation height stands in — every payment-share - /// branch is saturated past it, so only the subsidy-decline count can - /// differ, and the first real tick corrects it. - static func estimatedAPY() -> Double { - let consensus = Consensus.current() - let coordinator = SwiftDashSDKSPVCoordinator.shared - var height = UInt64(max(coordinator.tipHeight, coordinator.bestPeerHeight)) - if height == 0 { - height = consensus.referenceHeight - } - return apy(atHeight: height, - difficulty: consensus.constantDifficulty, - masternodeCount: estimatedMasternodeCount, - consensus: consensus) - } - - private static func apy(atHeight height: UInt64, - difficulty: Double, - masternodeCount: UInt64, - consensus: Consensus) -> Double { - let daysPerYear = 365.242199 - let secondsPerDay: Double = 24 * 60 * 60 - - let blockReward = blockInflation(height: height, difficulty: difficulty, consensus: consensus) - let masternodeReward = masternodePayment(height: height, blockReward: blockReward, consensus: consensus) - - let blocksPerYear = daysPerYear * secondsPerDay / blockTargetSpacing - let payoutsPerYear = blocksPerYear / Double(masternodeCount) - - return 100.0 * Double(masternodeReward) * payoutsPerYear / Double(masternodeCostDuffs) - } - - /// Port of `calculateblockInflationWithHeight:nPrevBits:fSuperblockPartOnly:` - /// with `fSuperblockPartOnly = NO` and the nBits→difficulty conversion - /// replaced by the constant-difficulty input (see the header note). The - /// pre-5465 "early ages" and mainnet low-height bug branches are - /// unreachable at any height this calculator sees and are not ported. - private static func blockInflation(height: UInt64, difficulty: Double, consensus: Consensus) -> UInt64 { - let prevHeight = height - 1 - - // GPU/ASIC mining era: 2222222/(((x+2600)/9)^2), clamped [5, 25]. - var subsidyBase = Int64(2_222_222.0 / pow((difficulty + 2600.0) / 9.0, 2.0)) - if subsidyBase > 25 { - subsidyBase = 25 - } else if subsidyBase < 5 { - subsidyBase = 5 - } - - var subsidy = UInt64(subsidyBase) * 100_000_000 - // Yearly decline of production by ~7.1% per year. - var i = consensus.subsidyDecreaseBlockCount - while i <= prevHeight { - subsidy = subsidy - subsidy / 14 - i += consensus.subsidyDecreaseBlockCount - } - - let treasuryPart: UInt64 = prevHeight >= consensus.core20Height ? 20 : 10 // parts per 100 - let superblockPart = prevHeight > consensus.budgetPaymentsStartBlock ? (subsidy * treasuryPart) / 100 : 0 - - return subsidy - superblockPart - } - - /// Port of `calculateMasternodePaymentWithHeight:blockReward:`. - private static func masternodePayment(height: UInt64, blockReward: UInt64, consensus: Consensus) -> UInt64 { - let periods: [UInt64] = [ - 513, 526, 533, 540, 546, 552, 557, 562, 567, 572, - 577, 582, 585, 588, 591, 594, 597, 599, 600, - ] - - var ret = blockReward / 5 - - let increase = consensus.increaseBlockHeight - let period = consensus.period - if height > increase { ret += blockReward / 20 } - if height > increase + period { ret += blockReward / 20 } - if height > increase + period * 2 { ret += blockReward / 20 } - if height > increase + period * 3 { ret += blockReward / 40 } - if height > increase + period * 4 { ret += blockReward / 40 } - if height > increase + period * 5 { ret += blockReward / 40 } - if height > increase + period * 6 { ret += blockReward / 40 } - if height > increase + period * 7 { ret += blockReward / 40 } - if height > increase + period * 9 { ret += blockReward / 40 } - - if height < consensus.brrHeight { - // Block Reward Reallocation not activated yet. - return ret - } - - // Actual reallocation starts in the cycle after the activation one. - let reallocStart = consensus.brrHeight - consensus.brrHeight % consensus.superblockCycle + consensus.superblockCycle - if height < reallocStart { - return ret - } - - if height >= consensus.core20Height { - // Post-v20: block reward is 80% of the subsidy (20% treasury); - // the MN share is 75% of the block reward (= 60% of the subsidy). - return blockReward * 3 / 4 - } - - let reallocCycle = consensus.superblockCycle * 3 - let currentPeriod = min((height - reallocStart) / reallocCycle, UInt64(periods.count - 1)) - return (blockReward * periods[Int(currentPeriod)]) / 1000 - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/Model/ApiCode.swift b/DashWallet/Sources/Models/CrowdNode/Model/ApiCode.swift deleted file mode 100644 index 49c722d059..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/Model/ApiCode.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -@objc -enum ApiCode: UInt64, CaseIterable { - case pleaseAcceptTerms = 2 - case welcomeToApi = 4 - case depositReceived = 8 - case withdrawalQueue = 16 - case withdrawalDenied = 32 - case withdrawAll = 1000 - case signUp = 131_072 - case acceptTerms = 65536 - - static func maxCode() -> ApiCode { - ApiCode.signUp - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/Model/CrowdNodeError.swift b/DashWallet/Sources/Models/CrowdNode/Model/CrowdNodeError.swift deleted file mode 100644 index 34b6493c9c..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/Model/CrowdNodeError.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -// MARK: - CrowdNode.Error - -extension CrowdNode { - enum Error: Swift.Error, LocalizedError { - case signUp - case deposit - case withdraw - case withdrawLimit(amount: UInt64, period: WithdrawalLimitPeriod) - case restoreLinked(state: OnlineAccountState) - case missingPrimary - case messageStatus(error: String) - - var errorDescription: String { - switch self { - case .signUp: - return NSLocalizedString("We couldn’t create your CrowdNode account.", comment: "CrowdNode") - case .deposit: - return NSLocalizedString("We couldn’t make a deposit to your CrowdNode account.", comment: "CrowdNode") - case .withdraw: - return NSLocalizedString("We couldn’t withdraw from your CrowdNode account.", comment: "CrowdNode") - case .restoreLinked(let state): - return "Invalid state found in tryRestoreLinkedOnlineAccount: \(state)" - case .messageStatus(let error): - return error - default: - return "" - } - } - } -} - -// MARK: - SendCoinsService.Error - -extension SendCoinsService { - enum Error: Swift.Error { - case notEnoughFunds(selected: UInt64, amount: UInt64, fee: UInt64) - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/Services/CrowdNodeWebService.swift b/DashWallet/Sources/Models/CrowdNode/Services/CrowdNodeWebService.swift deleted file mode 100644 index c8ac300694..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/Services/CrowdNodeWebService.swift +++ /dev/null @@ -1,108 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Moya - -// MARK: - CrowdNodeService - -class CrowdNodeService { - private var httpClient: CrowdNodeAPI { - CrowdNodeAPI.shared - } -} - -extension CrowdNodeService { - func getBalance(address: String) async throws -> CrowdNodeBalance { - try await httpClient.request(.getBalance(address)) - } - - func getWithdrawalLimits(address: String) async throws -> [WithdrawalLimitPeriod: UInt64?] { - let limits: [WithdrawalLimit] = try await httpClient.request(.getWithdrawalLimits(address)) - var map: [WithdrawalLimitPeriod: UInt64?] = [:] - - limits.forEach { limit in - switch limit.key.lowercased() { - case WithdrawalLimit.maxPerTxKey.lowercased(): - map[WithdrawalLimitPeriod.perTransaction] = limit.value.plainDashAmount() - case WithdrawalLimit.maxPer1hKey.lowercased(): - map[WithdrawalLimitPeriod.perHour] = limit.value.plainDashAmount() - case WithdrawalLimit.maxPer24hKey.lowercased(): - map[WithdrawalLimitPeriod.perDay] = limit.value.plainDashAmount() - default: - break - } - } - - return map - } - - func isAddressInUse(address: String) async -> IsAddressInUse { - do { - return try await httpClient.request(.isAddressInUse(address)) - } catch { - return IsAddressInUse(isInUse: false, primaryAddress: nil) - } - } - - func addressStatus(address: String) async -> String { - do { - let result: AddressStatus = try await httpClient.request(.addressStatus(address)) - return result.status - } catch { - return "" - } - } - - func registerEmail(address: String, email: String, signature: String) async throws -> MessageStatus { - let encodedSignature = signature.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) - return try await httpClient.request(.sendSignedMessage(address: address, message: email, signature: encodedSignature!, messagetype: MessageType.registerEmail)) - } - - func requestWithdrawal(address: String, amount: UInt64, signature: String) async throws -> MessageStatus { - let encodedSignature = signature.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) - return try await httpClient.request(.sendSignedMessage(address: address, message: amount.value, signature: encodedSignature!, messagetype: MessageType.withdrawal)) - } - - func isDefaultEmail(address: String) async -> Bool { - do { - let response: IsDefaultEmail = try await httpClient.request(.hasDefaultEmail(address)) - return response.isDefault - } catch { - return true - } - } - - func checkMessageStatus(id: Int, address: String) async -> MessageStatus? { - do { - let messages: [MessageStatus] = try await httpClient.request(.getMessages(address)) - let message = messages.first { $0.id == id } - - if message == nil { - DWLogger.log("CrowdNode: got \(messages.count) messages, none with id \(id)") - return nil - } else { - return message - } - } catch { - return nil - } - } - - func getFees(address: String) async throws -> FeeInfo { - try await httpClient.request(.getFees(address)) - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/Services/DarkCoinMessageFraming.swift b/DashWallet/Sources/Models/CrowdNode/Services/DarkCoinMessageFraming.swift deleted file mode 100644 index af7d64adc0..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/Services/DarkCoinMessageFraming.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// DarkCoinMessageFraming.swift -// DashWallet -// -// Dash "signed message" framing — the byte prefix Dash Core's -// `signmessage`/`verifymessage` (and the CrowdNode API) hash before -// signing: -// -// compactSize(len(magic)) ‖ magic ‖ compactSize(len(msg)) ‖ msg -// -// with magic = "DarkCoin Signed Message:\n" (25 bytes, so the frame -// always opens with 0x19). Ports DashSync's `-[NSString magicDigest]` -// minus the double-SHA256 — SwiftDashSDK's signer FFI -// (`RawKeySigner.sign`) hashes internally, so callers pass these framed -// bytes whole, never a digest. -// -// The length prefixes are Bitcoin CompactSize, NOT the protobuf LEB128 -// varint in `ProtoWriter.appendVarInt` (they diverge from value 128 up) -// — don't swap one for the other. -// -// Pure leaf: Foundation only (harness-compilable). -// - -import Foundation - -enum DarkCoinMessage { - static let magic = "DarkCoin Signed Message:\n" - - /// The framed bytes whose SHA256d is the message digest. UTF-8 lengths, - /// matching DashSync's `appendString:` (UTF-8) framing. - static func framed(_ message: String) -> Data { - var data = Data() - appendCompactSizeString(magic, to: &data) - appendCompactSizeString(message, to: &data) - return data - } - - private static func appendCompactSizeString(_ string: String, to data: inout Data) { - let bytes = Data(string.utf8) - appendCompactSize(UInt64(bytes.count), to: &data) - data.append(bytes) - } - - /// Bitcoin CompactSize: <0xFD → 1 byte; ≤0xFFFF → 0xFD + uint16 LE; - /// ≤0xFFFFFFFF → 0xFE + uint32 LE; else 0xFF + uint64 LE. - private static func appendCompactSize(_ value: UInt64, to data: inout Data) { - switch value { - case ..<0xfd: - data.append(UInt8(value)) - case ...UInt64(UInt16.max): - data.append(0xfd) - appendLittleEndian(UInt16(value), to: &data) - case ...UInt64(UInt32.max): - data.append(0xfe) - appendLittleEndian(UInt32(value), to: &data) - default: - data.append(0xff) - appendLittleEndian(value, to: &data) - } - } - - private static func appendLittleEndian(_ value: T, to data: inout Data) { - var le = value.littleEndian - withUnsafeBytes(of: &le) { data.append(contentsOf: $0) } - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CoinsToAddressTxFilter.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CoinsToAddressTxFilter.swift deleted file mode 100644 index c35a224990..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CoinsToAddressTxFilter.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -public class CoinsToAddressTxFilter: TransactionFilter { - /// TODO(B4): tolerance window replaces DashSync's `tx.feeUsed` - /// reconstruction for `withFee` matches — the fee of a CrowdNode-built - /// transaction is unrecoverable from its raw bytes alone (it needs the - /// previous outputs' amounts). A fee-deducted amount is accepted when it - /// falls within `feeTolerance` below the expected value. - static let feeTolerance: UInt64 = 10_000 - - private let matchingAddress: String? - private var withFee: Bool - /// When set, only chain-accepted rows (IS-locked/mined — see - /// `ObservedTransaction.isChainAccepted`) can match. Used by waits that - /// trigger a spend on match. - private let requireChainAccepted: Bool - private(set) final var coins: UInt64 - private(set) final var toAddress: String? - /// The matched output's exact amount (differs from `coins` on a - /// fee-tolerance match); consumed by `CrowdNodeErrorResponse`'s - /// known-code exclusion. - private(set) final var matchedAmount: UInt64? - private(set) final var fromAddresses = Set() - - init(coins: UInt64, address: String?, withFee: Bool = false, requireChainAccepted: Bool = false) { - matchingAddress = address - self.coins = coins - self.withFee = withFee - self.requireChainAccepted = requireChainAccepted - } - - func matches(_ tx: ObservedTransaction) -> Bool { - // Acceptance gate FIRST — no side effects for unaccepted rows, so a - // mempool-first sighting re-matches cleanly on the acceptance rescan - // (the observer's txid dedupe runs after the filters). - if requireChainAccepted && !tx.isChainAccepted { - return false - } - - fromAddresses.removeAll() - - let lowerBound = withFee ? coins - min(coins, Self.feeTolerance) : coins - - let output = tx.outputs.first(where: { output in - let amountMatches = withFee - ? (output.amount >= lowerBound && output.amount < coins) - : output.amount == coins - return amountMatches && - (matchingAddress == nil || output.address == matchingAddress) - }) - - toAddress = output?.address ?? toAddress - matchedAmount = output?.amount ?? matchedAmount - let doesMatch = output != nil - - if doesMatch { - fromAddresses = tx.inputAddresses - } - - return doesMatch - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeAPIConfirmationTx.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeAPIConfirmationTx.swift deleted file mode 100644 index 708cb39961..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeAPIConfirmationTx.swift +++ /dev/null @@ -1,40 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -// MARK: - CrowdNodeAPIConfirmationTx - -final class CrowdNodeAPIConfirmationTx: CoinsToAddressTxFilter { - private var primaryAddress: String! - - init(primaryAddress: String, apiAddress: String, requireChainAccepted: Bool = false) { - super.init(coins: CrowdNode.apiConfirmationDashAmount, address: apiAddress, - requireChainAccepted: requireChainAccepted) - self.primaryAddress = primaryAddress - } - - override func matches(_ tx: ObservedTransaction) -> Bool { - super.matches(tx) && fromAddresses.contains(primaryAddress) - } -} - -// MARK: - CrowdNodeAPIConfirmationTxForwarded - -final class CrowdNodeAPIConfirmationTxForwarded: CoinsToAddressTxFilter { - init() { - super.init(coins: CrowdNode.apiConfirmationDashAmount, address: CrowdNode.crowdNodeAddress, withFee: true) - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeDepositTx.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeDepositTx.swift deleted file mode 100644 index 1042a917a0..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeDepositTx.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -final class CrowdNodeDepositTx: TransactionFilter { - private(set) final var accountAddress: String - - init(accountAddress: String) { - self.accountAddress = accountAddress - } - - func matches(_ tx: ObservedTransaction) -> Bool { - // Non-empty guard: decoded input addresses are best-effort (P2PKH - // only) — an empty set must not vacuously satisfy `allSatisfy`. - guard !tx.inputAddresses.isEmpty, - tx.inputAddresses.allSatisfy({ $0 == accountAddress }) - else { return false } - let crowdNodeAddress = CrowdNode.crowdNodeAddress - - for output in tx.outputs { - if output.address == crowdNodeAddress { - return !isApiRequest(coin: output.amount) - } - } - - return false - } - - private func isApiRequest(coin: UInt64) -> Bool { - coin <= CrowdNode.apiOffset + ApiCode.maxCode().rawValue - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeErrorResponse.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeErrorResponse.swift deleted file mode 100644 index 4cbb59640e..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeErrorResponse.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// CrowdNode returns the sent amount - fee as the indication of an error -public final class CrowdNodeErrorResponse: CoinsToAddressTxFilter { - /// Every well-known API response amount (apiOffset + code). The - /// fee-tolerance window of the base class can overlap these (e.g. a - /// 25 000-duff error window contains 20 002/20 004/20 008), and a known - /// response code must never be classified as an error payout. TODO(B4) - private static let knownApiAmounts: Set = - Set(ApiCode.allCases.map { CrowdNode.apiOffset + $0.rawValue }) - - init(errorValue: UInt64, accountAddress: String?) { - let accountAddress = accountAddress - super.init(coins: errorValue, address: accountAddress, withFee: true) - } - - override func matches(_ tx: ObservedTransaction) -> Bool { - guard super.matches(tx), - fromAddresses.contains(CrowdNode.crowdNodeAddress), - let amount = matchedAmount - else { return false } - return !Self.knownApiAmounts.contains(amount) - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeRequest.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeRequest.swift deleted file mode 100644 index 8b3d072185..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeRequest.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -public final class CrowdNodeRequest: CoinsToAddressTxFilter { - let requestCode: ApiCode - - init(requestCode: ApiCode) { - self.requestCode = requestCode - - let address = CrowdNode.crowdNodeAddress - let amount = CrowdNode.apiOffset + requestCode.rawValue - super.init(coins: amount, address: address) - } - - override func matches(_ tx: ObservedTransaction) -> Bool { - super.matches(tx) && fromAddresses.count == 1 - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeResponse.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeResponse.swift deleted file mode 100644 index b003190222..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeResponse.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -public final class CrowdNodeResponse: CoinsToAddressTxFilter { - let responseCode: ApiCode - - init(responseCode: ApiCode, accountAddress: String?) { - self.responseCode = responseCode - let accountAddress = accountAddress - let responseAmount = CrowdNode.apiOffset + responseCode.rawValue - - super.init(coins: responseAmount, address: accountAddress) - } - - override func matches(_ tx: ObservedTransaction) -> Bool { - // `.contains` (was `.first ==` on an unordered Set — nondeterministic): - // the response must be paid FROM CrowdNode's address. Input addresses - // are best-effort P2PKH recovery; CrowdNode pays from P2PKH. - super.matches(tx) && fromAddresses.contains(CrowdNode.crowdNodeAddress) && toAddress != CrowdNode.crowdNodeAddress - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeTopUpTx.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeTopUpTx.swift deleted file mode 100644 index 147d4c4913..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeTopUpTx.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -public final class CrowdNodeTopUpTx: CoinsToAddressTxFilter { - init(address: String) { - super.init(coins: CrowdNode.requiredForSignup, address: address) - } - - override func matches(_ tx: ObservedTransaction) -> Bool { - tx.direction == .moved && - super.matches(tx) - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeWithdrawalReceivedTx.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeWithdrawalReceivedTx.swift deleted file mode 100644 index 6b715ff7db..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/CrowdNodeWithdrawalReceivedTx.swift +++ /dev/null @@ -1,47 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -final class CrowdNodeWithdrawalReceivedTx: TransactionFilter { - private var joinedFilters: [TransactionFilter] = [] - - func matches(_ tx: ObservedTransaction) -> Bool { - if joinedFilters.contains(where: { filter in !filter.matches(tx) }) { - return false - } - - guard tx.inputAddresses.contains(CrowdNode.crowdNodeAddress) else { return false } - return tx.outputs.allSatisfy { output in !isApiResponse(coin: output.amount) } - } - - func and(txFilter: TransactionFilter) -> CrowdNodeWithdrawalReceivedTx { - joinedFilters.append(txFilter) - return self - } - - private func isApiResponse(coin: UInt64) -> Bool { - guard coin >= CrowdNode.apiOffset else { return false } - let toCheck = coin - CrowdNode.apiOffset - - return (1...1024).contains(toCheck) || (toCheck <= ApiCode.maxCode().rawValue && isPowerOfTwo(coin)) - } - - private func isPowerOfTwo(_ number: UInt64) -> Bool { - number & (number - 1) == 0 - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/FullCrowdNodeSignUpTxSet.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/FullCrowdNodeSignUpTxSet.swift deleted file mode 100644 index 0c8b769445..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/FullCrowdNodeSignUpTxSet.swift +++ /dev/null @@ -1,144 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -final class FullCrowdNodeSignUpTxSet: GroupedTransactions, TransactionWrapper { - var title: String { - NSLocalizedString("CrowdNode · Account", comment: "CrowdNode") - } - - var iconName: String { - "tx.item.cn.icon" - } - - var infoText: String { - NSLocalizedString("Your CrowdNode account was created using these transactions.", comment: "Crowdnode") - } - - var fiatAmount: String { - (try? CurrencyExchanger.shared.convertDash(amount: UInt64(abs(amount)).dashAmount, to: App.fiatCurrency).formattedFiatAmount) ?? - NSLocalizedString("Updating Price", comment: "Updating Price") - } - - static let id = "FullCrowdNodeSignUpTxSet" - private let savedAccountAddress = CrowdNodeDefaults.shared.accountAddress - /// Safe to assume there weren't any CrowdNode accounts before this point. - /// Also reused as the SwiftData fetch floor by `CrowdNode.restoreState`. - static let januaryFirst2022Epoch: UInt64 = 1_640_995_200 - private static let januaryFirst2022 = TimeInterval(januaryFirst2022Epoch) - private var matchedFilters: [CoinsToAddressTxFilter] = [] - private let txMapLock = NSLock() - - private var _transactionMap: [Data: Transaction] = [:] - var transactionMap: [Data: Transaction] { - txMapLock.lock() - defer { txMapLock.unlock() } - return _transactionMap - } - - var transactions: [Transaction] { - get { - txMapLock.lock() - defer { txMapLock.unlock() } - return _transactionMap.values.map { $0 }.sorted { tx1, tx2 in - tx1.date > tx2.date - } - } - } - private var _amount: Int64 = 0 - var amount: Int64 { _amount } - - var isComplete: Bool { - txMapLock.lock() - defer { txMapLock.unlock() } - return _transactionMap.count == 5 - } - - var welcomeToApiResponse: CoinsToAddressTxFilter? { - matchedFilters.first { filter in - (filter as? CrowdNodeResponse)?.responseCode == ApiCode.welcomeToApi - } - } - - var acceptTermsRequest: CoinsToAddressTxFilter? { - matchedFilters.first { filter in - (filter as? CrowdNodeRequest)?.requestCode == ApiCode.acceptTerms - } - } - - var acceptTermsResponse: CoinsToAddressTxFilter? { - matchedFilters.first { filter in - (filter as? CrowdNodeResponse)?.responseCode == ApiCode.pleaseAcceptTerms - } - } - - var signUpRequest: CoinsToAddressTxFilter? { - matchedFilters.first { filter in - (filter as? CrowdNodeRequest)?.requestCode == ApiCode.signUp - } - } - - @discardableResult - func tryInclude(_ tx: ObservedTransaction) -> Bool { - guard let ts = tx.timestamp, ts.timeIntervalSince1970 >= Self.januaryFirst2022 else { - return false - } - - let txHashData = tx.txid - - txMapLock.lock() - if _transactionMap[txHashData] != nil { - _transactionMap[txHashData] = tx.wrapped - txMapLock.unlock() - // Already included, return true - return true - } - txMapLock.unlock() - - var crowdNodeTxFilters = [ - CrowdNodeRequest(requestCode: ApiCode.signUp), - CrowdNodeResponse(responseCode: ApiCode.welcomeToApi, accountAddress: nil), - CrowdNodeRequest(requestCode: ApiCode.acceptTerms), - CrowdNodeResponse(responseCode: ApiCode.pleaseAcceptTerms, accountAddress: nil), - ] - - if let accountAddress = savedAccountAddress { - crowdNodeTxFilters.append(CrowdNodeTopUpTx(address: accountAddress)) - } - - if let matchedFilter = crowdNodeTxFilters.first(where: { $0.matches(tx) }) { - txMapLock.lock() - _transactionMap[txHashData] = tx.wrapped - txMapLock.unlock() - - matchedFilters.append(matchedFilter) - - let dashAmount = tx.wrapped.dashAmount - switch tx.direction { - case .sent: - _amount -= Int64(dashAmount) - case .received: - _amount += Int64(dashAmount) - case .moved, .notAccountFunds: - break - } - - return true - } - - return false - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/SingleInputAddressSelector.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/SingleInputAddressSelector.swift deleted file mode 100644 index f07154cc79..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/SingleInputAddressSelector.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -/// Call-site seam for CrowdNode's selected-input signal sends: the SDK send -/// path (`SwiftDashSDKTransactionSender.buildAndSignFromAddress`) funds the -/// transaction from this address's UTXO pool and returns change to it. -public final class SingleInputAddressSelector { - let address: String - - init(address: String) { - self.address = address - } -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/TransactionWrapper.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/TransactionWrapper.swift deleted file mode 100644 index 63167cc9a7..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/TransactionWrapper.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -protocol TransactionWrapper { - var transactionMap: [Data: Transaction] { get } - var amount: Int64 { get } - @discardableResult - func tryInclude(_ tx: ObservedTransaction) -> Bool -} diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/TxWithinTimePeriod.swift b/DashWallet/Sources/Models/CrowdNode/TxFilters/TxWithinTimePeriod.swift deleted file mode 100644 index e8a5807b99..0000000000 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/TxWithinTimePeriod.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -public final class TxWithinTimePeriod: TransactionFilter { - private let from: Date - private let to: Date - - init(from: Date, to: Date) { - self.from = from - self.to = to - } - - func matches(_ tx: ObservedTransaction) -> Bool { - guard let ts = tx.timestamp else { return false } - return ts >= from && ts <= to - } -} diff --git a/DashWallet/Sources/Models/Transactions/Model/Transaction.swift b/DashWallet/Sources/Models/Transactions/Model/Transaction.swift index dda3f1b647..26f1213997 100644 --- a/DashWallet/Sources/Models/Transactions/Model/Transaction.swift +++ b/DashWallet/Sources/Models/Transactions/Model/Transaction.swift @@ -232,8 +232,8 @@ class Transaction: TransactionDataItem, Identifiable { // 3=coinjoin. Promote outgoing→moved when the wallet's net // change equals just the fee (self-send) — mirrors DashSync's // `received + fee == sent` check so the legacy code path that - // still relies on `.moved` (e.g. CrowdNode top-up matcher, - // "Internal Transfer" labelling) keeps working uniformly. + // still relies on `.moved` (e.g. "Internal Transfer" labelling) + // keeps working uniformly. switch snapshot.direction { case 0: return .received case 2: return .moved diff --git a/DashWallet/Sources/Models/CrowdNode/TxFilters/TransactionFilter.swift b/DashWallet/Sources/Models/Transactions/Observation/TransactionFilter.swift similarity index 74% rename from DashWallet/Sources/Models/CrowdNode/TxFilters/TransactionFilter.swift rename to DashWallet/Sources/Models/Transactions/Observation/TransactionFilter.swift index ed58ff49b2..f4018c0c10 100644 --- a/DashWallet/Sources/Models/CrowdNode/TxFilters/TransactionFilter.swift +++ b/DashWallet/Sources/Models/Transactions/Observation/TransactionFilter.swift @@ -17,12 +17,12 @@ import Foundation -/// Source-neutral transaction view the CrowdNode filters match on. +/// Source-neutral transaction view that transaction filters match on. /// -/// Built on the main actor from a `PersistentTransaction` row plus a consensus -/// decode of its raw bytes (`TransactionDecoder`) — persistence materializes -/// TXO rows only for the wallet's own outputs, so matching external addresses -/// (CrowdNode's) requires decoding the stored bytes. +/// Built from a `PersistentTransaction` row plus a consensus decode of its raw +/// bytes (`TransactionDecoder`) — persistence materializes TXO rows only for +/// the wallet's own outputs, so seeing every output requires decoding the +/// stored bytes. struct ObservedTransaction { struct Output { /// nil for non-standard scripts (OP_RETURN etc.). @@ -37,10 +37,6 @@ struct ObservedTransaction { /// Explorer-style reversed-hex txid for logs. let txidHexDisplay: String let outputs: [Output] - /// Best-effort per-input sender addresses (P2PKH scriptSig recovery; inputs - /// spending coinbase/P2SH yield no address), deduped. CrowdNode pays from - /// P2PKH, so its request/response txs always carry recoverable addresses. - let inputAddresses: Set /// Row `firstSeen`, falling back to `blockTimestamp`; nil when both are 0. let timestamp: Date? /// Row `blockHeight` — 0 while the transaction is still unmined @@ -52,23 +48,16 @@ struct ObservedTransaction { /// device clock — the only stamp that can tell "just arrived" apart from /// "history replayed". let minedAt: Date? - /// Sum of this tx's outputs paying the wallet's own addresses (the row's - /// materialized TXOs) — DashSync's `amountReceived(from:)`, in duffs. - let ownOutputsAmount: UInt64 /// Own destination addresses in wire output order — DashSync's /// `externalAddresses(of:)` stand-in for "which of our addresses this tx /// paid" (own TXO rows projected onto the decoded output order). let ownOutputAddresses: [String] - /// True once the row is past mempool — IS-locked, mined, or chain-locked - /// (context ≥ 1) or carrying a block height (rows restored from chain - /// data). SDK-side stand-in for DashSync's `account.transactionIsValid`. - let isChainAccepted: Bool /// SwiftDashSDK transaction context: 0=mempool, 1=InstantSend, /// 2=in-block, 3=ChainLocked. let context: UInt32 /// Display wrapper; supplies direction/dashAmount with the existing /// FFI → TransactionDirection mapping (including the outgoing → moved - /// fee-only promotion the top-up matcher relies on). + /// fee-only promotion). let wrapped: Transaction var direction: TransactionDirection { wrapped.direction } diff --git a/DashWallet/Sources/Models/CrowdNode/Services/TransactionObserver.swift b/DashWallet/Sources/Models/Transactions/Observation/TransactionObserver.swift similarity index 78% rename from DashWallet/Sources/Models/CrowdNode/Services/TransactionObserver.swift rename to DashWallet/Sources/Models/Transactions/Observation/TransactionObserver.swift index a3aa175ac1..9803f2b46b 100644 --- a/DashWallet/Sources/Models/CrowdNode/Services/TransactionObserver.swift +++ b/DashWallet/Sources/Models/Transactions/Observation/TransactionObserver.swift @@ -30,10 +30,8 @@ extension ObservedTransaction { /// Runs on whatever thread owns `row`'s context — it only reads the row's /// own properties and its TXO relationship, decodes bytes, and wraps the /// row (`HomeViewModel`'s reload already builds `Transaction` off the main - /// thread the same way). It was `@MainActor` while the only caller read - /// through `mainContext`; the scanner now owns its context, and forcing - /// the decode back onto the main actor is what made a CrowdNode restore - /// stall the main thread for ~2s. + /// thread the same way). Not `@MainActor`: the scanner owns its context, + /// and decoding a large window on the main actor stalls it for seconds. init?(row: PersistentTransaction, network: Network) { let decoded: DecodedTransaction do { @@ -52,12 +50,9 @@ extension ObservedTransaction { txid = row.txid txidHexDisplay = row.txidHex outputs = decoded.outputs.map { Output(address: $0.address, amount: $0.valueDuffs) } - inputAddresses = Set(decoded.inputs.compactMap { $0.address }) // The row's TXOs are exactly the wallet's own outputs of this tx. let ownAddresses = Set(row.outputs.map(\.address)) - ownOutputsAmount = row.outputs.reduce(0) { $0 + $1.amount } ownOutputAddresses = decoded.outputs.compactMap { $0.address }.filter { ownAddresses.contains($0) } - isChainAccepted = row.context >= 1 || row.blockHeight > 0 context = row.context // firstSeen first (device-clock stamp at first observation — the // ordering key the observer's freshness floor uses), blockTimestamp @@ -73,23 +68,22 @@ extension ObservedTransaction { // MARK: - TransactionObserver -/// Watches SwiftDashSDK-persisted transactions for CrowdNode protocol matches. +/// Reads and watches SwiftDashSDK-persisted transactions: the bounded row +/// scan behind the transaction notifications, and the live receipt watch of +/// the Receive screen. /// -/// Replaces the DashSync `DSTransactionManagerTransactionStatusDidChange` -/// pipeline (dead post-M6 — DashSync no longer syncs, so it never fired and -/// every await hung forever). The Rust persister writes `PersistentTransaction` -/// rows on every Core SPV batch and SwiftData posts -/// `NSManagedObjectContextDidSave`; each save triggers a bounded rescan. +/// The Rust persister writes `PersistentTransaction` rows on every Core SPV +/// batch and SwiftData posts `NSManagedObjectContextDidSave`; each save +/// triggers a bounded rescan of a live watch. public final class TransactionObserver { static let logger = Logger( subsystem: "org.dashfoundation.dash", - category: "crowdnode-observer") + category: "transaction-observer") /// `firstSeen` is stamped from the device clock when the SDK first sees a - /// tx, and responses always postdate the request we broadcast — so a small - /// skew window below `after` keeps a same-code response from a PREVIOUS - /// request (e.g. an earlier deposit's ack) out of this wait while never - /// dropping a response that raced the subscription. + /// tx — so a small skew window below `after` keeps a transaction that + /// raced the subscription in the watch, while the exclusion snapshot + /// keeps older ones out. private static let matchFloorSkew: TimeInterval = 120 /// The `firstSeen` floor a subscription started at `after` will scan from. @@ -123,9 +117,8 @@ public final class TransactionObserver { /// yet or the network is unsupported. Safe from any thread. /// /// The scan itself runs on the CALLER's thread against its own - /// `ModelContext`, never `mainContext` — callers that hold the main - /// thread (`CrowdNode.restoreState`) therefore pay the scan inline, so - /// keep it cheap. Only the two host reads need the main actor; they are + /// `ModelContext`, never `mainContext` — a caller on the main thread + /// pays the scan inline, so keep it cheap. Only the two host reads need the main actor; they are /// cheap property reads. /// /// `ObservedTransaction` is a struct decoded from each row, so the results @@ -238,24 +231,6 @@ public final class TransactionObserver { return Set(try context.fetch(descriptor).map(\.txid)) } - /// Total persisted transaction count, or nil when the SDK host has no - /// container yet. A `SELECT COUNT(*)` with no join, predicate or decode — - /// cheap enough for callers to use as a "has anything new been persisted" - /// check before deciding whether a full rescan is worth its cost. - static func persistedTransactionCount() -> Int? { - let container = { @MainActor () -> ModelContainer? in - SwiftDashSDKHost.shared.modelContainer - } - let resolved: ModelContainer? - if Thread.isMainThread { - resolved = MainActor.assumeIsolated { container() } - } else { - resolved = DispatchQueue.main.sync { MainActor.assumeIsolated { container() } } - } - guard let resolved else { return nil } - return try? ModelContext(resolved).fetchCount(FetchDescriptor()) - } - private static func scan( container: ModelContainer, walletId: Data, @@ -301,12 +276,12 @@ public final class TransactionObserver { let decodeStart = Date() let observed = rows.compactMap { ObservedTransaction(row: $0, network: network) } let decodeMs = Int(Date().timeIntervalSince(decodeStart) * 1000) - // Only when it actually costs something: `observe()` rescans on + // Only when it actually costs something: a live watch rescans on // every SwiftData save, so an unconditional line here is sync-time // log spam. A slow scan is worth seeing because callers on the // main thread pay it inline. if fetchMs + decodeMs > Self.slowScanLogThresholdMs { - DWLogger.log("CrowdNode scan: fetch \(rows.count) rows in \(fetchMs)ms, decode in \(decodeMs)ms") + DWLogger.log("TransactionObserver scan: fetch \(rows.count) rows in \(fetchMs)ms, decode in \(decodeMs)ms") } return observed } catch { @@ -317,24 +292,11 @@ public final class TransactionObserver { // MARK: Matching - /// Emits every persisted tx matching any filter, deduped by txid within - /// the subscription. Scans immediately at subscribe (the response may have - /// been persisted before the await started), then rescans on every - /// SwiftData save. - func observe(filters: [TransactionFilter], after: Date) -> AnyPublisher { - return Deferred { - var seenTxids = Set() - return self.matchingTransactions(filters: filters, after: after) - .filter { seenTxids.insert($0.txid).inserted } - } - .eraseToAnyPublisher() - } - - /// Emits each matching transaction context once. Unlike `observe`, this - /// preserves mempool → InstantSend → mined → ChainLocked updates for a - /// single txid. `excludingTxids` is the session-start snapshot that guards - /// against old transactions receiving a fresh device-clock timestamp during - /// restore or resync. + /// Emits each matching transaction context once, which preserves + /// mempool → InstantSend → mined → ChainLocked updates for a single txid. + /// `excludingTxids` is the session-start snapshot that guards against old + /// transactions receiving a fresh device-clock timestamp during restore or + /// resync. func observeUpdates( filters: [TransactionFilter], after: Date, @@ -390,17 +352,4 @@ public final class TransactionObserver { } return DispatchQueue.main.sync { MainActor.assumeIsolated { resolve() } } } - - /// Waits for the first persisted tx that matches any filter. Capture - /// `after` just before broadcasting the request the response answers. - func first(filters: TransactionFilter..., after: Date = Date()) async -> ObservedTransaction { - await withCheckedContinuation { continuation in - var cancellable: AnyCancellable? - cancellable = observe(filters: filters, after: after).first().sink(receiveValue: { tx in - TransactionObserver.logger.info("🅾 OBSERVER :: matched \(tx.txidHexDisplay, privacy: .public)") - cancellable?.cancel() - continuation.resume(returning: tx) - }) - } - } } diff --git a/DashWallet/Sources/Models/Transactions/SendCoinsService.swift b/DashWallet/Sources/Models/Transactions/SendCoinsService.swift index cdd5ca97f3..978c59a5fb 100644 --- a/DashWallet/Sources/Models/Transactions/SendCoinsService.swift +++ b/DashWallet/Sources/Models/Transactions/SendCoinsService.swift @@ -23,14 +23,11 @@ public final class SendCoinsService: NSObject { /// - Returns: the wire-order txid of the broadcast transaction /// (`Transaction.txHashData` convention). func sendCoins(address: String, amount: UInt64, - inputSelector: SingleInputAddressSelector? = nil, adjustAmountDownwards: Bool = false, sessionAuthSufficient: Bool = false) async throws -> Data { return try await walletSendService.send( address: address, amount: amount, - inputSelector: inputSelector, - adjustAmountDownwards: adjustAmountDownwards, sessionAuthSufficient: sessionAuthSufficient ) } diff --git a/DashWallet/Sources/Models/Transactions/WalletSendService.swift b/DashWallet/Sources/Models/Transactions/WalletSendService.swift index 4e3315f4d6..3b7cbdf140 100644 --- a/DashWallet/Sources/Models/Transactions/WalletSendService.swift +++ b/DashWallet/Sources/Models/Transactions/WalletSendService.swift @@ -340,50 +340,10 @@ final class WalletSendService: NSObject { func send( address: String, amount: UInt64, - inputSelector: SingleInputAddressSelector? = nil, - adjustAmountDownwards: Bool = false, sessionAuthSufficient: Bool = false ) async throws -> Data { try Self.ensureInitialRestoreSyncCompleted() - // Also covers the selected-input path below, whose `buildAndSignFromAddress` - // broadcasts internally and never reaches `PreparedStandardSend.broadcast()`. try Self.ensureOnline() - if let inputSelector { - Self.logger.info("💸 TXSEND :: routing to selected-input (SwiftDashSDK) path") - try await sendAuthorizer.authorizeSend(spendAmount: amount, sessionAuthSufficient: sessionAuthSufficient) - do { - let (_, fee, txHash) = try await SwiftDashSDKTransactionSender.buildAndSignFromAddress( - fromAddress: inputSelector.address, - to: address, - amount: amount, - adjustAmountDownwards: adjustAmountDownwards - ) - // buildAndSignFromAddress broadcasts internally; txHash is - // display order — reverse to the wire-order registry key. - let txidWire = Data(txHash.reversed()) - recentSends.record( - txidWire: txidWire, address: address, amount: amount, fee: fee) - return txidWire - } catch SwiftDashSDKTransactionSender.SendError.insufficientSelectedFunds(let selected, let amount, let fee) { - throw Self.makeError( - code: .insufficientSelectedFunds, - description: "Not enough funds. Selected: \(selected), Amount: \(amount), Fee: \(fee)" - ) - } catch SwiftDashSDKTransactionSender.SendError.transactionRejected(_, let reason) { - throw Self.makeError( - code: .broadcastRejected, - description: BroadcastOutcomeCopy.rejected, - diagnostic: reason - ) - } catch SwiftDashSDKTransactionSender.SendError.transactionStatusUnknown(_, let reason) { - throw Self.makeError( - code: .broadcastUnknown, - description: BroadcastOutcomeCopy.unknown, - diagnostic: reason - ) - } - } - let preparedSend = try await prepareStandardSendForConfirmation( address: address, amount: amount, sessionAuthSufficient: sessionAuthSufficient) try preparedSend.broadcast() @@ -902,7 +862,6 @@ private extension WalletSendService { enum ErrorCode: Int { case authenticationCancelled = 1 case authenticationFailed = 2 - case insufficientSelectedFunds = 3 case coinJoinSweepUnavailable = 4 case alreadyBroadcast = 5 case dashPayPaymentUnavailable = 6 @@ -968,12 +927,10 @@ private extension WalletSendService { /// The two broadcast outcomes a user can be shown, in one place. /// - /// Every send route ends in one of these, and there is more than one route - /// — the prepared standard send and the selected-input / sweep path, which - /// broadcasts inside `buildAndSignFromAddress` and never reaches - /// `PreparedStandardSend.broadcast()`. They used to build the strings - /// independently and drifted apart, so one route kept showing unlocalized - /// English with the SDK's internal reason appended. + /// Every send route ends in one of these, and there is more than one + /// route, so the strings live here rather than in each route: built + /// independently, they drift apart, and one route ends up showing + /// unlocalized English with the SDK's internal reason appended. enum BroadcastOutcomeCopy { /// Nothing reached the network, so the money is provably still here — /// say that, because "wasn't sent" alone reads as a loss. diff --git a/DashWallet/Sources/Models/Tx Metadata/ServiceName.swift b/DashWallet/Sources/Models/Tx Metadata/ServiceName.swift index 90d291f5f2..05801e72a7 100644 --- a/DashWallet/Sources/Models/Tx Metadata/ServiceName.swift +++ b/DashWallet/Sources/Models/Tx Metadata/ServiceName.swift @@ -19,7 +19,6 @@ import Foundation enum ServiceName: String, CaseIterable { - case crowdNode = "crowdnode" case uphold = "uphold" case coinbase = "coinbase" case ctxSpend = "ctxspend" diff --git a/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountHostingController.swift b/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountHostingController.swift index 0d955e1cf0..8bfdf92279 100644 --- a/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountHostingController.swift +++ b/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountHostingController.swift @@ -97,33 +97,6 @@ final class TransferAmountHostingController: BaseViewController, NavigationBarDi vc.modalPresentationStyle = .overCurrentContext self.present(vc, animated: true) } - - viewModel.onNeedsLeftoverWarning = { [weak self] completion in - guard let self else { completion(false); return } - let title = NSLocalizedString( - "Looks like you are emptying your Dash Wallet", - comment: "Leftover balance warning" - ) - let message = String.localizedStringWithFormat( - NSLocalizedString( - "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash.", - comment: "Leftover balance warning" - ), - CrowdNode.minimumLeftoverBalance.formattedDashAmountWithoutCurrencySymbol - ) - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - alert.addAction(UIAlertAction( - title: NSLocalizedString("Continue", comment: "Leftover balance warning"), - style: .default, - handler: { _ in completion(true) } - )) - alert.addAction(UIAlertAction( - title: NSLocalizedString("Cancel", comment: "Leftover balance warning"), - style: .cancel, - handler: { _ in completion(false) } - )) - self.present(alert, animated: true) - } } } diff --git a/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountViewModel.swift b/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountViewModel.swift index 1c9727a1ae..7faf23406f 100644 --- a/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountViewModel.swift +++ b/DashWallet/Sources/UI/Coinbase/Transfer Amount/TransferAmountViewModel.swift @@ -90,10 +90,6 @@ final class TransferAmountViewModel: ObservableObject, TransferAmountViewModelPr /// Message is the failed-status screen text. var onTransferFailed: ((String) -> Void)? var onLimitExceeded: ((Error) -> Void)? - /// Called when the toCoinbase direction would drain the wallet below the CrowdNode minimum. - /// The closure receives a completion block; the host must call it with `true` (proceed) or - /// `false` (cancel). If nil the check is skipped and transfer proceeds. - var onNeedsLeftoverWarning: ((@escaping (Bool) -> Void) -> Void)? // MARK: NetworkReachabilityHandling @@ -181,17 +177,7 @@ final class TransferAmountViewModel: ObservableObject, TransferAmountViewModelPr func transfer() { isProcessing = true - if model.direction == .toCoinbase { - performLeftoverCheck { [weak self] canProceed in - guard canProceed, let self else { - self?.isProcessing = false - return - } - self.model.initializeTransfer() - } - } else { - model.initializeTransfer() - } + model.initializeTransfer() } func continue2FA(code: String, idem: UUID) { @@ -303,34 +289,6 @@ final class TransferAmountViewModel: ObservableObject, TransferAmountViewModelPr makeSourceItem(from: model.toItem, dashBalance: to.duffs, fiat: to.fiat)) } - private func performLeftoverCheck(completion: @escaping (Bool) -> Void) { - let requiresWarning = Self.requiresLeftoverWarning( - crowdNodeBalance: CrowdNodeDefaults.shared.lastKnownBalance, - transferAmount: model.amount?.plainAmount ?? 0, - minimumLeftover: CrowdNode.minimumLeftoverBalance, - maxSendable: SwiftDashSDKWalletState.shared.feeAwareMaxSendable()) - if requiresWarning { - if let handler = onNeedsLeftoverWarning { - handler(completion) - } else { - completion(true) - } - } else { - completion(true) - } - } - - static func requiresLeftoverWarning( - crowdNodeBalance: UInt64, - transferAmount: UInt64, - minimumLeftover: UInt64, - maxSendable: UInt64 - ) -> Bool { - guard crowdNodeBalance > 0 else { return false } - guard maxSendable >= minimumLeftover else { return true } - return transferAmount > maxSendable - minimumLeftover - } - private static func makeSourceItem(from provider: SourceViewDataProvider?, dashBalance: Int64, fiat: String) -> TransferSourceItem { guard let provider else { return TransferSourceItem(title: "", subtitle: nil, dashBalance: 0, fiatBalanceFormatted: nil, iconAssetName: "") diff --git a/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderBanner.swift b/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderBanner.swift deleted file mode 100644 index ad7ac0da21..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderBanner.swift +++ /dev/null @@ -1,63 +0,0 @@ -// -// Created by OpenAI Codex -// Copyright © 2026 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import SwiftUI -import DashUIKit - -struct CrowdNodeBalanceReminderBanner: View { - var onWithdraw: () -> Void - - var body: some View { - HStack(alignment: .top, spacing: 10) { - DashIcon.SystemMessage.warningTriangle.image - .resizable() - .scaledToFit() - .frame(width: 30, height: 30) - - VStack(alignment: .leading, spacing: 20) { - VStack(alignment: .leading, spacing: 1) { - Text(NSLocalizedString("You have a balance on CrowdNode", comment: "CrowdNode")) - .dashFont(.subheadMedium) - .foregroundColor(Color.dash.primaryText) - - Text(NSLocalizedString("These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device.", comment: "CrowdNode")) - .dashFont(.subhead) - .foregroundColor(Color.dash.secondaryText) - .multilineTextAlignment(.leading) - } - - DashUIKit.DashButton( - text: NSLocalizedString("Withdraw funds", comment: "CrowdNode"), - size: .small, - style: .filledBlue, - action: onWithdraw - ) - } - .padding(.trailing, 20) - .padding(.top, 5) - } - .padding(16) - .background(Color.dash.gray300Alpha10) - .clipShape(.rect(cornerRadius: 20)) - } -} - -#Preview { - CrowdNodeBalanceReminderBanner(onWithdraw: {}) - .padding(20) - .background(Color.dash.primaryBackground) -} diff --git a/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderSheet.swift b/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderSheet.swift deleted file mode 100644 index 82848dbb13..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeBalanceReminderSheet.swift +++ /dev/null @@ -1,101 +0,0 @@ -// -// Created by OpenAI Codex -// Copyright © 2026 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import SwiftUI -import DashUIKit - -struct CrowdNodeBalanceReminderSheet: View { - var onWithdraw: () -> Void - var onDismiss: () -> Void - - var body: some View { - VStack(alignment: .leading, spacing: 0) { - DashIcon.Illustrations.crowdnodeWarning.image - .resizable() - .scaledToFit() - .frame(width: 90, height: 90) - .padding(.top, 20) - .padding(.bottom, 10) - .frame(maxWidth: .infinity, alignment: .center) - - - VStack(alignment: .leading, spacing: 6) { - Text(NSLocalizedString("You have a balance on CrowdNode", comment: "CrowdNode")) - .dashFont(.title1) - .foregroundStyle(Color.dash.primaryText) - .multilineTextAlignment(.leading) - - Text(NSLocalizedString("These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device.", comment: "CrowdNode")) - .dashFont(.subhead) - .foregroundStyle(Color.dash.secondaryText) - .multilineTextAlignment(.leading) - } - .padding(.horizontal, 40 + 20) - .padding(.top, 20) - .padding(.bottom, 32) - - - VStack(alignment: .center, spacing: 16) { - DashUIKit.DashButton( - text: NSLocalizedString("Withdraw funds", comment: "CrowdNode"), - fillsWidth: true, - size: .large, - style: .filledBlue, - action: onWithdraw - ) - - DashUIKit.DashButton( - text: NSLocalizedString("Close", comment: "CrowdNode"), - fillsWidth: true, - size: .large, - style: .tintedGray, - action: onDismiss - ) - } - .padding(.horizontal, 60) - .padding(.vertical, 20) - } - } -} - -#Preview { - CrowdNodeBalanceReminderSheet( - onWithdraw: {}, - onDismiss: {} - ) - .background(Color.dash.primaryBackground) -} - -#Preview { - Color.dash.primaryBackground - .ignoresSafeArea() - .sheet(isPresented: .constant(true)) { - // Use the lib's qualified factory: it sets `fillsHeight: false`, self-sizes to content, - // and (via `cornerRadius`) fills the sheet background + rounds the corners. - // `fallback` avoids the `.medium` flash before the first measurement. - DashUIKit.BottomSheet.selfSizing( - showBackButton: .constant(false), - fallback: 540, - cornerRadius: 24 - ) { - CrowdNodeBalanceReminderSheet( - onWithdraw: {}, - onDismiss: {} - ) - } - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeWithdrawalRouter.swift b/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeWithdrawalRouter.swift deleted file mode 100644 index d622fb0cf4..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/BalanceReminder/CrowdNodeWithdrawalRouter.swift +++ /dev/null @@ -1,104 +0,0 @@ -// -// Created by OpenAI Codex -// Copyright © 2026 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -@MainActor -enum CrowdNodeWithdrawalRouter { - /// Returns true when navigation was started. Returns false when the flow was blocked - /// and the user was shown an explanatory alert instead. - @discardableResult - static func openWithdrawal(from presenter: UIViewController) -> Bool { - guard SyncingActivityMonitor.shared.state == .syncDone else { - presentSyncingAlert(from: presenter) - return false - } - - CrowdNode.shared.restoreState() - let state = CrowdNode.shared.signUpState - - guard state == .finished || state == .linkedOnline else { - let rootViewController = CrowdNodeModelObjcWrapper.getRootVC() - presentInNavigationController(rootViewController, from: presenter) - return true - } - - guard CrowdNodeModel.shared.canWithdraw else { - presentMinimumBalanceError(from: presenter) - return false - } - - let portal = CrowdNodePortalController.controller() - let navigationController = BaseNavigationController(rootViewController: portal) - presenter.present(navigationController, animated: true) { - navigationController.pushViewController( - CrowdNodeTransferController.controller(mode: .withdraw), - animated: false - ) - } - return true - } - - private static func presentInNavigationController(_ rootViewController: UIViewController, from presenter: UIViewController) { - let navigationController = BaseNavigationController(rootViewController: rootViewController) - presenter.present(navigationController, animated: true) - } - - private static func presentSyncingAlert(from presenter: UIViewController) { - let title = NSLocalizedString("The chain is syncing…", comment: "") - let message = NSLocalizedString("Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up.", comment: "") - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - - let websiteAction = UIAlertAction( - title: NSLocalizedString("Go to CrowdNode website", comment: ""), - style: .default - ) { _ in - UIApplication.shared.open(CrowdNodeObjcWrapper.crowdNodeWebsiteUrl(), options: [:], completionHandler: nil) - } - alert.addAction(websiteAction) - - let closeAction = UIAlertAction( - title: NSLocalizedString("Close", comment: ""), - style: .cancel - ) - alert.addAction(closeAction) - presenter.present(alert, animated: true) - } - - private static func presentMinimumBalanceError(from presenter: UIViewController) { - let controller = BasicInfoController() - controller.icon = "image.crowdnode.error" - controller.headerText = NSLocalizedString("You should have a positive balance on Dash Wallet", comment: "CrowdNode") - controller.descriptionText = String.localizedStringWithFormat( - NSLocalizedString("Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal", comment: "CrowdNode"), - CrowdNode.minimumLeftoverBalance.formattedDashAmountWithoutCurrencySymbol - ) - controller.actionButtonText = CrowdNodeModel.shared.buyDashButtonText - - let navigationController = BaseNavigationController(rootViewController: controller) - controller.mainAction = { [weak navigationController] in - Task { - if await CrowdNodeModel.shared.authenticate() { - let buySellController = BuySellPortalViewController.controller() - navigationController?.pushViewController(buySellController, animated: true) - } - } - } - - presenter.present(navigationController, animated: true) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/CrowdNode.storyboard b/DashWallet/Sources/UI/CrowdNode/CrowdNode.storyboard deleted file mode 100644 index 31b033360f..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/CrowdNode.storyboard +++ /dev/null @@ -1,2543 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DashWallet/Sources/UI/CrowdNode/CrowdNodeModel.swift b/DashWallet/Sources/UI/CrowdNode/CrowdNodeModel.swift deleted file mode 100644 index 01b209062f..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/CrowdNodeModel.swift +++ /dev/null @@ -1,519 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import SwiftDashSDK -import WebKit - -// MARK: - CrowdNodeModelObjcWrapper - -@objc -public class CrowdNodeModelObjcWrapper: NSObject { - @objc - public class func getRootVC() -> UIViewController { - CrowdNode.shared.restoreState() - let state = CrowdNode.shared.signUpState - - switch state { - case .finished, .linkedOnline: - return CrowdNodePortalController.controller() - - case .fundingWallet, .acceptingTerms, .signingUp: - return AccountCreatingController.controller() - - case .acceptTermsRequired: - return NewAccountViewController.controller(online: false) - - default: - if CrowdNodeDefaults.shared.infoShown { - return GettingStartedViewController.controller() - } - else { - return WelcomeToCrowdNodeViewController.controller() - } - } - } -} - -// MARK: - CrowdNodeModel - -@MainActor -final class CrowdNodeModel { - private var cancellableBag = Set() - private let crowdNode = CrowdNode.shared - private var signUpTaskId: UIBackgroundTaskIdentifier = .invalid - private(set) var emailForAccount = "" - private let prefs = CrowdNodeDefaults.shared - - public static let shared: CrowdNodeModel = .init() - - @Published private(set) var outputMessage = "" - @Published private(set) var accountAddress = "" - @Published private(set) var signUpEnabled = false - @Published private(set) var signUpState: CrowdNode.SignUpState - @Published private(set) var onlineAccountState: CrowdNode.OnlineAccountState - @Published private(set) var crowdNodeBalance: UInt64 = 0 - @Published private(set) var walletBalance: UInt64 = 0 - @Published private(set) var hasEnoughWalletBalance = false - @Published private(set) var animateBalanceLabel = false - @Published var error: Error? = nil - - var isInterrupted: Bool { - crowdNode.signUpState == .acceptTermsRequired - } - - var showNotificationOnResult: Bool { - get { crowdNode.showNotificationOnResult } - set(value) { crowdNode.showNotificationOnResult = value } - } - - var shouldShowWithdrawalLimitsDialog: Bool { - get { !prefs.withdrawalLimitsInfoShown } - set(value) { prefs.withdrawalLimitsInfoShown = !value } - } - - var shouldShowConfirmationDialog: Bool { - get { onlineAccountState == .confirming && !prefs.confirmationDialogShown } - set(value) { prefs.confirmationDialogShown = !value } - } - - var shouldShowOnlineInfo: Bool { - get { signUpState != .linkedOnline && !prefs.onlineInfoShown } - set(value) { prefs.onlineInfoShown = !value } - } - - var needsBackup: Bool { DWGlobalOptions.sharedInstance().walletNeedsBackup } - var canSignUp: Bool { !needsBackup && hasEnoughWalletBalance } - var shouldShowFirstDepositBanner: Bool { - return !crowdNode.hasAnyDeposits() && crowdNodeBalance < CrowdNode.minimumDeposit - } - - var canWithdraw: Bool { - let allAvailableFunds = SwiftDashSDKWalletState.shared.balance?.spendable ?? 0 - return allAvailableFunds >= CrowdNode.minimumLeftoverBalance - } - - var buyDashButtonText: String { - if WalletEnvironment.isMainnet { - return NSLocalizedString("Buy Dash", comment: "CrowdNode") - } else { - return "" - } - } - - var primaryAddress: String? { crowdNode.primaryAddress } - - var portalItems: [CrowdNodePortalItem] { - return CrowdNodePortalItem.allCases.filter { item in - switch item { - case .deposit, .onlineAccount: - return false - default: - return true - } - } - } - var withdrawalLimits: [Int] { [ - Int(prefs.crowdNodeWithdrawalLimitPerTx / kOneDash), - Int(prefs.crowdNodeWithdrawalLimitPerHour / kOneDash), - Int(prefs.crowdNodeWithdrawalLimitPerDay / kOneDash), - ] } - - init() { - signUpState = crowdNode.signUpState - onlineAccountState = crowdNode.onlineAccountState - observeState() - observeBalances() - - crowdNode.restoreState() - getAccountAddress() - } - - func getAccountAddress() { - if crowdNode.accountAddress.isEmpty { - accountAddress = SwiftDashSDKReceiveAddressReader.receiveAddress() ?? "" - } - else { - accountAddress = crowdNode.accountAddress - } - } - - func signUp() { - Task { - let promptMessage: String - - if isInterrupted { - promptMessage = NSLocalizedString("Accept Terms Of Use", comment: "CrowdNode") - } - else { - promptMessage = NSLocalizedString("Sign up to CrowdNode", comment: "CrowdNode") - } - - if !accountAddress.isEmpty { - if await authenticate(message: promptMessage) { - signUpEnabled = false - await persistentSignUp(accountAddress: accountAddress) - } - } - } - } - - func authenticate(message: String? = nil, allowBiometric: Bool = true) async -> Bool { - let biometricEnabled = DWGlobalOptions.sharedInstance().biometricAuthEnabled - let outcome = await AuthenticationService.shared.authenticate( - usingBiometrics: allowBiometric && biometricEnabled, spendAmount: nil) - if case .authenticated = outcome { return true } - return false - } - - func didShowInfoScreen() { - prefs.infoShown = true - } - - private func persistentSignUp(accountAddress: String) async { - signUpTaskId = UIApplication.shared.beginBackgroundTask(withName: "finish_signup") { - if self.signUpTaskId != UIBackgroundTaskIdentifier.invalid { - UIApplication.shared.endBackgroundTask(self.signUpTaskId) - self.signUpTaskId = UIBackgroundTaskIdentifier.invalid - } - } - - await crowdNode.signUp(accountAddress: accountAddress) - - if signUpTaskId != UIBackgroundTaskIdentifier.invalid { - UIApplication.shared.endBackgroundTask(signUpTaskId) - signUpTaskId = UIBackgroundTaskIdentifier.invalid - } - } - - func clearError() { - crowdNode.apiError = nil - } - - private func observeState() { - crowdNode.$signUpState - .sink { [weak self] state in - guard let wSelf = self else { return } - var signUpEnabled = false - var outputMessage = "" - - switch state { - case .notInitiated, .notStarted: - signUpEnabled = true - WKWebView.cleanCrowdNodeCache() - wSelf.emailForAccount = "" - wSelf.getAccountAddress() - - case .acceptTermsRequired, .error: - signUpEnabled = true - - case .fundingWallet, .signingUp: - outputMessage = NSLocalizedString("Your CrowdNode account is creating…", comment: "CrowdNode") - - case .acceptingTerms: - outputMessage = NSLocalizedString("Accepting terms of use…", comment: "CrowdNode") - - case .linkedOnline: - wSelf.accountAddress = wSelf.crowdNode.accountAddress - - default: - break - } - - wSelf.signUpState = state - wSelf.signUpEnabled = signUpEnabled - wSelf.outputMessage = outputMessage - } - .store(in: &cancellableBag) - - crowdNode.$apiError - .sink { [weak self] error in self?.error = error } - .store(in: &cancellableBag) - - crowdNode.$onlineAccountState - .sink { [weak self] state in self?.onlineAccountState = state } - .store(in: &cancellableBag) - } -} - -extension CrowdNodeModel { - func refreshBalance() { - crowdNode.refreshBalance(retries: 1) - } - - private func observeBalances() { - checkBalance() - SwiftDashSDKWalletState.shared.$balance - .receive(on: RunLoop.main) - .sink { [weak self] _ in self?.checkBalance() } - .store(in: &cancellableBag) - - crowdNode.$balance - .assign(to: \.crowdNodeBalance, on: self) - .store(in: &cancellableBag) - - crowdNode.$isBalanceLoading - .assign(to: \.animateBalanceLabel, on: self) - .store(in: &cancellableBag) - } - - private func checkBalance() { - walletBalance = SwiftDashSDKWalletState.shared.balance?.total ?? 0 - hasEnoughWalletBalance = walletBalance >= CrowdNode.minimumRequiredDash - } -} - -// MARK: deposit / withdraw - -extension CrowdNodeModel { - func deposit(amount: UInt64) async throws -> Bool { - guard amount > 0 else { return false } - - let usingBiometric = AuthenticationService.shared.canUseBiometricAuthentication(forAmount: amount) - if await authenticate(allowBiometric: usingBiometric) { - try await crowdNode.deposit(amount: amount) - return true - } - - return false - } - - func withdraw(amount: UInt64) async throws -> Bool { - guard amount > 0 && walletBalance >= CrowdNode.minimumLeftoverBalance else { return false } - - guard await AuthenticationGate.authenticate( - biometric: DWGlobalOptions.sharedInstance().biometricAuthEnabled) == .ok else { return false } - - // Signed message == the exact string requestWithdrawal sends as the - // `amount` API parameter (its `.value` — `String(describing:)`). - guard let signature = CrowdNodeMessageSigner.sign( - message: String(amount), forAddress: crowdNode.accountAddress) else { return false } - - try await crowdNode.withdraw(amount: amount, signature: signature.base64EncodedString()) - return true - } - - /// Fee for an average-size tx at the app's 1 duff/byte rate — the same - /// figure DashSync's `feeForTxSize:` produced (`size × TX_FEE_PER_B`, the - /// FEE_PER_KB_URL branch is compiled out) and the rate - /// `SwiftDashSDKTransactionSender` builds with (1000 sat/kB). - private static func estimatedFee(forTxSize size: UInt64) -> UInt64 { - size - } - - func adjustedWithdrawalAmount(requestedAmount: UInt64) -> UInt64 { - let requestPermil = crowdNode.calculateWithdrawalPermil(forAmount: requestedAmount) - let requestValue = CrowdNode.apiOffset + UInt64(requestPermil) - - let inQueueResponse = CrowdNode.apiOffset + ApiCode.withdrawalQueue.rawValue - let inQueueResponseFee = Self.estimatedFee(forTxSize: 372) // Average size of the response tx. - let withdrawalTxFee = Self.estimatedFee(forTxSize: 225) // Average size of the withdrawal tx. - - // CrowdNode gets the withdrawal request, adds it to the balance, - // sends the InQueue response and then calculates withdrawal amount from what's left. - let adjustedResult = (crowdNodeBalance + requestValue - inQueueResponse - inQueueResponseFee) * requestPermil / ApiCode.withdrawAll.rawValue - withdrawalTxFee - - return min(crowdNodeBalance, adjustedResult) - } -} - -// MARK: online account -extension CrowdNodeModel { - func linkOnlineAccount() -> URL { - precondition(!accountAddress.isEmpty) - crowdNode.trackLinkingAccount(address: accountAddress) - - return URL(string: CrowdNode.apiLinkUrl + accountAddress)! - } - - func cancelLinkingOnlineAccount() { - crowdNode.stopTrackingLinked() - WKWebView.cleanCrowdNodeCache() - } - - func signAndSendEmail(email: String) async throws -> Bool { - guard !crowdNode.accountAddress.isEmpty else { return false } - emailForAccount = email - - guard await AuthenticationGate.authenticate( - biometric: DWGlobalOptions.sharedInstance().biometricAuthEnabled) == .ok else { return false } - - guard let signature = CrowdNodeMessageSigner.sign( - message: email, forAddress: crowdNode.accountAddress) else { return false } - - try await crowdNode.registerEmailForAccount(email: email, signature: signature.base64EncodedString()) - return true - } - - func finishSignUpToOnlineAccount() { - crowdNode.setOnlineAccountCreated() - } -} - -// MARK: - CrowdNodeMessageSigner - -/// Dash "signed message" production for the CrowdNode API -/// (withdrawal / email registration), SwiftDashSDK-native — replaces the -/// frozen DashSync path (`wallet.privateKey(forAddress:fromSeed:)` + -/// `DSKeyManager.signMesasageDigest` + `magicDigest`), which reads a -/// wallet that has no keys for SDK-created wallets. -/// -/// The CrowdNode account address is a BIP44 receive address of account 0; -/// the SDK exposes no address→derivation-index lookup, so the signer -/// re-derives public keys along `m/44'/'/0'//` and -/// matches the address's hash160. The scan is bounded, and the two callers -/// treat exhaustion differently: `sign` fails closed with nil (never a -/// wrong-key signature), while the ownership check answers "not found within -/// the bound" — the scan can miss an address the wallet owns (ticket 32026; -/// whether through the index bound or the set of derivation paths it walks is -/// not established), so exhaustion is not evidence the address is foreign. -@MainActor -enum CrowdNodeMessageSigner { - private static let scanLimit: UInt32 = 300 - - /// 65-byte compact recoverable signature over the DarkCoin-framed - /// message (`DarkCoinMessage.framed`; the signer FFI SHA256d-hashes - /// internally), or nil when the wallet/keys can't be resolved. - static func sign(message: String, forAddress address: String) -> Data? { - guard let network = SwiftDashSDKHost.shared.runningNetwork, - let targetHash160 = hash160(ofAddress: address, network: network), - let (_, wallet, _) = SwiftDashSDKHost.shared.derivationWallet(), - let path = derivationPath(ofHash160: targetHash160, wallet: wallet, network: network), - let wif = try? wallet.derivePrivateKey(path: path), - let privateKey = WIFParser.parseWIF(wif) else { - DWLogger.log("CrowdNode: message signing failed — no key resolved for account address") - return nil - } - return try? RawKeySigner.sign( - data: DarkCoinMessage.framed(message), privateKey: privateKey, network: network) - } - - /// What the ownership check needs from the running wallet: an - /// address → hash160 decode for the running network, and the bounded - /// BIP44 scan over that wallet's keys. `liveOwnership()` returns nil - /// when the SDK wallet or the network isn't up yet. - struct OwnershipLookup { - let hash160OfAddress: (String) -> String? - let derivationPath: (String) -> String? - } - - /// Why the ownership check answered what it did. - /// - /// `ownsAddress`'s `Bool?` collapsed two very different unknowns into - /// `nil`: the wallet not being up yet, and the bounded scan running out. - /// They deserve different handling — a scan that ran out is a durable - /// verdict for this wallet, while a wallet that is not up means the check - /// never ran, and a restore must not memoize a pass built on it as - /// fruitless. - enum Ownership: Equatable { - /// The scan found the key: this address is the active wallet's. - case owned - /// The address cannot be this wallet's — not a P2PKH address of the - /// running network. The only answer that justifies destroying prefs. - case foreign - /// The SDK wallet or the network is not up, so nothing was checked. - case walletUnavailable - /// The scan ran to its bound without finding the address. Not evidence - /// the address is foreign (ticket 32026) — the bound exists for cost. - case notFoundWithinBound - - /// Whether this verdict came from a check that actually ran. - var wasChecked: Bool { self != .walletUnavailable } - } - - /// Four-case ownership check. Prefer this over `ownsAddress`, which - /// flattens `walletUnavailable` and `notFoundWithinBound` into `nil`. - static func ownership(of address: String) -> Ownership { - ownership(of: address, using: liveOwnership()) - } - - /// The verdict rule on its own, with the wallet reduced to two closures so - /// it can be pinned without an SDK host: a nil `lookup` is "the wallet - /// isn't up". - static func ownership(of address: String, using lookup: OwnershipLookup?) -> Ownership { - guard let lookup else { return .walletUnavailable } - guard let targetHash160 = lookup.hash160OfAddress(address) else { - return .foreign // not a P2PKH address of this network ⇒ not ours - } - return lookup.derivationPath(targetHash160) != nil ? .owned : .notFoundWithinBound - } - - /// Tri-state wallet-ownership check for a persisted CrowdNode account - /// address (a BIP44 acct-0 receive address, so the same bounded scan the - /// signer uses can find it): `true` when the scan finds the key; `false` - /// only when the address cannot be this wallet's (not a P2PKH address of - /// the running network); `nil` when ownership is unknown — the - /// wallet/network isn't up yet (a relaunch validates prefs before the SDK - /// starts), or the scan ran out before reaching the address's index - /// (ticket 32026). The caller must NOT treat `nil` as "alien address" — - /// unlike signing, where exhaustion safely fails closed, answering - /// `false` here triggers a destructive reset of the CrowdNode link. - static func ownsAddress(_ address: String) -> Bool? { - ownsAddress(address, using: liveOwnership()) - } - - /// Lossy bridge over `ownership(of:using:)` for callers that only need the - /// trust decision. Both unknowns become `nil`; anything that must tell them - /// apart calls `ownership` directly. - static func ownsAddress(_ address: String, using lookup: OwnershipLookup?) -> Bool? { - switch ownership(of: address, using: lookup) { - case .owned: return true - case .foreign: return false - case .walletUnavailable, .notFoundWithinBound: return nil - } - } - - private static func liveOwnership() -> OwnershipLookup? { - guard let network = SwiftDashSDKHost.shared.runningNetwork, - let (_, wallet, _) = SwiftDashSDKHost.shared.derivationWallet() else { - return nil - } - return OwnershipLookup( - hash160OfAddress: { hash160(ofAddress: $0, network: network) }, - derivationPath: { derivationPath(ofHash160: $0, wallet: wallet, network: network) }) - } - - /// Base58Check-decoded P2PKH hash160 of `address` as lowercase hex - /// (the format `computePublicKeyHashHex` emits). Nil for anything that is - /// not a P2PKH address of `network` — the one input that lets `ownsAddress` - /// answer `false`, so it is exercised directly by the tests. - static func hash160(ofAddress address: String, network: Network) -> String? { - let paymentNetwork: PaymentNetwork = network == .mainnet ? .mainnet : .testnet - guard let script = ScriptAddressCodec.scriptPubKey(forAddress: address, network: paymentNetwork), - script.count == 25 else { return nil } // P2PKH only; P2SH can't be message-signed - return script.subdata(in: 3 ..< 23).hexEncodedString() - } - - /// Scan the BIP44 external chain (then internal, defensively) for the - /// key whose hash160 matches. ~50 µs per derive; worst case ≈ 600 - /// derives per withdraw/email action or startup prefs validation. Nil - /// means "not found within the bound", not "absent from the wallet". - private static func derivationPath(ofHash160 target: String, wallet: Wallet, network: Network) -> String? { - let coin = network == .mainnet ? "5'" : "1'" - for chain in [0, 1] { - for index in 0 ..< scanLimit { - let path = "m/44'/\(coin)/0'/\(chain)/\(index)" - guard let pubHex = try? wallet.derivePublicKey(path: path), - let pubKey = Data(hex: pubHex) else { continue } - if KeychainManager.computePublicKeyHashHex(pubKey) == target { - return path - } - } - } - return nil - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Extensions/UINavigationController+CrowdNode.swift b/DashWallet/Sources/UI/CrowdNode/Extensions/UINavigationController+CrowdNode.swift deleted file mode 100644 index 2d23f7d87f..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Extensions/UINavigationController+CrowdNode.swift +++ /dev/null @@ -1,49 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -extension UINavigationController { - func toErrorScreen(error: CrowdNode.Error) { - var headerText = "" - - switch error { - case .deposit, .withdraw: - headerText = NSLocalizedString("Transfer Error", comment: "CrowdNode") - case .signUp, .messageStatus: - headerText = NSLocalizedString("Sign up error", comment: "CrowdNode") - default: - headerText = NSLocalizedString("Error", comment: "") - } - - let vc = FailedOperationStatusViewController.initiate(from: sb("OperationStatus")) - vc.headerText = headerText - let errorDescription = error.errorDescription - vc.descriptionText = errorDescription - vc.supportButtonText = NSLocalizedString("Send Report", comment: "Coinbase") - let backHandler: (() -> ()) = { [weak self] in - self?.popViewController(animated: true) - } - vc.retryHandler = backHandler - vc.cancelHandler = backHandler - vc.supportHandler = { - let url = DWAboutModel.supportURL() - let safariViewController = SFSafariViewController.dw_controller(with: url) - self.present(safariViewController, animated: true) - } - vc.hidesBottomBarWhenPushed = true - pushViewController(vc, animated: true) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Extensions/WKWebView+CrowdNode.swift b/DashWallet/Sources/UI/CrowdNode/Extensions/WKWebView+CrowdNode.swift deleted file mode 100644 index eb8c888705..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Extensions/WKWebView+CrowdNode.swift +++ /dev/null @@ -1,35 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import WebKit - -extension WKWebView { - class func cleanCrowdNodeCache() { - let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: CrowdNode.baseUrl)!) - cookies?.forEach { cookie in - HTTPCookieStorage.shared.deleteCookie(cookie) - } - - WKWebsiteDataStore.default().fetchDataRecords(ofTypes: WKWebsiteDataStore.allWebsiteDataTypes()) { records in - records.forEach { record in - if record.displayName == "crowdnode.io" { - WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: { }) - } - } - } - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Getting Started/GettingStartedViewController.swift b/DashWallet/Sources/UI/CrowdNode/Getting Started/GettingStartedViewController.swift deleted file mode 100644 index 23a3596e46..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Getting Started/GettingStartedViewController.swift +++ /dev/null @@ -1,209 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -// MARK: - GettingStartedViewController - -final class GettingStartedViewController: BaseViewController { - private let viewModel = CrowdNodeModel.shared - private var cancellableBag = Set() - - @IBOutlet var titleLabel: UILabel! - @IBOutlet var subtitleLabel: UILabel! - @IBOutlet var logoWrapper: UIView! - @IBOutlet var newAccountButton: UIControl! - @IBOutlet var newAccountTitle: UILabel! - @IBOutlet var newAccountIcon: UIImageView! - @IBOutlet var balanceHint: UIView! - @IBOutlet var passphraseLabel: UILabel! - @IBOutlet var passphraseHint: UIView! - @IBOutlet var linkAccountButton: UIControl! - @IBOutlet var minimumBalanceLabel: UILabel! - @IBOutlet var linkAccountLabel: UILabel! - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - configureObservers() - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - cancellableBag.removeAll() - } - - @IBAction - func newAccountAction() { - if viewModel.canSignUp { - navigationController?.pushViewController(NewAccountViewController.controller(online: false), animated: true) - } - } - - @IBAction - func linkAccountAction() { - navigationController?.pushViewController(NewAccountViewController.controller(online: true), animated: true) - } - - @IBAction - func backupPassphraseAction() { - let alert = - UIAlertController(title: NSLocalizedString("Backup your passphrase to create a CrowdNode account", comment: ""), - message: NSLocalizedString("If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet.", - comment: ""), - preferredStyle: UIAlertController.Style.alert) - alert.addAction(UIAlertAction(title: NSLocalizedString("Backup Passphrase", comment: ""), - style: UIAlertAction.Style.default, handler: { [weak self] _ in - self?.backupPassphrase() - })) - alert - .addAction(UIAlertAction(title: NSLocalizedString("Close", comment: ""), style: UIAlertAction.Style.cancel, - handler: nil)) - navigationController?.present(alert, animated: true, completion: nil) - } - - @IBAction - func buyDashAction() { - let minimumDash = CrowdNode.minimumRequiredDash.formattedDashAmount - let alert = UIAlertController(title: NSLocalizedString("You have insufficient funds to proceed", comment: ""), - message: String.localizedStringWithFormat(NSLocalizedString("You should have at least %@ to proceed with the CrowdNode verification.", - comment: ""), minimumDash), - preferredStyle: UIAlertController.Style.alert) - - - if WalletEnvironment.isMainnet { - alert - .addAction(UIAlertAction(title: NSLocalizedString("Buy Dash", comment: ""), style: UIAlertAction.Style.default, - handler: { [weak self] _ in - self?.buyDash() - })) - } - - alert - .addAction(UIAlertAction(title: NSLocalizedString("Close", comment: ""), style: UIAlertAction.Style.cancel, - handler: nil)) - navigationController?.present(alert, animated: true, completion: nil) - } - - @objc - static func controller() -> GettingStartedViewController { - vc(GettingStartedViewController.self, from: sb("CrowdNode")) - } -} - -extension GettingStartedViewController { - private func configureHierarchy() { - view.backgroundColor = UIColor.dw_secondaryBackground() - - logoWrapper.layer.dw_applyShadow(with: .dw_shadow(), alpha: 0.05, x: 0, y: 0, blur: 10) - newAccountButton.layer.dw_applyShadow(with: .dw_shadow(), alpha: 0.1, x: 0, y: 0, blur: 10) - linkAccountButton.layer.dw_applyShadow(with: .dw_shadow(), alpha: 0.1, x: 0, y: 0, blur: 10) - - let minimumDash = CrowdNode.minimumRequiredDash.formattedDashAmount - minimumBalanceLabel.text = String.localizedStringWithFormat(NSLocalizedString("You need at least %@ on your Dash Wallet", comment: "CrowdNode"), minimumDash) - titleLabel.text = NSLocalizedString("Getting started with CrowdNode", comment: "CrowdNode") - subtitleLabel.text = NSLocalizedString("To start staking, create an account on CrowdNode or connect to an existing one.", comment: "CrowdNode") - newAccountTitle.text = NSLocalizedString("New CrowdNode Account", comment: "CrowdNode") - passphraseLabel.text = NSLocalizedString("You have to backup your passphrase in Dash Wallet", comment: "CrowdNode") - linkAccountLabel.text = NSLocalizedString("Link Existing Account", comment: "CrowdNode") - - refreshCreateAccountButton() - - newAccountButton.isHidden = true - linkAccountButton.isHidden = true - subtitleLabel.text = NSLocalizedString( - "CrowdNode sign-up and deposits are temporarily unavailable.", - comment: "CrowdNode" - ) - } - - private func configureObservers() { - viewModel.$hasEnoughWalletBalance - .receive(on: DispatchQueue.main) - .sink(receiveValue: { [weak self] _ in - guard let wSelf = self else { return } - wSelf.refreshCreateAccountButton() - }) - .store(in: &cancellableBag) - } - - private func refreshCreateAccountButton() { - newAccountTitle.alpha = viewModel.canSignUp ? 1.0 : 0.2 - newAccountIcon.alpha = viewModel.canSignUp ? 1.0 : 0.2 - - passphraseHint.isHidden = !viewModel.needsBackup - let passhraseHintHeight = CGFloat(viewModel.needsBackup ? 45 : 0) - passphraseHint.heightAnchor.constraint(equalToConstant: passhraseHintHeight).isActive = true - - balanceHint.isHidden = viewModel.hasEnoughWalletBalance - let balanceHintHeight = CGFloat(viewModel.hasEnoughWalletBalance ? 0 : 45) - balanceHint.heightAnchor.constraint(equalToConstant: balanceHintHeight).isActive = true - } -} - -// MARK: BackupInfoViewControllerDelegate - -extension GettingStartedViewController: BackupInfoViewControllerDelegate { - private func backupPassphrase() { - Task { - if await viewModel.authenticate(allowBiometric: false) { - backupPassphraseAuthenticated() - } - } - } - - private func backupPassphraseAuthenticated() { - let controller = BackupInfoViewController.controller(with: .setup) - controller.delegate = self - let navigationController = BaseNavigationController(rootViewController: controller) - let cancelButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.cancel, target: self, - action: #selector(dismissModalControllerBarButtonAction)) - controller.navigationItem.leftBarButtonItem = cancelButton - self.navigationController?.present(navigationController, animated: true) - } - - @objc - private func dismissModalControllerBarButtonAction() { - dismiss(animated: true) - } - - internal func secureWalletRoutineDidCancel(_ controller: UIViewController) { } - - internal func secureWalletRoutineDidVerify(_ controller: UIViewController) { - refreshCreateAccountButton() - } - - internal func secureWalletRoutineDidFinish(_ controller: VerifiedSuccessfullyViewController) { - dismissModalControllerBarButtonAction() - } -} - -extension GettingStartedViewController { - private func buyDash() { - Task { - if await viewModel.authenticate() { - buyDashAuthenticated() - } - } - } - - private func buyDashAuthenticated() { - let controller = BuySellPortalViewController.controller() - let navigationController = BaseNavigationController(rootViewController: controller) - self.navigationController?.present(navigationController, animated: true) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Getting Started/WelcomeToCrowdNodeViewController.swift b/DashWallet/Sources/UI/CrowdNode/Getting Started/WelcomeToCrowdNodeViewController.swift deleted file mode 100644 index 592e154929..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Getting Started/WelcomeToCrowdNodeViewController.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -final class WelcomeToCrowdNodeViewController: BaseViewController { - private let viewModel = CrowdNodeModel.shared - private var cancellableBag = Set() - - @IBOutlet var titleLabel: UILabel! - @IBOutlet var stakingLabel: UILabel! - @IBOutlet var stakingSubtitleLabel: UILabel! - @IBOutlet var rewardsLabel: UILabel! - @IBOutlet var rewardsSubtitleLabel: UILabel! - @IBOutlet var logoWrapper: UIView! - @IBOutlet var continueButton: UIButton! - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - viewModel.didShowInfoScreen() - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - cancellableBag.removeAll() - } - - @IBAction - func continueAction() { - navigationController?.replaceLast(with: GettingStartedViewController.controller()) - } - - @objc - static func controller() -> WelcomeToCrowdNodeViewController { - vc(WelcomeToCrowdNodeViewController.self, from: sb("CrowdNode")) - } - - private func configureHierarchy() { - logoWrapper.layer.dw_applyShadow(with: .dw_shadow(), alpha: 0.05, x: 0, y: 0, blur: 10) - view.backgroundColor = .dw_secondaryBackground() - - titleLabel.text = NSLocalizedString("Become part of a Dash Masternode with CrowdNode", comment: "CrowdNode") - stakingLabel.text = NSLocalizedString("Introducing Staking", comment: "CrowdNode") - stakingSubtitleLabel.text = NSLocalizedString("Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash.", comment: "CrowdNode") - rewardsLabel.text = NSLocalizedString("Get Rewards Instantly", comment: "CrowdNode") - rewardsSubtitleLabel.text = NSLocalizedString("Receive your share of rewards daily.", comment: "CrowdNode") - continueButton.setTitle(NSLocalizedString("Continue", comment: ""), for: .normal) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/New Account/AccountCreatingController.swift b/DashWallet/Sources/UI/CrowdNode/New Account/AccountCreatingController.swift deleted file mode 100644 index 3a75c96421..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/New Account/AccountCreatingController.swift +++ /dev/null @@ -1,77 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -// MARK: - AccountCreatingController - -final class AccountCreatingController: UIViewController { - private let viewModel = CrowdNodeModel.shared - private var cancellableBag = Set() - - @IBOutlet var actionButton: UIButton! - @IBOutlet var titleLabel: UILabel! - @IBOutlet var statusLabel: UILabel! - - override func viewDidLoad() { - super.viewDidLoad() - - viewModel.showNotificationOnResult = false - configureHierarchy() - configureObservers() - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - viewModel.showNotificationOnResult = true - cancellableBag.removeAll() - } - - @objc - static func controller() -> AccountCreatingController { - vc(AccountCreatingController.self, from: sb("CrowdNode")) - } - - @IBAction - func closeAndNotify() { - dismiss(animated: true, completion: nil) - } -} - -extension AccountCreatingController { - private func configureHierarchy() { - view.backgroundColor = .dw_secondaryBackground() - titleLabel.text = NSLocalizedString("Please wait", comment: "") - actionButton.setTitle(NSLocalizedString("Close and notify when it’s done", comment: "CrowdNode"), for: .normal) - } - - private func configureObservers() { - viewModel.$signUpState - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - if state == .finished { - self?.navigationController?.replaceLast(with: CrowdNodePortalController.controller()) - } - } - .store(in: &cancellableBag) - - viewModel.$outputMessage - .receive(on: DispatchQueue.main) - .assign(to: \.text!, on: statusLabel) - .store(in: &cancellableBag) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/New Account/NewAccountViewController.swift b/DashWallet/Sources/UI/CrowdNode/New Account/NewAccountViewController.swift deleted file mode 100644 index 0b9a283cc5..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/New Account/NewAccountViewController.swift +++ /dev/null @@ -1,176 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import UIKit - -// MARK: - NewAccountViewController - -final class NewAccountViewController: UIViewController, UITextViewDelegate { - private let viewModel = CrowdNodeModel.shared - private var cancellableBag = Set() - - @IBOutlet var titleLabel: UILabel! - @IBOutlet var explainerLabel1: UILabel! - @IBOutlet var explainerLabel2: UILabel! - @IBOutlet var actionButton: ActionButton! - @IBOutlet var addressTitleLabel: UILabel! - @IBOutlet var addressLabel: UILabel! - @IBOutlet var acceptTermsCheckBox: DWCheckbox! - @IBOutlet var acceptTermsText: UITextView! - - var isLinkingOnlineAccount = false - - override func viewDidLoad() { - super.viewDidLoad() - - configureHierarchy() - configureObservers() - } - - @objc - static func controller(online: Bool) -> NewAccountViewController { - let vc = vc(NewAccountViewController.self, from: sb("CrowdNode")) - vc.isLinkingOnlineAccount = online - - return vc - } - - @IBAction - func continueAction() { - if isLinkingOnlineAccount { - let linkingUrl = viewModel.linkOnlineAccount() - navigationController?.pushViewController(CrowdNodeWebViewController.controller(url: linkingUrl), animated: true) - } - else { - viewModel.signUp() - } - } - - @IBAction - func copyAddress() { - UIPasteboard.general.string = addressLabel.text - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } - - @IBAction - func onTermsChecked() { - actionButton.isEnabled = acceptTermsCheckBox.isOn && viewModel.signUpEnabled - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - cancellableBag.removeAll() - } -} - -extension NewAccountViewController { - private func configureHierarchy() { - definesPresentationContext = true - view.backgroundColor = .dw_secondaryBackground() - addressTitleLabel.text = NSLocalizedString("Dash address", comment: "") - - configureTermsCheckBox() - - if isLinkingOnlineAccount { - configureForLinkingOnlineAccount() - } else { - configureForNewAccount() - configureActionButton() - } - } - - private func configureActionButton() { - if viewModel.isInterrupted { - actionButton.setTitle(NSLocalizedString("Accept Terms Of Use", comment: "CrowdNode"), for: .normal) - } - else { - actionButton.setTitle(NSLocalizedString("Create Account", comment: "CrowdNode"), for: .normal) - } - } - - private func configureTermsCheckBox() { - let baseString = NSMutableAttributedString(string: NSLocalizedString("I agree to CrowdNode", comment: "CrowdNode").description) - let termsOfUseString = NSMutableAttributedString(string: NSLocalizedString(" Terms of Use ", comment: "CrowdNode").description) - let andString = NSMutableAttributedString(string: NSLocalizedString("and", comment: "CrowdNode").description) - let privacyPolicyString = NSMutableAttributedString(string: NSLocalizedString(" Privacy Policy ", comment: "CrowdNode") - .description) - - termsOfUseString.addAttribute(.link, value: CrowdNode.termsOfUseUrl, - range: NSRange(location: 0, length: termsOfUseString.length)) - privacyPolicyString.addAttribute(.link, value: CrowdNode.privacyPolicyUrl, - range: NSRange(location: 0, length: privacyPolicyString.length)) - - baseString.append(termsOfUseString) - baseString.append(andString) - baseString.append(privacyPolicyString) - - acceptTermsText.attributedText = baseString - acceptTermsText.textColor = .label - acceptTermsText.font = UIFont.dw_regularFont(ofSize: 14) - acceptTermsCheckBox.style = .square - acceptTermsCheckBox.isOn = false - } - - func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, - interaction: UITextItemInteraction) - -> Bool { - UIApplication.shared.open(URL) - return false - } - - private func configureForNewAccount() { - titleLabel.text = NSLocalizedString("New CrowdNode Account", comment: "CrowdNode") - actionButton.setTitle("Create Account", for: .normal) - explainerLabel1.text = NSLocalizedString("CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address.", comment: "CrowdNode") - explainerLabel2.text = NSLocalizedString("Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address.", comment: "CrowdNode") - } - - private func configureForLinkingOnlineAccount() { - titleLabel.text = NSLocalizedString("Link Existing CrowdNode Account", comment: "CrowdNode") - actionButton.setTitle(NSLocalizedString("Log in to CrowdNode", comment: "CrowdNode"), for: .normal) - explainerLabel1.text = NSLocalizedString("All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device.", comment: "CrowdNode") - explainerLabel2.isHidden = true - explainerLabel2.heightAnchor.constraint(equalToConstant: 0).isActive = true - } - - private func configureObservers() { - viewModel.$signUpEnabled - .receive(on: DispatchQueue.main) - .sink { [weak self] isEnabled in - guard let wSelf = self else { return } - wSelf.actionButton.isEnabled = wSelf.acceptTermsCheckBox.isOn && isEnabled - } - .store(in: &cancellableBag) - - viewModel.$accountAddress - .receive(on: DispatchQueue.main) - .assign(to: \.text!, on: addressLabel) - .store(in: &cancellableBag) - - viewModel.$signUpState - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - let isCreating = state == .fundingWallet || state == .acceptingTerms || state == .signingUp - - if isCreating { - self?.navigationController?.replaceLast(2, with: AccountCreatingController.controller()) - } - } - .store(in: &cancellableBag) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Online/ConfirmationTransactionQRController.swift b/DashWallet/Sources/UI/CrowdNode/Online/ConfirmationTransactionQRController.swift deleted file mode 100644 index 7f81aa53e0..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Online/ConfirmationTransactionQRController.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -// MARK: - ConfirmationTransactionQRController - -final class ConfirmationTransactionQRController: UIViewController { - private var cancellableBag = Set() - - @IBOutlet var qrImage: UIImageView! - @IBOutlet var titleLabel: UILabel! - @IBOutlet var messageLabel: UILabel! - private var paymentRequest: PaymentURIBuilder! - - static func controller(_ paymentRequest: PaymentURIBuilder) -> ConfirmationTransactionQRController { - let vc = vc(ConfirmationTransactionQRController.self, from: sb("CrowdNode")) - vc.modalPresentationStyle = .pageSheet - vc.paymentRequest = paymentRequest - - if #available(iOS 16.0, *) { - if let sheet = vc.sheetPresentationController { - let fitId = UISheetPresentationController.Detent.Identifier("fit") - let fitDetent = UISheetPresentationController.Detent.custom(identifier: fitId) { _ in - 420 - } - sheet.detents = [fitDetent] - } - } - - return vc - } - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - } -} - -extension ConfirmationTransactionQRController { - private func configureHierarchy() { - view.backgroundColor = .dw_secondaryBackground() - - titleLabel.text = NSLocalizedString("Scan QR", comment: "") - let confirmationAmount = CrowdNode.apiConfirmationDashAmount.formattedDashAmount - messageLabel.text = String.localizedStringWithFormat(NSLocalizedString("This QR already contains the payment request for %@", comment: "CrowdNode Confirm"), - confirmationAmount) - configureQrImage() - } - - private func configureQrImage() { - let rawQRImage = UIImage.dw_image(withQRCodeData: paymentRequest.data, color: CIColor(color: UIColor.label)) - - let overlayImage = UIImage(named: "dash_logo_qr")!.withTintColor(.label) - let screenWidth = CGRectGetWidth(UIScreen.main.bounds) - let padding = 38.0 - let side = screenWidth - padding * 2; - - var resizedImage = rawQRImage.dw_resize(CGSizeMake(side, side), with: .none) - resizedImage = resizedImage.dw_imageByCuttingHoleInCenter(with: CGSizeMake(84.0, 84.0)) - let image = resizedImage.dw_imageByMerging(with: overlayImage) - - qrImage.image = image - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Online/CrowdNodeWebViewController.swift b/DashWallet/Sources/UI/CrowdNode/Online/CrowdNodeWebViewController.swift deleted file mode 100644 index 7f01718483..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Online/CrowdNodeWebViewController.swift +++ /dev/null @@ -1,135 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import UIKit -import WebKit - -private let kSignupSuffix = "&view=signup-only" -private let kCallbackSuffix = "callback" - -// MARK: - CrowdNodeWebViewController - -class CrowdNodeWebViewController: BaseViewController { - private var cancellableBag = Set() - private let viewModel = CrowdNodeModel.shared - private var webView: WKWebView! - private var url: URL! - - // MARK: New Online Account - private var email: String? = nil - private let loginPrefix = CrowdNode.loginUrl - private let accountPrefix = CrowdNode.baseUrl - private var previousUrl = "" - - @objc - static func controller(url: URL, email: String? = nil) -> CrowdNodeWebViewController { - let vc = CrowdNodeWebViewController() - vc.url = url - vc.email = email - return vc - } - - override func viewDidDisappear(_ animated: Bool) { - viewModel.cancelLinkingOnlineAccount() - } - - override func loadView() { - super.loadView() - webView = WKWebView(frame: .zero) - webView.navigationDelegate = self - view = webView - } - - override func viewDidLoad() { - super.viewDidLoad() - - view.backgroundColor = .dw_secondaryBackground() - - navigationItem.title = NSLocalizedString("Log in to CrowdNode", comment: "CrowdNode WebView") - let urlRequest = URLRequest(url: url) - webView.load(urlRequest) - configureObservers() - } - - override func viewWillDisappear(_ animated: Bool) { - WKWebView.cleanCrowdNodeCache() - } - - private func configureObservers() { - viewModel.$signUpState - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - if state == .linkedOnline { - // Both routes here end at the portal with nothing behind - // it: entry from the shortcut starts on the portal itself - // (two screens deep by now), entry from Getting Started is - // three. Set the stack instead of counting screens off it. - self?.navigationController? - .setViewControllers([CrowdNodePortalController.controller()], animated: true) - } - } - .store(in: &cancellableBag) - - viewModel.$onlineAccountState - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - if state == .done { - self?.navigationController?.popViewController(animated: true) - } - } - .store(in: &cancellableBag) - - viewModel.$error - .receive(on: DispatchQueue.main) - .sink { [weak self] error in - if error != nil { - self?.navigationController?.popViewController(animated: true) - } - } - .store(in: &cancellableBag) - } -} - -// MARK: WKNavigationDelegate - -extension CrowdNodeWebViewController: WKNavigationDelegate { - func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, - preferences: WKWebpagePreferences) async -> (WKNavigationActionPolicy, WKWebpagePreferences) { - if let email, let url = navigationAction.request.url?.absoluteString { - let fullSuffix = "\(kSignupSuffix)&loginHint=\(email)" - - if url.hasPrefix(loginPrefix + "/login") && !url.hasSuffix(fullSuffix) && !url.hasSuffix(kCallbackSuffix) { - let redirectUrl = "\(url)\(fullSuffix)" - let urlRequest = URLRequest(url: URL(string: redirectUrl)!) - webView.load(urlRequest) - previousUrl = url - - return (WKNavigationActionPolicy.cancel, preferences) - } else if previousUrl.hasPrefix(loginPrefix) && url.hasPrefix(accountPrefix) { - // Successful signup - viewModel.finishSignUpToOnlineAccount() - } - - previousUrl = url - } - - return (WKNavigationActionPolicy.allow, preferences) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountConfirmationController.swift b/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountConfirmationController.swift deleted file mode 100644 index 07cc8d2674..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountConfirmationController.swift +++ /dev/null @@ -1,136 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -// MARK: - OnlineAccountConfirmationController - -final class OnlineAccountConfirmationController: BaseViewController { - private var cancellableBag = Set() - private let viewModel = CrowdNode.shared - private var paymentRequest: PaymentURIBuilder { - PaymentURIBuilder(address: viewModel.accountAddress, amount: CrowdNode.apiConfirmationDashAmount) - } - - @IBOutlet var titleLabel: UILabel! - @IBOutlet var howToConfirmLabel: UILabel! - @IBOutlet var primaryAddressTitle: UILabel! - @IBOutlet var primaryAddressLabel: UILabel! - @IBOutlet var addressTitle: UILabel! - @IBOutlet var addressLabel: UILabel! - @IBOutlet var infoLabel: UILabel! - @IBOutlet var info2Label: UILabel! - @IBOutlet var documentationLinkButton: UIStackView! - @IBOutlet var qrButton: UIButton! - @IBOutlet var shareButton: UIButton! - @IBOutlet var attentionBox: UIView! - @IBOutlet var attentionLabel: UILabel! - - static func controller() -> OnlineAccountConfirmationController { - vc(OnlineAccountConfirmationController.self, from: sb("CrowdNode")) - } - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - configureObservers() - } - - @IBAction - func closeAction() { - dismiss(animated: true) - } - - @IBAction - func copyPrimaryAddressAction() { - UIPasteboard.general.string = viewModel.primaryAddress - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } - - @IBAction - func copyAddressAction() { - UIPasteboard.general.string = viewModel.accountAddress - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } - - @IBAction - func showQrAction() { - present(ConfirmationTransactionQRController.controller(paymentRequest), animated: true) - } - - @IBAction - func shareAction() { - let sharedObjects: [AnyObject] = [paymentRequest.url as AnyObject] - let activityViewController = UIActivityViewController(activityItems: sharedObjects, applicationActivities: nil) - activityViewController.popoverPresentationController?.sourceView = view - present(activityViewController, animated: true, completion: nil) - } - - @objc - func onDocumentationLinkTapped() { - UIApplication.shared.open(URL(string: CrowdNode.howToVerifyUrl)!) - } -} - -extension OnlineAccountConfirmationController { - private func configureHierarchy() { - view.backgroundColor = .dw_secondaryBackground() - - titleLabel.text = NSLocalizedString("Verify your API Dash address", comment: "CrowdNode") - howToConfirmLabel.text = NSLocalizedString("How to confirm your API Dash address", comment: "CrowdNode") - primaryAddressTitle.text = NSLocalizedString("Primary Dash address", comment: "CrowdNode") - info2Label.text = NSLocalizedString("to the Dash address designated for your CrowdNode account in the Dash Wallet on this device", comment: "CrowdNode") - primaryAddressLabel.text = viewModel.primaryAddress - addressTitle.text = NSLocalizedString("Dash address", comment: "CrowdNode") - addressLabel.text = viewModel.accountAddress - qrButton.setTitle(NSLocalizedString("Show QR", comment: "CrowdNode"), for: .normal) - qrButton.titleLabel?.font = UIFont.dw_mediumFont(ofSize: 13) - qrButton.setTitle(NSLocalizedString("Share", comment: "CrowdNode"), for: .normal) - shareButton.titleLabel?.font = UIFont.dw_mediumFont(ofSize: 13) - attentionBox.layer.borderWidth = 1 - attentionBox.layer.borderColor = UIColor.systemYellow.cgColor - attentionLabel.text = NSLocalizedString("We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device.", comment: "CrowdNode") - - let confirmationAmount = CrowdNode.apiConfirmationDashAmount.formattedDashAmount - infoLabel.text = String - .localizedStringWithFormat(NSLocalizedString("Send %@ from your primary Dash address that you currently use for your CrowdNode account", comment: "CrowdNode Confirm"), - confirmationAmount) - - let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(onDocumentationLinkTapped)) - documentationLinkButton.addGestureRecognizer(tapGestureRecognizer) - } - - private func configureObservers() { - viewModel.$onlineAccountState - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - if state == .done { - self?.presentingViewController?.dismiss(animated: true) - } - } - .store(in: &cancellableBag) - - viewModel.$apiError - .receive(on: DispatchQueue.main) - .sink { [weak self] error in - if error != nil { - self?.presentingViewController?.dismiss(animated: true) - } - } - .store(in: &cancellableBag) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountDetailsController.swift b/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountDetailsController.swift deleted file mode 100644 index bc631edea0..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountDetailsController.swift +++ /dev/null @@ -1,66 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -final class OnlineAccountDetailsController: BaseViewController { - private let viewModel = CrowdNodeModel.shared - - @IBOutlet var titleLabel: UILabel! - @IBOutlet var subtitleLabel: UILabel! - @IBOutlet var primaryAddressTitle: UILabel! - @IBOutlet var primaryAddressLabel: UILabel! - @IBOutlet var subtitle2Label: UILabel! - @IBOutlet var addressTitle: UILabel! - @IBOutlet var addressLabel: UILabel! - - static func controller() -> OnlineAccountDetailsController { - vc(OnlineAccountDetailsController.self, from: sb("CrowdNode")) - } - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - } - - @IBAction - func closeAction() { - dismiss(animated: true) - } - - @IBAction - func copyAddressAction() { - UIPasteboard.general.string = viewModel.accountAddress - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } - - @IBAction - func copyPrimaryAddressAction() { - UIPasteboard.general.string = viewModel.primaryAddress - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } - - private func configureHierarchy() { - view.backgroundColor = .dw_secondaryBackground() - - primaryAddressLabel.text = viewModel.primaryAddress - addressLabel.text = viewModel.accountAddress - titleLabel.text = NSLocalizedString("Information about your online account", comment: "CrowdNode") - subtitleLabel.text = NSLocalizedString("Your primary Dash address that you currently use for your CrowdNode account", comment: "CrowdNode") - primaryAddressTitle.text = NSLocalizedString("Primary Dash address", comment: "CrowdNode") - subtitle2Label.text = NSLocalizedString("Dash address designated for your CrowdNode account in the Dash Wallet on this device ", comment: "CrowdNode") - addressTitle.text = NSLocalizedString("Dash address", comment: "") - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountEmailController.swift b/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountEmailController.swift deleted file mode 100644 index 7e32b08193..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountEmailController.swift +++ /dev/null @@ -1,196 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -// MARK: - OnlineAccountEmailController - -final class OnlineAccountEmailController: UIViewController { - private var cancellableBag = Set() - private let viewModel = CrowdNodeModel.shared - - @IBOutlet var input: DashInputField! - @IBOutlet var titleLabel: UILabel! - @IBOutlet var subtitleLabel: UILabel! - @IBOutlet var continueButton: ActionButton! - @IBOutlet var actionButtonBottomConstraint: NSLayoutConstraint! - - private var isInProgress = false { - didSet { - if isInProgress { - continueButton.showActivityIndicator() - input.isEnabled = false - } else { - continueButton.hideActivityIndicator() - input.isEnabled = true - } - } - } - - static func controller() -> OnlineAccountEmailController { - vc(OnlineAccountEmailController.self, from: sb("CrowdNode")) - } - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - configureObservers() - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - if viewModel.onlineAccountState != .creating { - input.becomeFirstResponder() - } - } - - @IBAction - func onContinue() { - validateAndSign() - } - - private func configureHierarchy() { - configureEmailInput() - - titleLabel.text = NSLocalizedString("Create an online CrowdNode account", comment: "CrowdNode") - subtitleLabel.text = NSLocalizedString("Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode", comment: "CrowdNode") - continueButton.setTitle(NSLocalizedString("Continue", comment: ""), for: .normal) - - NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardShown(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(onKeyboardHidden(_:)), name: UIResponder.keyboardWillHideNotification, object: nil) - } - - @objc - private func onKeyboardShown(notification: NSNotification) { - if let offset = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue.height { - actionButtonBottomConstraint.constant = offset + 10 - } - } - - @objc - private func onKeyboardHidden(_: NSNotification) { - actionButtonBottomConstraint.constant = 20 - } - - private func configureObservers() { - viewModel.$onlineAccountState - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] state in - self?.transitionSignUpState(state) - } - .store(in: &cancellableBag) - - viewModel.$error - .receive(on: DispatchQueue.main) - .compactMap { $0 } - .sink { [weak self] error in - // `compactMap` already unwrapped the published optional. - if error is CrowdNode.Error { - self?.viewModel.clearError() - self?.navigationController?.toErrorScreen( - error: error as? CrowdNode.Error ?? .messageStatus(error: error.localizedDescription)) - } - } - .store(in: &cancellableBag) - } -} - -// MARK: UITextViewDelegate - -extension OnlineAccountEmailController: UITextViewDelegate { - func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { - guard let range = text.rangeOfCharacter(from: .newlines) else { - return true - } - - input.resignFirstResponder() - return false - } - - func textFieldShouldReturn(_ textField: UITextField) -> Bool { - validateAndSign() - return true - } - - private func configureEmailInput() { - input.placeholder = NSLocalizedString("Email", comment: "CrowdNode") - input.text = viewModel.emailForAccount - input.placeholder = NSLocalizedString("e.g. johndoe@mail.com", comment: "CrowdNode") - input.textContentType = .emailAddress - input.keyboardType = .emailAddress - input.autocorrectionType = .no - input.autocapitalizationType = .none - input.spellCheckingType = .no - input.delegate = self - input.textDidChange = { [weak self] _ in - self?.onInputTextChanged() - } - } - - @objc - private func onInputTextChanged() { - continueButton.isEnabled = isEmail(text: input.text) - } - - private func isEmail(text: String?) -> Bool { - let trimmed = text?.trimmingCharacters(in: .whitespacesAndNewlines) ?? "" - let regex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}" - let predicate = NSPredicate(format:"SELF MATCHES %@", regex) - - return predicate.evaluate(with: trimmed) - } -} - -extension OnlineAccountEmailController { - private func validateAndSign() { - if isEmail(text: input.text) { - isInProgress = true - - Task { - do { - let isSent = try await viewModel.signAndSendEmail(email: input.text.trimmingCharacters(in: .whitespacesAndNewlines)) - - if !isSent { - isInProgress = false - } - } catch { - isInProgress = false - input.errorMessage = error.localizedDescription - } - } - } else { - input.errorMessage = NSLocalizedString("Invalid Email", comment: "CrowdNode Online") - } - } - - private func transitionSignUpState(_ state: CrowdNode.OnlineAccountState) { - switch state { - case .creating: - view.endEditing(true) - isInProgress = true - case .signingUp: - let signupUrl = CrowdNode.profileUrl - navigationController?.replaceLast(with: CrowdNodeWebViewController.controller(url: URL(string: signupUrl)!, email: viewModel.emailForAccount)) - isInProgress = false - default: - isInProgress = false - } - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountInfoController.swift b/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountInfoController.swift deleted file mode 100644 index 478bb7b72b..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Online/OnlineAccountInfoController.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -final class OnlineAccountInfoController: UIViewController { - @IBOutlet var titleLabel: UILabel! - @IBOutlet var recoveryTitle: UILabel! - @IBOutlet var recoveryDescription: UILabel! - @IBOutlet var historyTitle: UILabel! - @IBOutlet var historyDescription: UILabel! - @IBOutlet var payoutTitle: UILabel! - @IBOutlet var payoutDescription: UILabel! - @IBOutlet var continueButton: UIButton! - - @objc - static func controller() -> OnlineAccountInfoController { - vc(OnlineAccountInfoController.self, from: sb("CrowdNode")) - } - - @IBAction - func continueAction() { - navigationController?.replaceLast(1, with: OnlineAccountEmailController.controller()) - } - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - } -} - -extension OnlineAccountInfoController { - private func configureHierarchy() { - titleLabel.text = NSLocalizedString("Why do you need an online account?", comment: "CrowdNode") - recoveryTitle.text = NSLocalizedString("Account Recovery", comment: "CrowdNode") - recoveryDescription.text = NSLocalizedString("If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds.", comment: "CrowdNode") - historyTitle.text = NSLocalizedString("Transaction History", comment: "CrowdNode") - historyDescription.text = NSLocalizedString("You can see detailed information about your deposits, withdrawals and reward earnings.", comment: "CrowdNode") - payoutTitle.text = NSLocalizedString("Payout Options", comment: "CrowdNode") - payoutDescription.text = NSLocalizedString("You can change how / when your reward earnings are paid to you.", comment: "CrowdNode") - continueButton.setTitle(NSLocalizedString("Continue", comment: ""), for: .normal) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodePortalViewController.swift b/DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodePortalViewController.swift deleted file mode 100644 index 72d9d93a3c..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodePortalViewController.swift +++ /dev/null @@ -1,335 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine - -// MARK: - CrowdNodePortalController - -final class CrowdNodePortalController: UIViewController { - private let viewModel = CrowdNodeModel.shared - private var cancellableBag = Set() - - @IBOutlet var gradientHeader: UIView! - @IBOutlet var tableView: UITableView! - @IBOutlet var balanceLabel: UILabel! - @IBOutlet var balanceView: BalanceView! - - override func viewDidLoad() { - super.viewDidLoad() - - configureNavBar() - configureHierarchy() - viewModel.refreshBalance() - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - viewModel.showNotificationOnResult = false - - if cancellableBag.isEmpty { - configureObservers() - } - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - cancellableBag.removeAll() - viewModel.showNotificationOnResult = true - } - - @objc - static func controller() -> CrowdNodePortalController { - vc(CrowdNodePortalController.self, from: sb("CrowdNode")) - } - - @objc - func backButtonAction() { - navigationController?.popViewController(animated: true) - } - - @objc - func infoButtonAction() { - if viewModel.signUpState == .linkedOnline { - present(OnlineAccountDetailsController.controller(), animated: true) - } else { - present(StakingInfoDialogController.controller(), animated: true) - } - } - - @IBAction - func verifyButtonAction() { - let vc = OnlineAccountConfirmationController.controller() - present(vc, animated: true, completion: nil) - } -} - -extension CrowdNodePortalController { - private func configureHierarchy() { - view.backgroundColor = .dw_secondaryBackground() - - balanceLabel.text = NSLocalizedString("Balance On CrowdNode", comment: "CrowdNode") - balanceView.tint = .white - balanceView.dataSource = self - - tableView.layer.dw_applyShadow(with: .dw_shadow(), alpha: 0.1, x: 0, y: 0, blur: 10) - tableView.clipsToBounds = true - tableView.isScrollEnabled = false - tableView.rowHeight = UITableView.automaticDimension - tableView.separatorColor = .dw_separatorLine() - - let colorStart = UIColor(red: 31 / 255.0, green: 134 / 255.0, blue: 201 / 255.0, alpha: 1.0).cgColor - let colorEnd = UIColor(red: 99 / 255.0, green: 181 / 255.0, blue: 237 / 255.0, alpha: 1.0).cgColor - let gradientMaskLayer = CAGradientLayer() - gradientMaskLayer.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: gradientHeader.bounds.height) - gradientMaskLayer.colors = [colorStart, colorEnd] - gradientMaskLayer.locations = [0, 1] - gradientMaskLayer.startPoint = CGPoint(x: 0, y: 0.5) - gradientMaskLayer.endPoint = CGPoint(x: 1, y: 0.5) - gradientHeader.layer.insertSublayer(gradientMaskLayer, at: 0) - } - - private func configureNavBar() { - let appearance = UINavigationBarAppearance() - appearance.configureWithTransparentBackground() - - let backButton = UIButton(type: .custom) - backButton.frame = .init(x: 0, y: 0, width: 30, height: 30) - backButton.setImage(UIImage(systemName: "arrow.backward"), for: .normal) - backButton.tintColor = .white - backButton.imageEdgeInsets = .init(top: 0, left: -10, bottom: 0, right: 0) - backButton.addTarget(self, action: #selector(backButtonAction), for: .touchUpInside) - navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton) - - navigationItem.standardAppearance = appearance - navigationItem.scrollEdgeAppearance = appearance - - let buttonImage = UIImage(systemName: "info.circle") - let button = UIBarButtonItem(image: buttonImage, style: UIBarButtonItem.Style.plain, target: self, action: #selector(infoButtonAction)) - button.tintColor = UIColor.white - navigationItem.rightBarButtonItem = button - } - - private func configureObservers() { - viewModel.$crowdNodeBalance - .receive(on: DispatchQueue.main) - .removeDuplicates() - .sink(receiveValue: { [weak self] _ in - self?.balanceView.dataSource = self - self?.tableView.reloadRows(at: [ - IndexPath(item: 0, section: 0), - IndexPath(item: 1, section: 0), - ], - with: .none) - }) - .store(in: &cancellableBag) - - viewModel.$walletBalance - .receive(on: DispatchQueue.main) - .removeDuplicates() - .sink(receiveValue: { [weak self] _ in - self?.tableView.reloadRows(at: [ - IndexPath(item: 0, section: 0), - ], - with: .none) - }) - .store(in: &cancellableBag) - - viewModel.$onlineAccountState - .receive(on: DispatchQueue.main) - .sink { [weak self] _ in - self?.tableView.reloadRows(at: [ - IndexPath(item: 1, section: 0), - IndexPath(item: 0, section: 1), - ], - with: .none) - - if self?.viewModel.shouldShowConfirmationDialog == true { - let vc = OnlineAccountConfirmationController.controller() - self?.present(vc, animated: true, completion: nil) - self?.viewModel.shouldShowConfirmationDialog = false - } - } - .store(in: &cancellableBag) - - viewModel.$animateBalanceLabel - .receive(on: DispatchQueue.main) - .sink(receiveValue: { [weak self] animate in - if animate { - UIView.animate(withDuration: 0.5, - delay:0.0, - options:[.allowUserInteraction, .curveEaseInOut, .autoreverse, .repeat], - animations: { self?.balanceLabel.alpha = 0 }, - completion: nil) - } else { - self?.balanceLabel.layer.removeAllAnimations() - self?.balanceLabel.alpha = 1 - } - }) - .store(in: &cancellableBag) - - viewModel.$error - .receive(on: DispatchQueue.main) - .compactMap { $0 } - .sink(receiveValue: { [weak self] error in - // `compactMap` already unwrapped the published optional. - if error is CrowdNode.Error { - self?.viewModel.clearError() - self?.navigationController?.toErrorScreen( - error: error as? CrowdNode.Error ?? .messageStatus(error: error.localizedDescription)) - } - }) - .store(in: &cancellableBag) - } -} - -// MARK: UITableViewDelegate, UITableViewDataSource - -extension CrowdNodePortalController : UITableViewDelegate, UITableViewDataSource { - func numberOfSections(in tableView: UITableView) -> Int { - Int(ceil(Double(viewModel.portalItems.count) / 2.0)) - } - - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - let startIndex = section * 2 - return max(0, min(2, viewModel.portalItems.count - startIndex)) - } - - func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat { - CGFloat.leastNormalMagnitude - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(type: CrowdNodeCell.self, for: indexPath) - - let item = viewModel.portalItems[(indexPath.section * 2) + indexPath.item] - cell.update(with: item, viewModel.crowdNodeBalance, viewModel.walletBalance, viewModel.onlineAccountState) - - return cell - } - - // Default corner radius is too small. Set to 16 - func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { - let cornerRadius = 16 - var corners = UIRectCorner() - - if indexPath.item == 0 { - corners.insert(.topLeft) - corners.insert(.topRight) - } else { - corners.insert(.bottomLeft) - corners.insert(.bottomRight) - } - - let shapeLayer = CAShapeLayer() - shapeLayer.path = UIBezierPath(roundedRect: cell.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: cornerRadius, height: cornerRadius)).cgPath - cell.layer.mask = shapeLayer - } - - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: true) - let item = viewModel.portalItems[(indexPath.section * 2) + indexPath.item] - - if item.isDisabled(viewModel.crowdNodeBalance, viewModel.walletBalance, viewModel.onlineAccountState.isLinkingInProgress) { - return - } - - switch item { - case .deposit: - navigationController?.pushViewController(CrowdNodeTransferController.controller(mode: TransferDirection.deposit), animated: true) - case .withdraw: - if viewModel.canWithdraw { - navigationController?.pushViewController(CrowdNodeTransferController.controller(mode: TransferDirection.withdraw), animated: true) - } else { - showMinimumBalanceError() - } - case .onlineAccount: - switch viewModel.onlineAccountState { - case .none, .creating: - showOnlineInfoOrEnterEmail() - case .signingUp: - showSignUpWebView() - case .done: - let accountAddress = viewModel.primaryAddress ?? viewModel.accountAddress - UIApplication.shared.open(URL(string: CrowdNode.fundsOpenUrl + accountAddress)!) - default: - break - } - - case .support: - UIApplication.shared.open(URL(string: CrowdNode.supportUrl)!) - } - } - - private func showMinimumBalanceError() { - let vc = BasicInfoController() - vc.icon = "image.crowdnode.error" - vc.headerText = NSLocalizedString("You should have a positive balance on Dash Wallet", comment: "CrowdNode") - vc.descriptionText = String.localizedStringWithFormat(NSLocalizedString("Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal", comment: "CrowdNode"), - CrowdNode.minimumLeftoverBalance.formattedDashAmountWithoutCurrencySymbol) - vc.actionButtonText = viewModel.buyDashButtonText - let nvc = BaseNavigationController(rootViewController: vc) - - vc.mainAction = { - Task { - if await self.viewModel.authenticate() { - let controller = BuySellPortalViewController.controller() - nvc.pushViewController(controller, animated: true) - } - } - } - - present(nvc, animated: true) - } -} - -// MARK: BalanceViewDataSource - -extension CrowdNodePortalController: BalanceViewDataSource { - var mainAmountString: String { - viewModel.crowdNodeBalance.formattedDashAmount - } - - var supplementaryAmountString: String { - let fiat: String - - if let fiatAmount = try? CurrencyExchanger.shared.convertDash(amount: viewModel.crowdNodeBalance.dashAmount, to: App.fiatCurrency) { - fiat = NumberFormatter.fiatFormatter.string(from: fiatAmount as NSNumber)! - } else { - fiat = NSLocalizedString("Syncing…", comment: "Balance") - } - - return fiat - } -} - -// MARK: - Online - -extension CrowdNodePortalController { - private func showOnlineInfoOrEnterEmail() { - if viewModel.shouldShowOnlineInfo { - navigationController?.pushViewController(OnlineAccountInfoController.controller(), animated: true) - viewModel.shouldShowOnlineInfo = false - } else { - navigationController?.pushViewController(OnlineAccountEmailController.controller(), animated: true) - } - } - - private func showSignUpWebView() { - let profileUrl = CrowdNode.profileUrl - navigationController?.pushViewController(CrowdNodeWebViewController.controller(url: URL(string: profileUrl)!, email: viewModel.emailForAccount), animated: true) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodeTransferViewController.swift b/DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodeTransferViewController.swift deleted file mode 100644 index 8cd8e22681..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodeTransferViewController.swift +++ /dev/null @@ -1,363 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import Foundation - -// MARK: - CrowdNodeTransferController - -final class CrowdNodeTransferController: SendAmountViewController, NetworkReachabilityHandling { - private let viewModel = CrowdNodeModel.shared - - internal var mode: TransferDirection { - transferModel.direction - } - - /// Conform to NetworkReachabilityHandling - internal var networkStatusDidChange: ((NetworkStatus) -> ())? - internal var reachabilityObserver: Any! - internal var transferModel: CrowdNodeTransferModel { - model as! CrowdNodeTransferModel - } - - private var networkUnavailableView: UIView! - private var fromLabel: FromLabel! - private var dashPriceLabel: UILabel! - private var minimumDepositBanner: MinimumDepositBanner? - - override var amountInputStyle: AmountInputControl.Style { .oppositeAmount } - - static func controller(mode: TransferDirection) -> CrowdNodeTransferController { - let model = CrowdNodeTransferModel() - model.direction = mode - - let vc = CrowdNodeTransferController(model: model) - return vc - } - - override func viewDidLoad() { - super.viewDidLoad() - - view.backgroundColor = .dw_secondaryBackground() - - navigationItem.backButtonDisplayMode = .minimal - navigationItem.largeTitleDisplayMode = .never - - networkStatusDidChange = { [weak self] _ in - self?.reloadView() - } - startNetworkMonitoring() - configureObservers() - } - - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - viewModel.showNotificationOnResult = false - - if mode == .deposit && viewModel.shouldShowWithdrawalLimitsDialog { - showWithdrawalLimitsInfo() - viewModel.shouldShowWithdrawalLimitsDialog = false - } - } - - override func viewDidDisappear(_ animated: Bool) { - super.viewDidDisappear(animated) - viewModel.showNotificationOnResult = true - } - - override var actionButtonTitle: String? { - return mode.title - } - - override func actionButtonAction(sender: UIView) { - let amount = transferModel.amount.plainAmount - - if mode == .deposit && viewModel.shouldShowFirstDepositBanner && amount < CrowdNode.minimumDeposit { - minimumDepositBanner?.backgroundColor = .systemRed - minimumDepositBanner?.dw_shakeView() - return - } - - if mode == .deposit { - handleDeposit(amount: amount) - } else { - handleWithdraw(amount: amount) - } - } - - override func configureModel() { - super.configureModel() - - model.inputsSwappedHandler = { [weak self] _ in - self?.updateBalanceLabel() - } - } - - private func handleDeposit(amount: UInt64) { - showActivityIndicator() - checkLeftoverBalance(isCrowdNodeTransfer: true) { [weak self] canContinue in - guard canContinue, let wSelf = self else { self?.hideActivityIndicator(); return } - - Task { - do { - if try await wSelf.viewModel.deposit(amount: amount) { - wSelf.showSuccessfulStatus() - } - } catch { - wSelf.showErrorStatus(err: error) - } - - wSelf.hideActivityIndicator() - } - } - } - - private func handleWithdraw(amount: UInt64) { - showActivityIndicator() - - Task { - do { - if try await viewModel.withdraw(amount: amount) { - showSuccessfulStatus() - } - } catch CrowdNode.Error.withdrawLimit(_, let period) { - showWithdrawalLimitsError(period: period) - } catch { - showErrorStatus(err: error) - } - - hideActivityIndicator() - } - } - - deinit { - stopNetworkMonitoring() - } -} - -extension CrowdNodeTransferController { - override func configureHierarchy() { - super.configureHierarchy() - configureTitleBar() - - fromLabel = FromLabel(icon: mode.imageName, text: mode.direction) - contentView.addSubview(fromLabel) - - let keyboardHeader = KeyboardHeader(icon: mode.keyboardHeaderIcon, text: mode.keyboardHeader) - keyboardHeader.translatesAutoresizingMaskIntoConstraints = false - topKeyboardView = keyboardHeader - - networkUnavailableView = NetworkUnavailableView(frame: .zero) - networkUnavailableView.translatesAutoresizingMaskIntoConstraints = false - networkUnavailableView.isHidden = true - contentView.addSubview(networkUnavailableView) - - NSLayoutConstraint.activate([ - fromLabel.centerXAnchor.constraint(equalTo: contentView.centerXAnchor), - NSLayoutConstraint(item: fromLabel!, attribute: .centerY, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.38, constant: 0), - - amountView.leadingAnchor.constraint(equalTo: view.layoutMarginsGuide.leadingAnchor), - amountView.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor), - NSLayoutConstraint(item: amountView!, attribute: .top, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 0.5, constant: 0), - - networkUnavailableView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor), - networkUnavailableView.centerYAnchor.constraint(equalTo: numberKeyboard.centerYAnchor), - ]) - - if mode == .deposit && viewModel.shouldShowFirstDepositBanner { - let minimumDepositBanner = MinimumDepositBanner(frame: .zero) - contentView.addSubview(minimumDepositBanner) - - NSLayoutConstraint.activate([ - minimumDepositBanner.heightAnchor.constraint(equalToConstant: 32), - minimumDepositBanner.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - minimumDepositBanner.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: 0), - minimumDepositBanner.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0), - ]) - - let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(minimumDepositBannerTapAction)) - minimumDepositBanner.addGestureRecognizer(tapGestureRecognizer) - self.minimumDepositBanner = minimumDepositBanner - } - } - - private func configureTitleBar() { - let titleViewStackView = UIStackView() - titleViewStackView.alignment = .center - titleViewStackView.translatesAutoresizingMaskIntoConstraints = false - titleViewStackView.axis = .vertical - titleViewStackView.spacing = 1 - navigationItem.titleView = titleViewStackView - - let titleLabel = UILabel() - titleLabel.font = .dw_mediumFont(ofSize: 16) - titleLabel.minimumScaleFactor = 0.5 - titleLabel.text = mode.title - titleViewStackView.addArrangedSubview(titleLabel) - - dashPriceLabel = UILabel() - dashPriceLabel.font = .dw_font(forTextStyle: .footnote) - dashPriceLabel.textColor = .dw_secondaryText() - dashPriceLabel.minimumScaleFactor = 0.5 - dashPriceLabel.text = transferModel.dashPriceDisplayString - titleViewStackView.addArrangedSubview(dashPriceLabel) - } - - @objc - func minimumDepositBannerTapAction() { - let vc = StakingInfoDialogController.controller() - present(vc, animated: true, completion: nil) - } -} - -extension CrowdNodeTransferController { - private func reloadView() { - let isOnline = networkStatus == .online - networkUnavailableView.isHidden = isOnline - keyboardContainer.isHidden = !isOnline - if let btn = actionButton as? UIButton { btn.superview?.isHidden = !isOnline } - } - - private func showSuccessfulStatus() { - let vc = SuccessfulOperationStatusViewController.initiate(from: sb("OperationStatus")) - vc.closeHandler = { [weak self] in - guard let wSelf = self else { return } - wSelf.navigationController?.popToViewController(wSelf.previousControllerOnNavigationStack!, animated: true) - } - vc.headerText = mode.successfulTransfer - vc.descriptionText = mode.successfulTransferDetails - - vc.hidesBottomBarWhenPushed = true - navigationController?.pushViewController(vc, animated: true) - } - - private func showErrorStatus(err: Error) { - let vc = FailedOperationStatusViewController.initiate(from: sb("OperationStatus")) - vc.headerText = mode.failedTransfer - vc.descriptionText = err.localizedDescription - vc.supportButtonText = NSLocalizedString("Send Report", comment: "CrowdNode") - vc.retryHandler = { [weak self] in self?.navigationController?.popViewController(animated: true) } - vc.cancelHandler = { [weak self] in - guard let wSelf = self else { return } - wSelf.navigationController?.popToViewController(wSelf.previousControllerOnNavigationStack!, animated: true) - } - vc.supportHandler = { - let url = DWAboutModel.supportURL() - let safariViewController = SFSafariViewController.dw_controller(with: url) - self.present(safariViewController, animated: true) - } - vc.hidesBottomBarWhenPushed = true - navigationController?.pushViewController(vc, animated: true) - } - - private func showWithdrawalLimitsError(period: WithdrawalLimitPeriod) { - if period == .perBlock { - showPerBlockLimitWarning() - return - } - - let vc = WithdrawalLimitsController() - var buttonText: String? = nil - let isOnlineAccountDone = viewModel.onlineAccountState == .done - - if period == .perTransaction { - if isOnlineAccountDone { - buttonText = NSLocalizedString("Read Withdrawal Policy", comment: "CrowdNode") - } else { - buttonText = NSLocalizedString("Create Online Account", comment: "CrowdNode") - } - } - - vc.model = WithdrawalLimitDialogModel(icon: "image.crowdnode.error", buttonText: buttonText, limits: viewModel.withdrawalLimits, highlightedLimit: period.rawValue) - vc.actionHandler = { - if isOnlineAccountDone { - UIApplication.shared.open(URL(string: CrowdNode.withdrawalLimitsUrl)!) - } else { - vc.dismiss(animated: true) - self.navigationController?.pushViewController(OnlineAccountEmailController.controller(), animated: true) - } - } - - let nvc = BaseNavigationController(rootViewController: vc) - present(nvc, animated: true) - } - - private func showWithdrawalLimitsInfo() { - let vc = WithdrawalLimitsController() - vc.model = WithdrawalLimitDialogModel(icon: "image.crowdnode.info", buttonText: nil, limits: viewModel.withdrawalLimits, highlightedLimit: -1) - let nvc = BaseNavigationController(rootViewController: vc) - present(nvc, animated: true) - } - - private func showPerBlockLimitWarning() { - let title = NSLocalizedString("Please wait before initiating the next withdrawal", comment: "CrowdNode") - let message = NSLocalizedString("You need to wait 5 minutes before initiating another withdrawal", - comment: "CrowdNode") - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - - if #available(iOS 16.0, *) { - alert.severity = .critical - } - - let okAction = UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default) - alert.addAction(okAction) - present(alert, animated: true) - } -} - -extension CrowdNodeTransferController { - func configureObservers() { - viewModel.$crowdNodeBalance - .receive(on: DispatchQueue.main) - .removeDuplicates() - .sink(receiveValue: { [weak self] _ in - self?.updateBalanceLabel() - }) - .store(in: &cancellableBag) - - viewModel.$walletBalance - .receive(on: DispatchQueue.main) - .removeDuplicates() - .sink(receiveValue: { [weak self] _ in - self?.updateBalanceLabel() - }) - .store(in: &cancellableBag) - } - - override func localCurrencyViewController(_ controller: DWLocalCurrencyViewController, didSelectCurrency currencyCode: String) { - super.localCurrencyViewController(controller, didSelectCurrency: currencyCode) - - updateBalanceLabel() - dashPriceLabel.text = transferModel.dashPriceDisplayString - } - - private func updateBalanceLabel() { - let amount = mode == .deposit ? viewModel.walletBalance : viewModel.crowdNodeBalance - let formatted = model.activeAmountType == .main - ? amount.formattedDashAmount - : CurrencyExchanger.shared.fiatAmountString(in: model.localCurrencyCode, for: amount.dashAmount) - fromLabel.balanceText = NSLocalizedString("Balance: ", comment: "CrowdNode") + formatted - } -} - -// MARK: PaymentControllerPresentationContextProviding - -extension CrowdNodeTransferController: PaymentControllerPresentationContextProviding { - func presentationAnchorForPaymentController(_ controller: PaymentController) -> PaymentControllerPresentationAnchor { - self - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodePortalItem.swift b/DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodePortalItem.swift deleted file mode 100644 index 58c9f1014a..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodePortalItem.swift +++ /dev/null @@ -1,152 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -// MARK: - CrowdNodePortalItem - -enum CrowdNodePortalItem: CaseIterable { - case deposit - case withdraw - case onlineAccount - case support -} - -extension CrowdNodePortalItem { - func title(onlineState: CrowdNode.OnlineAccountState) -> String { - switch self { - case .deposit: - return NSLocalizedString("Deposit", comment: "CrowdNode Portal") - case .withdraw: - return NSLocalizedString("Withdraw", comment: "CrowdNode Portal") - case .support: - return NSLocalizedString("CrowdNode Support", comment: "CrowdNode Portal") - case .onlineAccount: - if onlineState == .none { - return NSLocalizedString("Create Online Account", comment: "CrowdNode Portal") - } else { - return NSLocalizedString("Online Account", comment: "CrowdNode Portal") - } - } - } - - func subtitle(onlineState: CrowdNode.OnlineAccountState) -> String { - switch self { - case .deposit: - return NSLocalizedString("DashWallet ➝ CrowdNode", comment: "CrowdNode Portal") - case .withdraw: - return NSLocalizedString("CrowdNode ➝ DashWallet", comment: "CrowdNode Portal") - case .support: - return "" - case .onlineAccount: - switch onlineState { - case .done: - return NSLocalizedString("Synced with current Dash Wallet", comment: "CrowdNode Portal") - case .none: - return NSLocalizedString("Protect your savings", comment: "CrowdNode Portal") - case .signingUp: - return NSLocalizedString("Sign up to finish setting up account", comment: "CrowdNode Portal") - default: - return NSLocalizedString("In process…", comment: "CrowdNode Portal") - } - } - } - - var icon: String { - switch self { - case .deposit: - return "image.crowdnode.deposit" - case .withdraw: - return "image.crowdnode.withdraw" - case .onlineAccount: - return "image.crowdnode.online" - case .support: - return "image.crowdnode.support" - } - } - - var iconCircleColor: UIColor { - switch self { - case .deposit: - return UIColor.systemGreen - - default: - return UIColor.dw_dashBlue() - } - } - - func isDisabled(_ crowdNodeBalance: UInt64, _ walletBalance: UInt64, _ isLinkingInProgress: Bool) -> Bool { - switch self { - case .deposit: - return walletBalance <= 0 || isLinkingInProgress - - case .withdraw: - return crowdNodeBalance <= 0 || isLinkingInProgress - - default: - return false - } - } - - func info(_ crowdNodeBalance: UInt64, _ onlineAccountState: CrowdNode.OnlineAccountState) -> String { - switch self { - case .deposit: - let negligibleAmount = CrowdNode.minimumDeposit / 50 - let minimumDeposit = CrowdNode.minimumDeposit.formattedDashAmount - - if crowdNodeBalance < negligibleAmount { - return String.localizedStringWithFormat(NSLocalizedString("Deposit at least %@ to start earning", comment: "CrowdNode Portal"), minimumDeposit) - } else { - return String.localizedStringWithFormat(NSLocalizedString("Deposit %@ to start earning", comment: "CrowdNode Portal"), minimumDeposit) - } - case .withdraw: - if onlineAccountState == .confirming { - return NSLocalizedString("Verification Required", comment: "CrowdNode Portal") - } else if onlineAccountState == .validating { - return NSLocalizedString("Validating address…", comment: "CrowdNode Portal") - } else { - return "" - } - default: - return "" - } - } - - var infoBackgroundColor: UIColor { - switch self { - case .deposit: - return UIColor.dw_dashBlue().withAlphaComponent(0.08) - default: - return UIColor.label.withAlphaComponent(0.06) - } - } - - var infoTextColor: UIColor { - switch self { - case .deposit: - return UIColor.dw_dashBlue() - default: - return UIColor.systemRed - } - } - - func infoActionButton(for state: CrowdNode.OnlineAccountState) -> String { - if self == .withdraw && state == .confirming { - return NSLocalizedString("Verify", comment: "CrowdNode Portal") - } - - return "" - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodeTransferModel.swift b/DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodeTransferModel.swift deleted file mode 100644 index 1ff6e38906..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/Model/CrowdNodeTransferModel.swift +++ /dev/null @@ -1,131 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Combine -import Foundation - -// MARK: - DepositWithdrawModelDelegate - -protocol DepositWithdrawModelDelegate: CoinbaseTransactionDelegate { - func coinbaseUserDidChange() - - func initiatePayment(with input: DWPaymentInput) -} - -// MARK: - TransferDirection - -enum TransferDirection { - case deposit - case withdraw - - var imageName: String { - switch self { - case .deposit: return "image.explore.dash.wts.dash" - case .withdraw: return "image.crowdnode.logo" - } - } - - var title: String { - switch self { - case .deposit: return NSLocalizedString("Deposit", comment: "CrowdNode") - case .withdraw: return NSLocalizedString("Withdraw", comment: "CrowdNode") - } - } - - var direction: String { - switch self { - case .deposit: return NSLocalizedString("from Dash Wallet", comment: "from Dash Wallet") - case .withdraw: return NSLocalizedString("from CrowdNode", comment: "from CrowdNode") - } - } - - var keyboardHeader: String { - switch self { - case .deposit: return NSLocalizedString("Sending to CrowdNode account", comment: "CrowdNode") - case .withdraw: return NSLocalizedString("Sending to Dash Wallet on this device", comment: "CrowdNode") - } - } - - var keyboardHeaderIcon: String { - switch self { - case .deposit: return "image.crowdnode.logo" - case .withdraw: return "image.explore.dash.wts.dash" - } - } - - var successfulTransfer: String { - switch self { - case .deposit: return NSLocalizedString("Deposit sent", comment: "CrowdNode") - case .withdraw: return NSLocalizedString("Withdrawal requested", comment: "CrowdNode") - } - } - - var successfulTransferDetails: String { - switch self { - case .deposit: return NSLocalizedString("It can take a minute for your balance to be updated.", comment: "CrowdNode") - case .withdraw: return NSLocalizedString("It can take a minute for your funds to arrive.", comment: "CrowdNode") - } - } - - var failedTransfer: String { - switch self { - case .deposit: return NSLocalizedString("We couldn’t make a deposit to your CrowdNode account.", comment: "CrowdNode") - case .withdraw: return NSLocalizedString("We couldn’t withdraw from your CrowdNode account.", comment: "CrowdNode") - } - } -} - -// MARK: - CrowdNodeTransferModel - -final class CrowdNodeTransferModel: SendAmountModel { - weak var delegate: TransferAmountModelDelegate? - weak var transactionDelegate: CoinbaseTransactionDelegate? { delegate } - public var direction: TransferDirection = .deposit - - var dashPriceDisplayString: String { - let dashAmount = kOneDash - let dashAmountFormatted = dashAmount.formattedDashAmount - let fiatBalanceFormatted = CurrencyExchanger.shared.fiatAmountString(in: localCurrencyCode, for: dashAmount.dashAmount) - - let displayString = "\(dashAmountFormatted) ≈ \(fiatBalanceFormatted)" - return displayString - } - - override var isAllowedToContinue: Bool { - let minDepositAmount = CrowdNode.apiOffset + ApiCode.maxCode().rawValue - let minWithdrawAmount = CrowdNode.shared.balance / ApiCode.withdrawAll.rawValue - let minValue = direction == .deposit ? minDepositAmount : minWithdrawAmount - - return super.isAllowedToContinue && amount.plainAmount > minValue - } - - override var canShowInsufficientFunds: Bool { - if direction == .deposit { - return super.canShowInsufficientFunds - } else { - return amount.plainAmount > CrowdNode.shared.balance - } - } - - override func selectAllFunds() { - if direction == .deposit { - super.selectAllFunds() - } else { - super.updateCurrentAmountObject(with: CrowdNode.shared.balance) - } - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/StakingInfoDialogController.swift b/DashWallet/Sources/UI/CrowdNode/Portal/StakingInfoDialogController.swift deleted file mode 100644 index 3aaf1083f7..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/StakingInfoDialogController.swift +++ /dev/null @@ -1,104 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -final class StakingInfoDialogController: UIViewController { - private let viewModel = CrowdNode.shared - - @IBOutlet var titleLabel: UILabel! - @IBOutlet var subtitleLabel: UILabel! - @IBOutlet var benefitsLabel: UILabel! - @IBOutlet var poolTitle: UILabel! - @IBOutlet var poolDescription: UILabel! - @IBOutlet var minimumDepositTitle: UILabel! - @IBOutlet var rewardsTitle: UILabel! - @IBOutlet var rewardsDescription: UILabel! - @IBOutlet var leavingTitle: UILabel! - @IBOutlet var leavingDescription: UILabel! - @IBOutlet var leavingDescription2: UILabel! - @IBOutlet var crowdnodeApyLabel: UILabel! - @IBOutlet var apyDescription: UILabel! - @IBOutlet var addressTitle: UILabel! - @IBOutlet var addressDescription: UILabel! - - @IBOutlet var masternodeApyLabel: UILabel! - @IBOutlet var minimumDepositLabel: UILabel! - @IBOutlet var addressLabelTitle: UILabel! - @IBOutlet var addressLabel: UILabel! - - static func controller() -> StakingInfoDialogController { - vc(StakingInfoDialogController.self, from: sb("CrowdNode")) - } - - override func viewDidLoad() { - super.viewDidLoad() - configureHierarchy() - } - - @IBAction - func closeAction() { - dismiss(animated: true) - } - - @IBAction - func copyAddressAction() { - UIPasteboard.general.string = viewModel.accountAddress - view.dw_showInfoHUD(withText: NSLocalizedString("Copied", comment: "")) - } - - private func configureHierarchy() { - view.backgroundColor = .dw_secondaryBackground() - - titleLabel.text = NSLocalizedString("How CrowdNode staking works", comment: "CrowdNode") - subtitleLabel.text = NSLocalizedString("The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments.", comment: "CrowdNode") - benefitsLabel.text = NSLocalizedString("CrowdNode benefits", comment: "CrowdNode") - poolTitle.text = NSLocalizedString("Joining the pool", comment: "CrowdNode") - poolDescription.text = NSLocalizedString("As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode.", comment: "CrowdNode") - minimumDepositTitle.text = NSLocalizedString("First minimum deposit", comment: "CrowdNode") - - rewardsTitle.text = NSLocalizedString("Receiving rewards", comment: "CrowdNode") - rewardsDescription.text = NSLocalizedString("You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts.", comment: "CrowdNode") - - leavingTitle.text = NSLocalizedString("Leaving the pool", comment: "CrowdNode") - leavingDescription.text = NSLocalizedString("Members are free to leave the pool and can most often leave immediately.", comment: "CrowdNode") - leavingDescription2.text = NSLocalizedString("In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster.", comment: "CrowdNode") - - apyDescription.text = NSLocalizedString("This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price.", comment: "CrowdNode") - - addressTitle.text = NSLocalizedString("Connected Dash address", comment: "CrowdNode") - addressDescription.text = NSLocalizedString("Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device", comment: "CrowdNode") - - addressLabelTitle.text = NSLocalizedString("Dash address", comment: "") - - addressLabel.text = viewModel.accountAddress - let minimumDeposit = CrowdNode.minimumDeposit.formattedDashAmount - minimumDepositLabel.text = String.localizedStringWithFormat(NSLocalizedString("You only need %@ to join the pool.", comment: "CrowdNode"), minimumDeposit) - - let formatter = NumberFormatter() - formatter.numberStyle = .percent - formatter.minimumFractionDigits = 0 - formatter.maximumFractionDigits = 2 - formatter.multiplier = 1 - - masternodeApyLabel.text = String - .localizedStringWithFormat(NSLocalizedString("A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year.", - comment: "CrowdNode"), - formatter.string(for: viewModel.masternodeAPY)!) - crowdnodeApyLabel.text = String.localizedStringWithFormat(NSLocalizedString("Current APY is %@", comment: "CrowdNode"), formatter.string(for: viewModel.crowdnodeAPY)!) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/Views/CrowdNodeCell.swift b/DashWallet/Sources/UI/CrowdNode/Portal/Views/CrowdNodeCell.swift deleted file mode 100644 index 98ef43f13d..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/Views/CrowdNodeCell.swift +++ /dev/null @@ -1,91 +0,0 @@ -// -// Created by tkhp -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -// MARK: - CrowdNodeCell - -final class CrowdNodeCell: UITableViewCell { - @IBOutlet var title : UILabel! - @IBOutlet var subtitle : UILabel! - @IBOutlet var icon : UIImageView! - @IBOutlet var iconCircle : UIView! - @IBOutlet var additionalInfo: UIView! - @IBOutlet var additionalInfoLabel : UILabel! - @IBOutlet var additionalInfoIcon : UIImageView! - @IBOutlet var verifyButton : UIButton! - - @IBOutlet var showInfoConstraint: NSLayoutConstraint! - @IBOutlet var infoBottomAnchorConstraint: NSLayoutConstraint! - - func update(with item: CrowdNodePortalItem, - _ crowdNodeBalance: UInt64, - _ walletBalance: UInt64, - _ onlineAccountState: CrowdNode.OnlineAccountState) { - title.text = item.title(onlineState: onlineAccountState) - subtitle.text = item.subtitle(onlineState: onlineAccountState) - icon.image = UIImage(named: item.icon) - - if item.isDisabled(crowdNodeBalance, walletBalance, onlineAccountState.isLinkingInProgress) { - let grayColor = UIColor(red: 176/255.0, green: 182/255.0, blue: 188/255.0, alpha: 1.0) - iconCircle.backgroundColor = grayColor - title.textColor = .dw_secondaryText() - selectionStyle = .none - } else { - iconCircle.backgroundColor = item.iconCircleColor - title.textColor = .label - selectionStyle = .default - } - - var showInfo: Bool - - switch item { - case .deposit: - showInfo = crowdNodeBalance < CrowdNode.minimumDeposit && !onlineAccountState.isLinkingInProgress - case .withdraw: - showInfo = onlineAccountState.isLinkingInProgress - default: - showInfo = false - } - - additionalInfo.isHidden = !showInfo - showInfoConstraint.constant = showInfo ? 35 : 0 - infoBottomAnchorConstraint.isActive = showInfo - - if showInfo { - additionalInfo.backgroundColor = item.infoBackgroundColor - additionalInfoLabel.text = item.info(crowdNodeBalance, onlineAccountState) - additionalInfoLabel.textColor = item.infoTextColor - - if !item.infoActionButton(for: onlineAccountState).isEmpty { - additionalInfoLabel.textAlignment = .left - additionalInfoIcon.isHidden = false - verifyButton.isHidden = false - } else { - additionalInfoLabel.textAlignment = .center - additionalInfoIcon.isHidden = true - verifyButton.isHidden = true - } - } - } - - override func awakeFromNib() { - super.awakeFromNib() - - backgroundColor = .dw_background() - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/Views/FromLabel.swift b/DashWallet/Sources/UI/CrowdNode/Portal/Views/FromLabel.swift deleted file mode 100644 index 65bd40fec6..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/Views/FromLabel.swift +++ /dev/null @@ -1,84 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -final class FromLabel: UIStackView { - private var icon = "" - private var text = "" - private var balanceLabel: UILabel! - - public var balanceText = "" { - didSet { - balanceLabel.text = balanceText - } - } - - override var intrinsicContentSize: CGSize { - CGSize(width: FromLabel.noIntrinsicMetric, height: 40) - } - - init(icon: String, text: String) { - super.init(frame: .zero) - - self.icon = icon - self.text = text - - configureHierarchy() - } - - override init(frame: CGRect) { - super.init(frame: frame) - - configureHierarchy() - } - - required init(coder: NSCoder) { - super.init(coder: coder) - - configureHierarchy() - } - - private func configureHierarchy() { - translatesAutoresizingMaskIntoConstraints = false - spacing = 10 - axis = .horizontal - - let iconView = UIImageView(image: UIImage(named: icon)) - iconView.contentMode = .scaleAspectFit - iconView.translatesAutoresizingMaskIntoConstraints = false - iconView.heightAnchor.constraint(equalToConstant: 32).isActive = true - iconView.widthAnchor.constraint(equalToConstant: 32).isActive = true - addArrangedSubview(iconView) - - let vertical = UIStackView() - vertical.translatesAutoresizingMaskIntoConstraints = false - vertical.axis = .vertical - addArrangedSubview(vertical) - - let fromLabel = UILabel() - fromLabel.textColor = .dw_label() - fromLabel.font = .dw_regularFont(ofSize: 14) - fromLabel.text = text - vertical.addArrangedSubview(fromLabel) - - balanceLabel = UILabel() - balanceLabel.textColor = .dw_tertiaryText() - balanceLabel.font = .systemFont(ofSize: 12) - vertical.addArrangedSubview(balanceLabel) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/Views/KeyboardHeader.swift b/DashWallet/Sources/UI/CrowdNode/Portal/Views/KeyboardHeader.swift deleted file mode 100644 index b5a717db92..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/Views/KeyboardHeader.swift +++ /dev/null @@ -1,83 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2022 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -final class KeyboardHeader: UIView { - private var icon = "" - private var text = "" - - override var intrinsicContentSize: CGSize { - CGSize(width: KeyboardHeader.noIntrinsicMetric, height: 56) - } - - init(icon: String, text: String) { - super.init(frame: .zero) - - self.icon = icon - self.text = text - - configureHierarchy() - } - - override init(frame: CGRect) { - super.init(frame: frame) - - configureHierarchy() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - - configureHierarchy() - } - - private func configureHierarchy() { - let stackView = UIStackView() - stackView.translatesAutoresizingMaskIntoConstraints = false - stackView.axis = .horizontal - stackView.spacing = 8 - addSubview(stackView) - - let icon = UIImageView(image: UIImage(named: icon)) - icon.contentMode = .scaleAspectFit - stackView.addArrangedSubview(icon) - - let label = UILabel() - label.translatesAutoresizingMaskIntoConstraints = false - label.textColor = .dw_label() - label.font = .dw_regularFont(ofSize: 14) - label.text = text - stackView.addArrangedSubview(label) - - let hairline = HairlineView(frame: .zero) - hairline.translatesAutoresizingMaskIntoConstraints = false - addSubview(hairline) - - NSLayoutConstraint.activate([ - stackView.centerYAnchor.constraint(equalTo: centerYAnchor), - stackView.centerXAnchor.constraint(equalTo: centerXAnchor), - - hairline.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 15), - hairline.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -15), - hairline.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -1), - - icon.widthAnchor.constraint(equalToConstant: 22), - icon.heightAnchor.constraint(equalToConstant: 22), - ]) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/Views/MinimumDepositBanner.swift b/DashWallet/Sources/UI/CrowdNode/Portal/Views/MinimumDepositBanner.swift deleted file mode 100644 index 580c07d451..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/Views/MinimumDepositBanner.swift +++ /dev/null @@ -1,62 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import Foundation - -final class MinimumDepositBanner: UIView { - override init(frame: CGRect) { - super.init(frame: frame) - - configureHierarchy() - } - - required init?(coder: NSCoder) { - super.init(coder: coder) - - configureHierarchy() - } - - func configureHierarchy() { - backgroundColor = .dw_dashBlue() - translatesAutoresizingMaskIntoConstraints = false - - let messageStack = UIStackView() - messageStack.translatesAutoresizingMaskIntoConstraints = false - messageStack.axis = .horizontal - messageStack.spacing = 10 - - let message = UILabel() - message.font = .dw_regularFont(ofSize: 12) - message.textColor = .white - let minimumDeposit = CrowdNode.minimumDeposit.formattedDashAmount - message.text = String.localizedStringWithFormat(NSLocalizedString("First deposit should be more than %@", comment: "CrowdNode"), minimumDeposit) - messageStack.addArrangedSubview(message) - - let infoIcon = UIImageView(image: UIImage(systemName: "info.circle")) - infoIcon.tintColor = .white - messageStack.addArrangedSubview(infoIcon) - - addSubview(messageStack) - - NSLayoutConstraint.activate([ - messageStack.centerYAnchor.constraint(equalTo: centerYAnchor), - messageStack.centerXAnchor.constraint(equalTo: centerXAnchor), - infoIcon.heightAnchor.constraint(equalToConstant: 16), - infoIcon.widthAnchor.constraint(equalToConstant: 16), - ]) - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Portal/WithdrawalLimitsController.swift b/DashWallet/Sources/UI/CrowdNode/Portal/WithdrawalLimitsController.swift deleted file mode 100644 index e182bb7593..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Portal/WithdrawalLimitsController.swift +++ /dev/null @@ -1,227 +0,0 @@ -// -// Created by Andrei Ashikhmin -// Copyright © 2023 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -// MARK: - WithdrawalLimitDialogModel - -struct WithdrawalLimitDialogModel { - let icon: String - let buttonText: String? - let limits: [Int] - let highlightedLimit: Int -} - -// MARK: - WithdrawalLimitsController - -final class WithdrawalLimitsController: BaseViewController { - - private let limitLabels: [String] = [ - NSLocalizedString("per transaction", comment: "CrowdNode"), - NSLocalizedString("per hour", comment: "CrowdNode"), - NSLocalizedString("per 24 hours", comment: "CrowdNode"), - ] - - var actionHandler: (() -> ())? - var model: WithdrawalLimitDialogModel? = nil - - - // MARK: Actions - @objc - func closeAction() { - dismiss(animated: true) - } - - @objc - func actionButtonAction() { - actionHandler?() - } - - override func viewDidLoad() { - super.viewDidLoad() - - configureHierarchy() - } -} - -// MARK: Life cycle -extension WithdrawalLimitsController { - private func configureHierarchy() { - view.backgroundColor = .dw_secondaryBackground() - - let action = UIAction { [weak self] _ in - self?.closeAction() - } - let closeItem = UIBarButtonItem(systemItem: .close, primaryAction: action) - navigationItem.rightBarButtonItem = closeItem - - let scrollView = UIScrollView(frame: .zero) - scrollView.translatesAutoresizingMaskIntoConstraints = false - view.addSubview(scrollView) - - let contentView = UIView() - contentView.translatesAutoresizingMaskIntoConstraints = false - contentView.backgroundColor = .clear - scrollView.addSubview(contentView) - - let iconView = UIImageView(image: UIImage(named: model?.icon ?? "image.crowdnode.info")) - iconView.contentMode = .scaleAspectFit - iconView.translatesAutoresizingMaskIntoConstraints = false - scrollView.addSubview(iconView) - - let titleLabel = UILabel() - titleLabel.translatesAutoresizingMaskIntoConstraints = false - titleLabel.textAlignment = .center - titleLabel.font = .dw_font(forTextStyle: .title2).withWeight(500) - titleLabel.text = NSLocalizedString("CrowdNode withdrawal limits", comment: "CrowdNode") - scrollView.addSubview(titleLabel) - - let descriptionLabel = UILabel() - descriptionLabel.translatesAutoresizingMaskIntoConstraints = false - descriptionLabel.numberOfLines = 0 - descriptionLabel.lineBreakMode = .byWordWrapping - descriptionLabel.textAlignment = .center - descriptionLabel.font = .dw_font(forTextStyle: .body) - descriptionLabel.textColor = .dw_secondaryText() - descriptionLabel.text = NSLocalizedString("Due to CrowdNode’s terms of service users can withdraw no more than:", comment: "CrowdNode") - scrollView.addSubview(descriptionLabel) - - let limitsStackView = UIStackView() - limitsStackView.translatesAutoresizingMaskIntoConstraints = false - limitsStackView.axis = .horizontal - limitsStackView.distribution = .fillEqually - scrollView.addSubview(limitsStackView) - - let limitLabelsStackView = UIStackView() - limitLabelsStackView.translatesAutoresizingMaskIntoConstraints = false - limitLabelsStackView.axis = .horizontal - limitLabelsStackView.distribution = .fillEqually - scrollView.addSubview(limitLabelsStackView) - - model?.limits.enumerated().forEach { - let isHighlighted = $0.offset == model?.highlightedLimit - let limit = createLimitText(limit: $0.element, isHighlighted: isHighlighted) - limitsStackView.addArrangedSubview(limit) - let limitLabel = createLimitLabel(label: limitLabels[$0.offset], isHighlighted: isHighlighted) - limitLabelsStackView.addArrangedSubview(limitLabel) - } - - let frameGuide = scrollView.frameLayoutGuide - let contentGuide = scrollView.contentLayoutGuide - - NSLayoutConstraint.activate([ - frameGuide.topAnchor.constraint(equalTo: view.topAnchor), - frameGuide.leadingAnchor.constraint(equalTo: view.leadingAnchor), - frameGuide.trailingAnchor.constraint(equalTo: view.trailingAnchor), - frameGuide.bottomAnchor.constraint(equalTo: view.bottomAnchor), - - contentGuide.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - contentGuide.topAnchor.constraint(equalTo: contentView.topAnchor), - contentGuide.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - contentGuide.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - contentGuide.widthAnchor.constraint(equalTo: frameGuide.widthAnchor), - contentView.widthAnchor.constraint(equalTo: view.widthAnchor), - - iconView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 15), - iconView.centerXAnchor.constraint(equalTo: contentView.centerXAnchor), - iconView.widthAnchor.constraint(equalToConstant: 100), - iconView.heightAnchor.constraint(equalToConstant: 100), - - titleLabel.topAnchor.constraint(equalTo: iconView.bottomAnchor, constant: 20), - titleLabel.centerXAnchor.constraint(equalTo: contentView.centerXAnchor), - titleLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 15), - titleLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -15), - - descriptionLabel.topAnchor.constraint(equalTo: titleLabel.bottomAnchor, constant: 20), - descriptionLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 15), - descriptionLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -15), - - limitsStackView.topAnchor.constraint(equalTo: descriptionLabel.bottomAnchor, constant: 25), - limitsStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 15), - limitsStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -15), - - limitLabelsStackView.topAnchor.constraint(equalTo: limitsStackView.bottomAnchor, constant: 0), - limitLabelsStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 15), - limitLabelsStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -15), - ]) - - if let text = model?.buttonText { - let onlineAccountHint = UILabel() - onlineAccountHint.translatesAutoresizingMaskIntoConstraints = false - onlineAccountHint.numberOfLines = 0 - onlineAccountHint.lineBreakMode = .byWordWrapping - onlineAccountHint.textAlignment = .center - onlineAccountHint.font = .dw_font(forTextStyle: .body) - onlineAccountHint.textColor = .dw_secondaryText() - onlineAccountHint.text = NSLocalizedString("Withdraw without limits with an online account on CrowdNode website.", comment: "CrowdNode") - scrollView.addSubview(onlineAccountHint) - - let actionButton = UIButton(type: .custom) - actionButton.translatesAutoresizingMaskIntoConstraints = false - actionButton.addTarget(self, action: #selector(actionButtonAction), for: .touchUpInside) - actionButton.tintColor = .dw_dashBlue() - actionButton.setTitleColor(.dw_dashBlue(), for: .normal) - actionButton.titleLabel?.font = .dw_font(forTextStyle: .subheadline).withWeight(UIFont.Weight.bold.rawValue) - actionButton.setTitle(text, for: .normal) - scrollView.addSubview(actionButton) - - NSLayoutConstraint.activate([ - onlineAccountHint.topAnchor.constraint(equalTo: limitLabelsStackView.bottomAnchor, constant: 30), - onlineAccountHint.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 15), - onlineAccountHint.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -15), - - actionButton.topAnchor.constraint(equalTo: onlineAccountHint.bottomAnchor, constant: 15), - actionButton.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 15), - actionButton.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -15), - actionButton.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -15), - actionButton.heightAnchor.constraint(equalToConstant: 58), - ]) - } - } - - private func createLimitText(limit: Int, isHighlighted: Bool) -> UILabel { - let amount = UILabel() - let attachment = NSTextAttachment(); - attachment.image = UIImage(named: "icon_dash_currency") - attachment.bounds = CGRect(x: 5, y: 1, width: 20, height: 16) - let attachmentString = NSAttributedString(attachment: attachment) - let limitString = NSMutableAttributedString(string: String(limit)) - limitString.append(attachmentString) - amount.font = .dw_mediumFont(ofSize: 26) - amount.textAlignment = .center - amount.attributedText = limitString - - if isHighlighted { - amount.textColor = .systemRed - } - - return amount - } - - private func createLimitLabel(label: String, isHighlighted: Bool) -> UILabel { - let limitLabel = UILabel() - limitLabel.font = .dw_regularFont(ofSize: 14) - limitLabel.textColor = .dw_secondaryText() - limitLabel.text = label - limitLabel.textAlignment = .center - if isHighlighted { - limitLabel.textColor = .systemRed - } - - return limitLabel - } -} diff --git a/DashWallet/Sources/UI/CrowdNode/Views/CrowdNodeAPYView.swift b/DashWallet/Sources/UI/CrowdNode/Views/CrowdNodeAPYView.swift deleted file mode 100644 index 3312cb90b1..0000000000 --- a/DashWallet/Sources/UI/CrowdNode/Views/CrowdNodeAPYView.swift +++ /dev/null @@ -1,79 +0,0 @@ -// -// Created by tkhp, Andrei Ashikhmin -// Copyright © 2024 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import UIKit - -class CrowdNodeAPYView: UIView { - - override init(frame: CGRect) { - super.init(frame: frame) - addCrowdNodeAPYLabel() - } - - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override var intrinsicContentSize: CGSize { - return CGSize(width: UIView.noIntrinsicMetric, height: 24.0) - } - - private func addCrowdNodeAPYLabel() { - let systemGreen = UIColor(red: 98.0 / 255.0, green: 182.0 / 255.0, blue: 125.0 / 255.0, alpha: 1.0) - - let apyStackView = UIStackView() - apyStackView.translatesAutoresizingMaskIntoConstraints = false - apyStackView.axis = .horizontal - apyStackView.spacing = 4 - apyStackView.backgroundColor = systemGreen.withAlphaComponent(0.1) - apyStackView.layer.cornerRadius = 6.0 - apyStackView.layer.masksToBounds = true - apyStackView.layoutMargins = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8) - apyStackView.isLayoutMarginsRelativeArrangement = true - addSubview(apyStackView) - - let iconImageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 14, height: 14)) - iconImageView.contentMode = .center - iconImageView.image = UIImage(named: "image.crowdnode.apy") - apyStackView.addArrangedSubview(iconImageView) - - let apiLabel = UILabel() - apiLabel.textColor = systemGreen - apiLabel.font = UIFont.systemFont(ofSize: 11, weight: .semibold) - apiLabel.text = String.localizedStringWithFormat(NSLocalizedString("Current APY = %@", comment: "CrowdNode"), apy) - apyStackView.addArrangedSubview(apiLabel) - - NSLayoutConstraint.activate([ - apyStackView.topAnchor.constraint(equalTo: topAnchor), - apyStackView.bottomAnchor.constraint(equalTo: bottomAnchor), - apyStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - apyStackView.trailingAnchor.constraint(equalTo: trailingAnchor), - apyStackView.heightAnchor.constraint(equalToConstant: 24.0) - ]) - } - - private var apy: String { - let apyValue = CrowdNode.shared.crowdnodeAPY - - let numberFormatter = NumberFormatter() - numberFormatter.numberStyle = .percent - numberFormatter.minimumFractionDigits = 0 - numberFormatter.maximumFractionDigits = 2 - numberFormatter.multiplier = 1 - return numberFormatter.string(from: NSNumber(value: apyValue)) ?? "" - } -} diff --git a/DashWallet/Sources/UI/DashPay/Credits/BuyCreditsViewController.swift b/DashWallet/Sources/UI/DashPay/Credits/BuyCreditsViewController.swift index dcdca4cddb..f3b731ace1 100644 --- a/DashWallet/Sources/UI/DashPay/Credits/BuyCreditsViewController.swift +++ b/DashWallet/Sources/UI/DashPay/Credits/BuyCreditsViewController.swift @@ -140,20 +140,16 @@ final class BuyCreditsViewController: SendAmountViewController, ObservableObject override func actionButtonAction(sender: UIView) { guard validateInputAmount() else { return } - checkLeftoverBalance { [weak self] canContinue in - guard canContinue, let self = self else { return } + showActivityIndicator() - self.showActivityIndicator() - - Task { // TODO: Temp MOCK_DASHPAY - try? await Task.sleep(nanoseconds: 2_000_000_000) - self.hideActivityIndicator() - let dashAmount = self.model.amount.dashAmount.plainAmount - let opAmount = dashAmount / BuyCreditsModel.opCost - BuyCreditsModel.currentCredits += Double(opAmount) * 0.25 - self.dismiss(animated: true) - self.onDismissed?() - } + Task { // TODO: Temp MOCK_DASHPAY + try? await Task.sleep(nanoseconds: 2_000_000_000) + self.hideActivityIndicator() + let dashAmount = self.model.amount.dashAmount.plainAmount + let opAmount = dashAmount / BuyCreditsModel.opCost + BuyCreditsModel.currentCredits += Double(opAmount) * 0.25 + self.dismiss(animated: true) + self.onDismissed?() } } diff --git a/DashWallet/Sources/UI/Explore Dash/ExploreMenuScreen.swift b/DashWallet/Sources/UI/Explore Dash/ExploreMenuScreen.swift index bd7b70bb7a..70b518e152 100644 --- a/DashWallet/Sources/UI/Explore Dash/ExploreMenuScreen.swift +++ b/DashWallet/Sources/UI/Explore Dash/ExploreMenuScreen.swift @@ -28,18 +28,10 @@ struct ExploreMenuScreen: View { private let isTestnetProvider: () -> Bool private let receiveAddressProvider: () -> String? - @ObservedObject private var balanceReminder = CrowdNodeBalanceReminder.shared - @State private var showSyncingAlert = false - var shouldShowGetTestDash: Bool { isTestnetProvider() } - private var hasCrowdNodeAccount: Bool { - let state = CrowdNode.shared.signUpState - return state == .finished || state == .linkedOnline - } - init(vc: UINavigationController, showBackButton: Bool = true, onShowSendPayment: @escaping () -> Void, @@ -119,22 +111,6 @@ struct ExploreMenuScreen: View { ) .frame(minHeight: 56) - if hasCrowdNodeAccount { - MenuItem( - title: NSLocalizedString("Staking", comment: ""), - subtitleView: AnyView( - Text(NSLocalizedString("Easily stake Dash and earn passive income with a few simple clicks", comment: "")) - .font(.footnote) - .foregroundColor(.dash.tertiaryText) - .multilineTextAlignment(.leading) - .frame(maxWidth: .infinity, alignment: .leading) - ), - icon: .custom("image-menu-staking", maxHeight: 30), - iconAlignment: .top, - action: { showStaking() } - ) - .frame(minHeight: 56) - } } .padding(6) .background(Color.dash.secondaryBackground) @@ -142,39 +118,10 @@ struct ExploreMenuScreen: View { .shadow(color: Color.dash.shadow, radius: 20, x: 0, y: 5) .padding(.horizontal, 20) - if balanceReminder.shouldShowOnExplore { - CrowdNodeBalanceReminderBanner { - showCrowdNodeWithdrawal() - } - .padding(.horizontal, 20) - .padding(.top, 20) - } - Spacer() } .background(Color.dash.primaryBackground) .navigationBarHidden(true) - .alert(NSLocalizedString("The chain is syncing…", comment: ""), isPresented: $showSyncingAlert) { - Button(NSLocalizedString("Go to CrowdNode website", comment: "")) { - UIApplication.shared.open(CrowdNodeObjcWrapper.crowdNodeWebsiteUrl(), options: [:], completionHandler: nil) - } - Button(NSLocalizedString("Close", comment: ""), role: .cancel) { } - } message: { - Text(NSLocalizedString("Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up.", comment: "")) - } - } - - @ViewBuilder - private func StakingSubtitle() -> some View { - VStack(alignment: .leading, spacing: 11) { - Text(NSLocalizedString("Easily stake Dash and earn passive income with a few simple clicks", comment: "")) - .font(.footnote) - .foregroundColor(.dash.tertiaryText) - .multilineTextAlignment(.leading) - .frame(maxWidth: .infinity, alignment: .leading) - } - .padding(.top, 2) - .frame(maxWidth: .infinity, alignment: .leading) } private func getTestDashAction() { @@ -242,17 +189,4 @@ struct ExploreMenuScreen: View { atmVC.sellDashHandler = { onShowSendPayment() } vc.pushViewController(atmVC, animated: true) } - - private func showStaking() { - if SyncingActivityMonitor.shared.state == .syncDone { - let stakingVC = CrowdNodeModelObjcWrapper.getRootVC() - vc.pushViewController(stakingVC, animated: true) - } else { - showSyncingAlert = true - } - } - - private func showCrowdNodeWithdrawal() { - CrowdNodeWithdrawalRouter.openWithdrawal(from: vc) - } } diff --git a/DashWallet/Sources/UI/Explore Dash/ExploreViewController.swift b/DashWallet/Sources/UI/Explore Dash/ExploreViewController.swift index ba8f9ad04b..b48e709c5d 100644 --- a/DashWallet/Sources/UI/Explore Dash/ExploreViewController.swift +++ b/DashWallet/Sources/UI/Explore Dash/ExploreViewController.swift @@ -77,9 +77,6 @@ class ExploreViewController: UIViewController, NavigationFullscreenable { contentsView.atmHandler = { [weak self] in self?.showAtms() } - contentsView.stakingHandler = { [weak self] in - self?.showStakingIfSynced() - } let parentView = UIStackView() parentView.translatesAutoresizingMaskIntoConstraints = false @@ -126,38 +123,6 @@ class ExploreViewController: UIViewController, NavigationFullscreenable { navigationController?.pushViewController(vc, animated: true) } - private func showStakingIfSynced() { - if SyncingActivityMonitor.shared.state == .syncDone { - let vc = CrowdNodeModelObjcWrapper.getRootVC() - navigationController?.pushViewController(vc, animated: true) - } else { - notifyChainSyncing() - } - } - - private func notifyChainSyncing() { - let title = NSLocalizedString("The chain is syncing…", comment: "") - let message = NSLocalizedString("Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up.", comment: "") - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - - let websiteAction = UIAlertAction( - title: NSLocalizedString("Go to CrowdNode website", comment: ""), - style: .default - ) { _ in - UIApplication.shared.open(CrowdNodeObjcWrapper.crowdNodeWebsiteUrl(), options: [:], completionHandler: nil) - } - alert.addAction(websiteAction) - - let closeAction = UIAlertAction( - title: NSLocalizedString("Close", comment: ""), - style: .cancel, - handler: nil - ) - alert.addAction(closeAction) - - present(alert, animated: true, completion: nil) - } - // MARK: - Where to Spend private func showWhereToSpendViewController() { diff --git a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetails/GiftCardDetailsView.swift b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetails/GiftCardDetailsView.swift index 3c0e4e08f2..5449b86f94 100644 --- a/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetails/GiftCardDetailsView.swift +++ b/DashWallet/Sources/UI/Explore Dash/Views/DashSpend/GiftCardDetails/GiftCardDetailsView.swift @@ -190,7 +190,7 @@ struct GiftCardDetailsView: View { UIPasteboard.general.string = value UINotificationFeedbackGenerator().notificationOccurred(.success) - // Show the same "Copied" HUD used elsewhere (Receive, CrowdNode) over the topmost + // Show the same "Copied" HUD used elsewhere (Receive) over the topmost // controller so it appears above this gift card sheet. let windowScene = UIApplication.shared.connectedScenes .compactMap { $0 as? UIWindowScene } diff --git a/DashWallet/Sources/UI/Explore Dash/Views/ExploreContentsView.swift b/DashWallet/Sources/UI/Explore Dash/Views/ExploreContentsView.swift index 2db5686adc..1f12e99b10 100644 --- a/DashWallet/Sources/UI/Explore Dash/Views/ExploreContentsView.swift +++ b/DashWallet/Sources/UI/Explore Dash/Views/ExploreContentsView.swift @@ -22,7 +22,6 @@ class ExploreContentsView: UIView { var getTestDashHandler: (() -> Void)? var whereToSpendHandler: (() -> Void)? var atmHandler: (() -> Void)? - var stakingHandler: (() -> Void)? override init(frame: CGRect) { super.init(frame: frame) @@ -93,16 +92,6 @@ class ExploreContentsView: UIView { } buttonsStackView.addArrangedSubview(atmItem) - let cnItem = createItem( - image: UIImage(named: "image.explore.dash.staking"), - title: NSLocalizedString("Staking", comment: ""), - subtitle: NSLocalizedString("Easily stake Dash and earn passive income with a few simple clicks.", comment: "") - ) { [weak self] in - self?.stakingHandler?() - } - cnItem.addContent(CrowdNodeAPYView(frame: .zero)) - buttonsStackView.addArrangedSubview(cnItem) - let verticalPadding: CGFloat = 10 NSLayoutConstraint.activate([ diff --git a/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift b/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift index f1979b1168..8228b3aed7 100644 --- a/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift +++ b/DashWallet/Sources/UI/Home/HomeViewController+Shortcuts.swift @@ -64,8 +64,6 @@ extension HomeViewController: DWLocalCurrencyViewControllerDelegate { showAtmList() case .sendToContact: showSendToContact() - case .crowdNode: - showCrowdNode() case .coinbase: showCoinbase() case .uphold: @@ -318,20 +316,6 @@ extension HomeViewController: DWLocalCurrencyViewControllerDelegate { #endif } - private func showCrowdNode() { - if SyncingActivityMonitor.shared.state == .syncDone { - let controller = CrowdNodeModelObjcWrapper.getRootVC() - let navigationController = BaseNavigationController(rootViewController: controller) - present(navigationController, animated: true, completion: nil) - } else { - let title = NSLocalizedString("The chain is syncing…", comment: "") - let message = NSLocalizedString("Wait until the chain is fully synced before using CrowdNode.", comment: "") - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: NSLocalizedString("OK", comment: ""), style: .default)) - present(alert, animated: true) - } - } - private func showCoinbase() { AuthenticationService.shared.authenticate(withPrompt: nil, usingBiometricAuthentication: DWGlobalOptions.sharedInstance().biometricAuthEnabled, alertIfLockout: true) { [weak self] authenticated, _, _ in guard authenticated else { return } diff --git a/DashWallet/Sources/UI/Home/HomeViewController.swift b/DashWallet/Sources/UI/Home/HomeViewController.swift index 4b5670b838..0774553312 100644 --- a/DashWallet/Sources/UI/Home/HomeViewController.swift +++ b/DashWallet/Sources/UI/Home/HomeViewController.swift @@ -34,10 +34,6 @@ protocol HomeViewControllerDelegate: AnyObject { class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { private var cancellableBag = Set() - private var isSyncObserverRegistered = false - private var pendingCrowdNodeReminder = false - private var isCrowdNodeReminderRetryScheduled = false - private weak var crowdNodeBalanceReminderController: UIViewController? var model: DWHomeProtocol! var viewModel: HomeViewModel! private var homeView: HomeView! @@ -66,9 +62,6 @@ class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { } deinit { - if isSyncObserverRegistered { - SyncingActivityMonitor.shared.remove(observer: self) - } print("☠️ \(String(describing: self))") } @@ -85,7 +78,6 @@ class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { assert(model != nil) - registerSyncObserverIfNeeded() setupView() performJailbreakCheck() configureObservers() @@ -143,8 +135,6 @@ class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { showWalletBackupReminderIfNeeded() model.registerForPushNotifications() - model.checkCrowdNodeState() - presentCrowdNodeBalanceReminderIfNeeded() } @@ -323,148 +313,8 @@ class HomeViewController: DWBasePayViewController, NavigationBarDisplayable { self?.viewModel.reclassifyTransactionShown(isShown: true) } .store(in: &cancellableBag) - - CrowdNodeBalanceReminder.shared.$hasBalance - .removeDuplicates() - .receive(on: DispatchQueue.main) - .sink { [weak self] hasBalance in - guard let self = self else { return } - - if hasBalance { - self.presentCrowdNodeBalanceReminderIfNeeded() - } else { - self.pendingCrowdNodeReminder = false - self.dismissCrowdNodeBalanceReminder(markDismissed: false, animated: true) - } - } - .store(in: &cancellableBag) - } - - private func registerSyncObserverIfNeeded() { - guard !isSyncObserverRegistered else { return } - - SyncingActivityMonitor.shared.add(observer: self) - isSyncObserverRegistered = true - } - - private func presentCrowdNodeBalanceReminderIfNeeded() { - guard isViewLoaded else { return } - guard SyncingActivityMonitor.shared.state == .syncDone else { return } - guard CrowdNodeBalanceReminder.shared.shouldShowOnActiveScreen else { - pendingCrowdNodeReminder = false - return - } - guard crowdNodeBalanceReminderController == nil else { - pendingCrowdNodeReminder = false - return - } - // Present on whatever view is currently active (any tab / pushed screen), not just Home. - // The sync observer fires even when Home isn't the visible tab, so `self` may be off-screen. - // - // The top controller may itself be a dialog — the PIN prompt (DSRequestPinViewController) - // is a DWAlertController and reports no presentedViewController of its own, so presenting - // over it would pass the check. Stacking on top of the PIN breaks its dismissal and lets - // its completion fire twice, which trips NSParameterAssert(completion) in DashSync. - guard let presenter = activeTopViewController(), - presenter.presentedViewController == nil, - !(presenter is UIAlertController), - !(presenter is DWAlertController) else { - pendingCrowdNodeReminder = true - scheduleCrowdNodeReminderRetryIfNeeded() - return - } - - let bottomSheet = DashUIKit.BottomSheet(showBackButton: .constant(false), fillsHeight: false) { - CrowdNodeBalanceReminderSheet( - onWithdraw: { [weak self] in - self?.openCrowdNodeWithdrawalFromReminder() - }, - onDismiss: { [weak self] in - self?.dismissCrowdNodeBalanceReminder(markDismissed: true, animated: true) - } - ) - } - - let hostingController = UIHostingController(rootView: bottomSheet) - hostingController.modalPresentationStyle = .pageSheet - hostingController.presentationController?.delegate = self - // Fill the whole sheet (incl. the bottom safe-area strip) with the sheet background. - hostingController.view.backgroundColor = UIColor(Color.dash.primaryBackground) - - if let sheetPC = hostingController.sheetPresentationController { - sheetPC.prefersGrabberVisible = false - // Custom corner radius only below iOS 26; iOS 26+ keeps the native sheet styling. - if #unavailable(iOS 26.0) { - sheetPC.preferredCornerRadius = 24 - } - - // SwiftUI's `.presentationDetents` (used by `.selfSizingSheet()`) does NOT bridge to a - // UIHostingController presented via UIKit `present()` — UIKit would fall back to `.large`. - // So size the sheet to its content here with a custom UIKit detent. - if #available(iOS 16.0, *) { - let width = presenter.view.bounds.width - let bottomInset = presenter.view.window?.safeAreaInsets.bottom ?? 0 - let contentHeight = hostingController - .sizeThatFits(in: CGSize(width: width, height: .greatestFiniteMagnitude)) - .height - sheetPC.detents = [.custom { context in - min(contentHeight + bottomInset, context.maximumDetentValue) - }] - } else { - sheetPC.detents = [.medium()] - } - } - - pendingCrowdNodeReminder = false - crowdNodeBalanceReminderController = hostingController - // Show at most once per session — don't re-present on subsequent HomeView appearances. - CrowdNodeBalanceReminder.shared.markActiveScreenReminderShown() - presenter.present(hostingController, animated: true) } - /// The active tab's top-most controller. Resolves via the tab-bar ancestor, which stays - /// reachable even when Home isn't the selected tab (so the reminder can appear anywhere). - private func activeTopViewController() -> UIViewController? { - (tabBarController ?? view.window?.rootViewController)?.topController() - } - - private func dismissCrowdNodeBalanceReminder(markDismissed: Bool, animated: Bool, completion: (() -> Void)? = nil) { - pendingCrowdNodeReminder = false - - if markDismissed { - CrowdNodeBalanceReminder.shared.dismissActiveScreenReminder() - } - - guard let controller = crowdNodeBalanceReminderController else { - completion?() - return - } - - crowdNodeBalanceReminderController = nil - controller.dismiss(animated: animated, completion: completion) - } - - private func openCrowdNodeWithdrawalFromReminder() { - dismissCrowdNodeBalanceReminder(markDismissed: false, animated: true) { [weak self] in - guard let self = self, let presenter = self.activeTopViewController() else { return } - CrowdNodeWithdrawalRouter.openWithdrawal(from: presenter) - } - } - - private func scheduleCrowdNodeReminderRetryIfNeeded() { - guard pendingCrowdNodeReminder, !isCrowdNodeReminderRetryScheduled else { return } - - isCrowdNodeReminderRetryScheduled = true - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { [weak self] in - guard let self = self else { return } - - self.isCrowdNodeReminderRetryScheduled = false - guard self.pendingCrowdNodeReminder else { return } - - self.presentCrowdNodeBalanceReminderIfNeeded() - } - } - private func showTimeSkewDialog(diffSeconds: Int64, coinjoin: Bool) { let settingsURL = URL(string: UIApplication.openSettingsURLString) let hasSettings = settingsURL != nil && UIApplication.shared.canOpenURL(settingsURL!) @@ -738,25 +588,3 @@ extension HomeViewController: ShortcutsActionDelegate { } } -// MARK: - SyncingActivityMonitorObserver - -extension HomeViewController: SyncingActivityMonitorObserver { - func syncingActivityMonitorProgressDidChange(_ progress: Double) { - // pass - } - - func syncingActivityMonitorStateDidChange(previousState: SyncingActivityMonitor.State, state: SyncingActivityMonitor.State) { - if state == .syncDone { - presentCrowdNodeBalanceReminderIfNeeded() - } - } -} - -extension HomeViewController: UIAdaptivePresentationControllerDelegate { - func presentationControllerDidDismiss(_ presentationController: UIPresentationController) { - guard presentationController.presentedViewController === crowdNodeBalanceReminderController else { return } - - crowdNodeBalanceReminderController = nil - CrowdNodeBalanceReminder.shared.dismissActiveScreenReminder() - } -} diff --git a/DashWallet/Sources/UI/Home/Models/DWHomeModel.m b/DashWallet/Sources/UI/Home/Models/DWHomeModel.m index 3acd3d6c71..5bd29eb956 100644 --- a/DashWallet/Sources/UI/Home/Models/DWHomeModel.m +++ b/DashWallet/Sources/UI/Home/Models/DWHomeModel.m @@ -89,10 +89,6 @@ - (instancetype)init { selector:@selector(fiatCurrencyDidChangeNotification) name:DWApp.fiatCurrencyDidChangeNotification object:nil]; - [notificationCenter addObserver:self - selector:@selector(appDidUnlockNotification) - name:DWAppDidUnlockNotification - object:nil]; NSDate *date = [NSDate new]; [[DWGlobalOptions sharedInstance] setActivationDateForReclassifyYourTransactionsFlowIfNeeded:date]; @@ -168,32 +164,6 @@ - (void)walletDidWipe { #endif /* DASHPAY_ENABLED */ } -- (void)checkCrowdNodeState { - if (SyncingActivityMonitor.shared.state == SyncingActivityMonitorStateSyncDone) { - [CrowdNodeObjcWrapper restoreState]; - - if ([CrowdNodeObjcWrapper isInterrupted]) { - DWAuthenticationService *authManager = [DWAuthenticationService shared]; - // Mirrors the didAuthenticate / lockScreenDisabled reads of - // -[DWRootModel shouldShowLockScreen]: before the first unlock the - // lock screen is (or is about to be) up, and the signup resume's - // PIN gate must never stack a prompt on top of it. The deferred - // resume re-runs via DWAppDidUnlockNotification below. - BOOL awaitingFirstUnlock = authManager.usesAuthentication && !authManager.didAuthenticate && ![[DWGlobalOptions sharedInstance] lockScreenDisabled]; - if (awaitingFirstUnlock) { - return; - } - - // Continue signup - [CrowdNodeObjcWrapper continueInterrupted]; - } - } -} - -- (void)appDidUnlockNotification { - [self checkCrowdNodeState]; -} - #pragma mark - DWDashPayReadyProtocol #if DASHPAY @@ -253,8 +223,6 @@ - (void)syncingActivityMonitorStateDidChangeWithPreviousState:(enum SyncingActiv // Row #18: contact syncing is owned by the SDK DashPay sync loop. #endif } - - [self checkCrowdNodeState]; } [self.receiveModel updateReceivingInfo]; diff --git a/DashWallet/Sources/UI/Home/Protocols/DWHomeProtocol.h b/DashWallet/Sources/UI/Home/Protocols/DWHomeProtocol.h index 8f7eaba452..0f259656f6 100644 --- a/DashWallet/Sources/UI/Home/Protocols/DWHomeProtocol.h +++ b/DashWallet/Sources/UI/Home/Protocols/DWHomeProtocol.h @@ -51,7 +51,6 @@ NS_ASSUME_NONNULL_BEGIN - (void)walletDidWipe; - (void)retrySyncing; -- (void)checkCrowdNodeState; @end diff --git a/DashWallet/Sources/UI/Home/Views/HomeView.swift b/DashWallet/Sources/UI/Home/Views/HomeView.swift index 82427437e4..e48b35dc20 100644 --- a/DashWallet/Sources/UI/Home/Views/HomeView.swift +++ b/DashWallet/Sources/UI/Home/Views/HomeView.swift @@ -837,19 +837,6 @@ struct HomeViewContent: View { txItem txDataItem: TransactionListDataItem ) -> some View { switch txDataItem { - case .crowdnode(let set): - let firstTx = set.transactionMap.values.first - DashUIKit.TransactionView( - icon: IconName.custom("tx.item.cn.icon").dashIconSource, - topText: String.localizedStringWithFormat(NSLocalizedString("%d transaction(s)", comment: "#bc-ignore!"), set.transactionMap.count), - title: NSLocalizedString("CrowdNode · Account", comment: "Crowdnode"), - subtitle: firstTx?.shortTimeString ?? "", - dashAmount: set.amount, - amountSign: .none - ) - .onTapGesture { self.selectedTxDataItem = txDataItem } - .frame(height: 80) - case .coinjoin(let set): let firstTx = set.transactionMap.values.first DashUIKit.TransactionView( @@ -1189,14 +1176,6 @@ struct TransactionDetailsSheet: View { from txDataItem: TransactionListDataItem ) -> some View { switch txDataItem { - case .crowdnode(let set): - GroupedTransactionsScreen( - model: set, - backNavigationRequested: $backNavigationRequested, - onShowBackButton: { show in - showBackButton = show - } - ) case .coinjoin(let set): GroupedTransactionsScreen( model: set, diff --git a/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift b/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift index cad368b94c..b895ea9460 100644 --- a/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift +++ b/DashWallet/Sources/UI/Home/Views/HomeViewModel.swift @@ -72,7 +72,6 @@ class HomeViewModel: ObservableObject { private let transactionSource: TransactionSource private var txByHash: [String: TransactionListDataItem] = [:] - private var crowdNodeTxSet = FullCrowdNodeSignUpTxSet() private var coinJoinTxSets: [String: CoinJoinMixingTxSet] = [:] // Grouped by date private var coinJoinWithdrawalSet = CoinJoinWithdrawalTxSet() // Single combined "CoinJoin Withdrawals" group (app's sweep tx) private var metadataProviders: [MetadataProvider] = [] @@ -364,14 +363,13 @@ class HomeViewModel: ObservableObject { private func clearCachedData() { DWLogger.log("HomeViewModel: Network changed, clearing cached transaction data") - // Dispatch to self.queue to ensure thread-safe access to txByHash, crowdNodeTxSet, coinJoinTxSets + // Dispatch to self.queue to ensure thread-safe access to txByHash, coinJoinTxSets // These properties are also accessed/modified in reloadTxDataSource() on self.queue self.queue.async { [weak self] in guard let self = self else { return } // Clear cached data structures on the same queue they're accessed self.txByHash.removeAll() - self.crowdNodeTxSet = FullCrowdNodeSignUpTxSet() self.coinJoinTxSets.removeAll() self.windowTxs.removeAll() self.windowOldestDayStart = 0 @@ -590,8 +588,7 @@ class HomeViewModel: ObservableObject { // Read main-actor state BEFORE handing off, never from inside the // worker pass. A `DispatchQueue.main.sync` from the queue is a barrier // whose cost is main-thread *availability*, not work: at launch the - // main thread is busy with tab-bar layout, avatar state and CrowdNode - // restore, so a reload that hops mid-pass inherits all of it. Hopping + // main thread is busy with tab-bar layout and avatar state, so a reload that hops mid-pass inherits all of it. Hopping // once up front, asynchronously, keeps the pass free-running. let dispatch = { @MainActor [weak self] in guard let self else { return } @@ -857,7 +854,6 @@ class HomeViewModel: ObservableObject { // row that resolves once that day is paged in. let shieldedItems = SwiftDashSDKWalletSource.fetchShieldedActivity( coreTransactions: transactions) - self.crowdNodeTxSet = FullCrowdNodeSignUpTxSet() self.coinJoinTxSets = [:] self.coinJoinWithdrawalSet = CoinJoinWithdrawalTxSet() @@ -881,12 +877,6 @@ class HomeViewModel: ObservableObject { return nil } - // TODO(crowdnode-home-grouping): the "CrowdNode · Account" group - // needs decode-based ObservedTransaction matching (the SDK - // snapshot here doesn't carry transactionData); ports separately. - // Until then CrowdNode txs render as individual rows — the - // current behavior (the old DS-backed grouping branch was dead - // long before the .ds source case was deleted). if wrappedTx.isCoinJoinMixing { // CoinJoin mixing tx — group it into the per-day // "Mixing Transactions" set. @@ -920,12 +910,6 @@ class HomeViewModel: ObservableObject { self.txByHash[item.id] = item } - if !crowdNodeTxSet.transactionMap.isEmpty { - let item: TransactionListDataItem = .crowdnode(crowdNodeTxSet) - items.append(item) - self.txByHash[FullCrowdNodeSignUpTxSet.id] = item - } - for (_, coinJoinTxSet) in self.coinJoinTxSets { if !coinJoinTxSet.transactionMap.isEmpty { let item: TransactionListDataItem = .coinjoin(coinJoinTxSet) @@ -1147,12 +1131,8 @@ class HomeViewModel: ObservableObject { let txItem: TransactionListDataItem = .tx(tx, resolveMetadata(for: tx.txHashData)) let newDateKey = DWDateFormatter.sharedInstance.dateOnly(from: tx.date) - // TODO(crowdnode-home-grouping): the CrowdNode absorb-into-group - // branch that lived here was dead (it was fed by DashSync's - // DSTransactionManagerTransactionStatusDidChange, which no longer - // fires post-M6) and was removed with the CrowdNode tracking port. - // Today this path is fed by the metadata-provider refresh below - // (gift-card / custom-icon updates re-rendering an existing row). + // Fed by the metadata-provider refresh below (gift-card / + // custom-icon updates re-rendering an existing row). if let existingItem = self.txByHash[itemId] { // Updating existing item @@ -1654,8 +1634,10 @@ extension HomeViewModel { guard let self else { return } let canSwitchWallet = MainActor.assumeIsolated { WalletsViewModel.switchableWalletCount > 1 } let hasEvonodes = MainActor.assumeIsolated { !EvonodeEpochBlocksMonitor.activeEvonodeProTxHashes().isEmpty } - let items = customShortcuts.compactMap { number -> ShortcutAction? in - guard var type = ShortcutActionType(rawValue: number.intValue) else { return nil } + let saved = ShortcutActionType.replacingRetired(in: customShortcuts.map(\.intValue), + isTestnet: isTestnet) + let items = saved.compactMap { rawValue -> ShortcutAction? in + guard var type = ShortcutActionType(rawValue: rawValue) else { return nil } // A faucet shortcut saved on testnet degrades to Spend // after a switch to mainnet (no mainnet faucet exists); // the saved config is untouched, so it comes back when @@ -1686,15 +1668,6 @@ extension HomeViewModel { } return ShortcutAction(type: type) } - .filter { action in - // A saved CrowdNode shortcut stays hidden until the user - // has actually signed up. - if action.type == .crowdNode { - let state = CrowdNode.shared.signUpState - return state == .finished || state == .linkedOnline - } - return true - } if items.count == maxShortcutsCount { self.shortcutItems = items } else { diff --git a/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift b/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift index e9508c9dd3..07c67900fe 100644 --- a/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift +++ b/DashWallet/Sources/UI/Home/Views/Shortcuts/Models/ShortcutAction.swift @@ -38,27 +38,55 @@ enum ShortcutActionType: Int { case send case atm case sendToContact - case crowdNode - case coinbase - case uphold - case topper - // Appended last: raw values persist in DWGlobalOptions.shortcuts, - // so inserting mid-enum would silently remap saved configurations. - case getTestDash - case switchWallet - case dashDEX + // Raw values persist in DWGlobalOptions.shortcuts, so every case below + // is pinned. 18 is retired and must never be reused: saved bars may + // still hold it, and `HomeViewModel` maps it to a live action on load. + case coinbase = 19 + case uphold = 20 + case topper = 21 + // Appended last: inserting mid-enum would silently remap saved + // configurations. + case getTestDash = 22 + case switchWallet = 23 + case dashDEX = 24 /// Evonode owners: epoch day + blocks proposed this epoch, opens the /// masternode list. Opt-in only — offered in the customization picker /// while the wallet has active evonodes, never placed by default. - case nodes + case nodes = 25 +} + +extension ShortcutActionType { + /// The raw value of a retired shortcut that saved bars may still hold. + static let retiredRawValue = 18 + + /// A saved bar with each retired entry replaced by the first action of + /// `retiredReplacements` the bar doesn't hold yet, so the bar keeps its + /// size and its other buttons without gaining a duplicate. + static func replacingRetired(in rawValues: [Int], isTestnet: Bool) -> [Int] { + var result = rawValues + for index in result.indices where result[index] == retiredRawValue { + let candidates = [isTestnet ? ShortcutActionType.getTestDash : .spend] + retiredReplacements + if let replacement = candidates.first(where: { !result.contains($0.rawValue) }) { + result[index] = replacement.rawValue + } + } + return result + } + + /// Fallbacks for a retired entry after Spend (the faucet on testnet), + /// all offered on every network. + private static let retiredReplacements: [ShortcutActionType] = [ + .explore, .receive, .send, .scanToPay, .payToAddress, .buySellDash, .atm, + ] } extension ShortcutActionType { /// The features available for shortcut bar customization. Computed - /// (not stored) because three entries follow runtime state: CrowdNode - /// appears only once the user is signed up, the faucet only while the - /// wallet is on testnet, and Switch Wallet only while the current - /// network has more than one wallet to switch among. + /// (not stored) because entries follow runtime state: Dash DEX appears + /// only on a configured mainnet, the faucet only while the wallet is on + /// testnet, Switch Wallet only while the current network has more than + /// one wallet to switch among, and Nodes only while the wallet runs + /// evonodes. @MainActor static var customizableActions: [ShortcutActionType] { var actions: [ShortcutActionType] = [ @@ -71,10 +99,6 @@ extension ShortcutActionType { if WalletEnvironment.isMainnet && SwapKitConstants.isConfigured { actions.append(.dashDEX) } - let state = CrowdNode.shared.signUpState - if state == .finished || state == .linkedOnline { - actions.append(.crowdNode) - } if WalletEnvironment.isTestnet { actions.insert(.getTestDash, at: 0) } @@ -123,8 +147,6 @@ extension ShortcutActionType { return "shortcut-bar-atm" case .sendToContact: return "shortcut-bar-send-contact" - case .crowdNode: - return "shortcut-bar-crowdnode" case .coinbase: return "shortcut-bar-coinbase" case .uphold: @@ -192,8 +214,6 @@ extension ShortcutActionType { return NSLocalizedString("ATM", comment: "Translate it as short as possible! (24 symbols max)") case .sendToContact: return NSLocalizedString("Send to Contact", comment: "Translate it as short as possible! (24 symbols max)") - case .crowdNode: - return NSLocalizedString("CrowdNode", comment: "Translate it as short as possible! (24 symbols max)") case .coinbase: return NSLocalizedString("Coinbase", comment: "Translate it as short as possible! (24 symbols max)") case .uphold: diff --git a/DashWallet/Sources/UI/Home/Views/TransactionListDataItem.swift b/DashWallet/Sources/UI/Home/Views/TransactionListDataItem.swift index c2d1725351..b90d3d66cc 100644 --- a/DashWallet/Sources/UI/Home/Views/TransactionListDataItem.swift +++ b/DashWallet/Sources/UI/Home/Views/TransactionListDataItem.swift @@ -31,7 +31,6 @@ enum TransactionListDataItem { case tx(Transaction, TxRowMetadata?) case shieldedActivity(ShieldedActivityItem) case platformActivity(PlatformAddressActivityItem) - case crowdnode(FullCrowdNodeSignUpTxSet) case coinjoin(CoinJoinMixingTxSet) case coinjoinWithdrawal(CoinJoinWithdrawalTxSet) /// A Buy swap order whose deposit is on record and whose Dash transaction is not in the @@ -42,8 +41,6 @@ enum TransactionListDataItem { extension TransactionListDataItem: Identifiable { var id: String { switch self { - case .crowdnode(_): - return FullCrowdNodeSignUpTxSet.id case .coinjoin(let set): return set.id case .coinjoinWithdrawal(let set): @@ -61,8 +58,6 @@ extension TransactionListDataItem: Identifiable { var date: Date { switch self { - case .crowdnode(let set): - return set.transactionMap.values.first!.date case .coinjoin(let set): return set.groupDay case .coinjoinWithdrawal(let set): diff --git a/DashWallet/Sources/UI/Onboarding/Stubs/DWHomeModelStub.m b/DashWallet/Sources/UI/Onboarding/Stubs/DWHomeModelStub.m index 685360beab..6d8ca6858a 100644 --- a/DashWallet/Sources/UI/Onboarding/Stubs/DWHomeModelStub.m +++ b/DashWallet/Sources/UI/Onboarding/Stubs/DWHomeModelStub.m @@ -74,9 +74,6 @@ - (BOOL)isWalletEmpty { - (void)retrySyncing { } -- (void)checkCrowdNodeState { -} - - (void)registerForPushNotifications { } diff --git a/DashWallet/Sources/UI/Payment Controller/Enter Amount/ProvideAmountViewController.swift b/DashWallet/Sources/UI/Payment Controller/Enter Amount/ProvideAmountViewController.swift index 1c754dff3a..df990f5b08 100644 --- a/DashWallet/Sources/UI/Payment Controller/Enter Amount/ProvideAmountViewController.swift +++ b/DashWallet/Sources/UI/Payment Controller/Enter Amount/ProvideAmountViewController.swift @@ -51,26 +51,16 @@ final class ProvideAmountViewController: SendAmountViewController { override func actionButtonAction(sender: UIView) { guard validateInputAmount() else { return } - // Cheap rejection before the leftover-balance alert: no reason to ask - // the user to confirm emptying their wallet for an amount that cannot - // be funded anyway. + // This is the last statement before the amount leaves the screen, so + // this is where affordability has to be settled. guard amountIsStillAffordable() else { return } - checkLeftoverBalance { [weak self] canContinue in - guard canContinue, let wSelf = self else { return } - // ...and again here, because `checkLeftoverBalance` presents its own - // Continue/Cancel alert and the ceiling can drop while that alert is - // open. This is the last statement before the amount leaves the - // screen, so this is where affordability has to be settled. - guard wSelf.amountIsStillAffordable() else { return } + showActivityIndicator() + let paymentCurrency: DWPaymentCurrency = sendAmountModel.activeAmountType == .main ? .dash : .fiat + DWGlobalOptions.sharedInstance().selectedPaymentCurrency = paymentCurrency - wSelf.showActivityIndicator() - let paymentCurrency: DWPaymentCurrency = wSelf.sendAmountModel.activeAmountType == .main ? .dash : .fiat - DWGlobalOptions.sharedInstance().selectedPaymentCurrency = paymentCurrency - - wSelf.delegate?.provideAmountViewControllerDidInput(amount: wSelf.model.amount.plainAmount, - selectedCurrency: wSelf.model.supplementaryCurrencyCode) - } + delegate?.provideAmountViewControllerDidInput(amount: model.amount.plainAmount, + selectedCurrency: model.supplementaryCurrencyCode) } /// Whether the entered amount is still within what the funding pool can diff --git a/DashWallet/Sources/UI/Payments/Amount/SendAmountViewController.swift b/DashWallet/Sources/UI/Payments/Amount/SendAmountViewController.swift index 5e7f5cc02b..b20dbcdb17 100644 --- a/DashWallet/Sources/UI/Payments/Amount/SendAmountViewController.swift +++ b/DashWallet/Sources/UI/Payments/Amount/SendAmountViewController.swift @@ -63,35 +63,4 @@ class SendAmountViewController: BaseAmountViewController, SendAmountFlowSupporti required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } - - internal func checkLeftoverBalance(isCrowdNodeTransfer: Bool = false, completion: @escaping ((Bool) -> Void)) { - if CrowdNodeDefaults.shared.lastKnownBalance <= 0 && !isCrowdNodeTransfer { - // If CrowdNode balance is 0, then there is no need to check the leftover balance - completion(true) - return - } - - // If CrowdNode balance isn't empty and the user sends DASH somewhere, - // or if the user is making a CrowdNode deposit, then we need to check the leftover balance - - let allAvailableFunds = SwiftDashSDKWalletState.shared.balance?.spendable ?? 0 - - if model.amount.plainAmount + CrowdNode.minimumLeftoverBalance > allAvailableFunds { - let title = NSLocalizedString("Looks like you are emptying your Dash Wallet", comment: "Leftover balance warning") - let message = String - .localizedStringWithFormat(NSLocalizedString("Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash.", - comment: "Leftover balance warning"), - CrowdNode.minimumLeftoverBalance.formattedDashAmountWithoutCurrencySymbol) - let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) - alert.addAction(UIAlertAction(title: NSLocalizedString("Continue", comment: "Leftover balance warning"), style: .default, handler: { _ in - completion(true) - })) - alert.addAction(UIAlertAction(title: NSLocalizedString("Cancel", comment: "Leftover balance warning"), style: .cancel, handler: { _ in - completion(false) - })) - present(alert, animated: true, completion: nil) - } else { - completion(true) - } - } } diff --git a/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift b/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift index b5d658f1a9..22c0b0b293 100644 --- a/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift +++ b/DashWallet/Sources/UI/SwiftUI Components/Dialogs/ModalDialog.swift @@ -96,8 +96,6 @@ struct ModalDialog: View { .padding(.top, 1) } - // TODO: content for limits (crowdnode) - if let text = smallButtonText { DashButton( text: text, diff --git a/DashWallet/Sources/UI/CrowdNode/Tx Details/GroupedTransactionsScreen.swift b/DashWallet/Sources/UI/Tx/Details/GroupedTransactionsScreen.swift similarity index 100% rename from DashWallet/Sources/UI/CrowdNode/Tx Details/GroupedTransactionsScreen.swift rename to DashWallet/Sources/UI/Tx/Details/GroupedTransactionsScreen.swift diff --git a/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift b/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift index e8cc7aa81b..da42729428 100644 --- a/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift +++ b/DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift @@ -234,9 +234,7 @@ extension UINavigationController { /// Replaces the last `n` controllers with `controller`, dropping the whole /// stack when `n` exceeds it. Callers count the screens their own flow - /// pushed, but the same screen can be reached with a shallower stack — - /// CrowdNode opens on whichever controller matches the account state, so - /// its flows can start one or two levels below what the caller assumed — + /// pushed, but the same screen can be reached with a shallower stack, /// and `removeLast` traps rather than throwing when `n` is too large. func replaceLast(_ n: Int = 1, with controller: UIViewController, animated: Bool = true) { var viewControllers = viewControllers diff --git a/DashWallet/ar.lproj/Localizable.strings b/DashWallet/ar.lproj/Localizable.strings index 5e7645e130..5b689c5503 100644 --- a/DashWallet/ar.lproj/Localizable.strings +++ b/DashWallet/ar.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " أو "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "تم عرض %1$@ للبيع مقابل %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "يجيب إضافة رقم مرور الجهاز لحماية محفظتك. انتقل إلى الإعدادات وشغِّل رقم المرور للمتابعة"; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "قبول شروط الاستخدام ..."; - -/* CrowdNode */ -"Account Recovery" = "استرجاع الحساب"; - /* Masternode status */ "Active" = "نشط"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "سيتم إجراء جميع عمليات النقل من وإلى CrowdNode من هذا الجهاز باستخدام عنوان Dash أدناه من هذا الجهاز."; - /* ZenLedger */ "Allow" = "السماح"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "النسخ الاحتياطية"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "نسخة احتياطية من عبارة المرور"; - /* A noun. Used as a title. */ "Backup Wallet" = "نسخ احتياطي للمحفظة"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "قم بعمل نسخة احتياطية من عبارة مرورك لإنشاء حساب CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "نسخة احتياطية من عبارة الاسترداد الخاصة بك"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "رصيد"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "الرصيد بعد ذلك"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "الأرصدة والتحويلات ليست مرئية للعامة"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "كن جزءًا من Dash Masternode مع CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "أغلق وأبلغ عند الانتهاء"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "تم الاتصال"; -/* CrowdNode */ -"Connected Dash address" = "عنوان داش متصل"; - /* SPV sync */ "Connected peers" = "الأقران المتصلون"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "إنشاء حساب"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "قم بإنشاء حساب CrowdNode عبر الإنترنت"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "إنشاء حساب على الإنترنت"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "الأرصدة"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "فوائد CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "دعم CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "يستخدم CrowdNode هذا العنوان باعتباره معرف حسابك. ستفقد الوصول إلى أموالك داخل هذه المحفظة وحساب CrowdNode الخاص بك إذا فقدت عبارة المرور المرتبطة بهذا العنوان."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "حدود السحب CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "تصدير CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "عنوان داش"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "رصيد داش"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "تاريخ"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "مرفوض"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "إيداع"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "تم إرسال الإيداع"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "مسار الاشتقاق"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "جارٍ الإسقاط…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "نظرًا لشروط خدمة CrowdNode ، لا يمكن للمستخدمين سحب أكثر من:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "على سبيل المثال johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "قم بستاك داش بسهولة واكسب دخلًا سلبيًا ببضع نقرات بسيطة."; - /* SPV diagnostics */ "Edit birth height" = "تعديل ارتفاع البداية"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "البريد الإلكتروني"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "من CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "من Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "تم نقل الأموال"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "احصل على مكافآت من الودائع في Dash Masternodes بأقل من 0.5 داش."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "استعد للانضمام إلى DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "احصل على المكافآت على الفور"; - /* No comment provided by engineer. */ "Get Started" = "البدء"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "الشروع في العمل مع CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "كرت هدية"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "انتقل إلى موقع CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "اذهب الى الموقع"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "الارتفاع %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "كيف يعمل CrowdNode Staking"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "ما مدى خصوصية DashPay؟"; -/* CrowdNode */ -"How to confirm your API Dash address" = "كيفية تأكيد عنوان API Dash الخاص بك"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "أقبل أنني سأفقد عملاتي إذا لم أعد أمتلك كلمة الإستراد"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "إذا فقدت عبارة مرورك في أي وقت ، فيمكنك إثبات هويتك بوسائل أخرى لاستعادة الوصول إلى أموال CrowdNode الخاصة بك."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "إذا فقدت عبارة مرورك لهذه المحفظة وفقدت هذا الجهاز أو ألغيت تثبيت Dash Wallet ، فستفقد إمكانية الوصول إلى أموالك على CrowdNode والأموال الموجودة في هذه المحفظة."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "إذا كنت لا تزال ترغب في مسحها ، فيرجى إدخال: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "تحت المعالجة…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "معلومات حول حسابك على الإنترنت"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "تم النقل الداخلي إلى"; -/* CrowdNode */ -"Introducing Staking" = "نقدم لكم ستاكنج"; - /* Invalid transaction */ "Invalid" = "غير صالحة"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "قد يستغرق تحديث رصيدك دقيقة."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "قد يستغرق وصول أموالك دقيقة."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "الانضمام إلى المجموعة"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "أبقِ هذه العملات خاصة. تُطبَّق رسوم الشبكة ورسوم الخصوصية."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "دع مستخدم Dash Wallet آخر يمسح هذا الرمز لإضافتك كجهة اتصال."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "ربط حساب Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "ربط حساب موجود"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "ربط حساب CrowdNode الحالي"; - /* No comment provided by engineer. */ "Link Uphold Account" = "اربط حساب Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "سجّل الدخول إلى CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "يبدو أنك تقوم بإفراغ محفظة داش"; - /* adjective, security level */ "Low" = "منخفض"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "متوسط"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "الأعضاء أحرار في مغادرة المسبح ويمكنهم في أغلب الأحيان المغادرة على الفور."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "لا توجد معاملات غير مؤكدة لإسقاطها."; -/* CrowdNode */ -"New CrowdNode Account" = "حساب CrowdNode جديد"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "عبر الانترنت"; -/* CrowdNode Portal */ -"Online Account" = "حساب على الانترنت"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "تُجمَّع المدفوعات مع كل جهة اتصال في مكان واحد، بالأسماء والملفات الشخصية بدلاً من المعاملات الخام."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "عنوان الصرف"; -/* CrowdNode */ -"Payout Options" = "خيارات الدفع"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "كل 24 ساعة"; - -/* CrowdNode */ -"per hour" = "في الساعة"; - -/* CrowdNode */ -"per transaction" = "لكل معاملة"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "يرجى الذهاب إلى حساب Uphold الخاص بك للتحقق من هويتك."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "يرجى ملاحظة أن البريد الإلكتروني لا يتم حفظه بواسطة محفظة داش ويتم إرساله فقط إلى CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "يرجى وضع هاتفك بالقرب من جهاز NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "الرجاء الانتظار"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "الإيجابيات"; -/* CrowdNode Portal */ -"Protect your savings" = "حماية مدخراتك"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "قراءة سياسة السحب"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "للقراءة فقط"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "استلم مباشرةً إلى محفظة داش"; -/* CrowdNode */ -"Receive your share of rewards daily." = "احصل على حصتك من المكافآت يوميًا."; - /* Received transaction */ "Received" = "تم الاستلام"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "مستلمة من %@"; -/* CrowdNode */ -"Receiving rewards" = "استلام المكافآت"; - "Records your masternodes as having voted, without taking a side." = "يسجّل عقد الماسترنود لديك على أنها صوّتت، دون الانحياز لأي طرف."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "إرسال تقرير"; - /* No comment provided by engineer. */ "Send to" = "إرسال الى"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "الإرسال إلى"; -/* CrowdNode */ -"Sending to CrowdNode account" = "الإرسال إلى حساب CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "الإرسال إلى Dash Wallet على هذا الجهاز"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "مشاركة"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "إظهار QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "اظهر جملة الاسترداد"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "قم بالتسجيل في CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "قم بالتسجيل للانتهاء من إنشاء الحساب"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "ستاكنج"; - /* Usernames */ "Starts after you add funds" = "يبدأ بعد إضافة الأموال"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "متزامن مع محفظة داش الحالية"; - /* No comment provided by engineer. */ "Syncing" = "يتم المزامنة"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "لا يمكن الدفع إلى هذا العنوان من رصيد %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "سيكون الرقم السري هذا مطلوبًا لإلغاء قفل تطبيقك في كل مرة تستخدمه."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "يمثل هذا النسبة المئوية السنوية الحالية لعائد ماسترنود كامل مطروحًا منه رسوم CrowdNode البالغة 15٪. إنه ليس معدل عائد مضمون وقد يرتفع أو ينخفض بناءً على حجم مجمعات CrowdNode وسعر داش."; - "This still counts as your masternodes having voted in this contest." = "يُحتسب هذا مع ذلك على أن عقد الماسترنود لديك قد صوّتت في هذه المنافسة."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "لبدء التخزين ، أنشئ حسابًا على CrowdNode أو اتصل بحساب موجود."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "إلى عنوان Dash المخصص لحساب CrowdNode الخاص بك في Dash Wallet على هذا الجهاز"; - /* No comment provided by engineer. */ "Today" = "اليوم"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "تاريخ المعاملات"; - /* Balance info sheet */ "Transaction history isn't available" = "سجل المعاملات غير متاح"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "فشل التحويل"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "دعوة صالحة"; -/* CrowdNode Portal */ -"Validating address…" = "التحقق من صحة العنوان ..."; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "التحقق مطلوب"; - /* Usernames */ "Verified during registration" = "تم التحقق أثناء التسجيل"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "تخقق"; -/* CrowdNode */ -"Verify your API Dash address" = "تحقق من عنوان API Dash الخاص بك"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "تحقق من عبارة الاسترداد لتعيين رمز PIN جديد."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "مرتفع جداً"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "سيتم إرسال كميات صغيرة جدًا من داش من وإلى CrowdNode للتحقق من أنك مالك عنوان المحفظة هذا."; - /* No comment provided by engineer. */ "View All" = "عرض الكل"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "أُغلق التصويت على ”%@“ بالفعل. حدّث لعرض النتيجة."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "انتظر حتى تتم مزامنة السلسلة بالكامل ، حتى نتمكن من مراجعة سجل معاملاتك. قم بزيارة موقع CrowdNode لتسجيل الدخول أو التسجيل."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "لم نتمكن من إنشاء حساب CrowdNode الخاص بك."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "لم نتمكن من الإيداع في حساب CrowdNode الخاص بك."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "لم نتمكن من الانسحاب من حسابك في CrowdNode."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "قمنا بالترقية"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "سنكتشف تلقائيًا هذه المعاملة ونحول نفس المبلغ إلى حساب CrowdNode الخاص بك. بعد ذلك ستتمكن من إجراء عمليات الإيداع والسحب في Dash Wallet على هذا الجهاز."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "ليس لديك اسم مستخدم ما دام التصويت جاريًا. سجّل الآن اسم مستخدم غير متنازع عليه — سيبقى ملكك، وإذا منحك التصويت «%@»، فسيمكن الوصول إليك عبر الاسمين معًا."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "لماذا أرى كل هذه المعاملات؟"; -/* CrowdNode */ -"Why do you need an online account?" = "لماذا تحتاج إلى حساب على الإنترنت؟"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "لماذا لا يجب علي التقاط لقطة شاشة؟"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "مع بلوكشين داش"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "سحب"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "سحب بلا حدود باستخدام حساب عبر الإنترنت على موقع CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "طلب سحب"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "يسحب الرصيد بالكامل"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "يمكنك تغيير كيفية / وقت دفع أرباح المكافآت لك."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "يمكنك الاطلاع على معلومات مفصلة حول الإيداعات والسحوبات وأرباح المكافآت."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "يجب عليك الاحتفاظ بنسخة احتياطية من عبارة مرورك في Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "أرسلت طلب جهة الاتصال إلى %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "يجب أن يكون لديك رصيد إيجابي في محفظة داش"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "ستتلقى مدفوعات جزئية تلقائيًا وسيتم إعادة استثمارها افتراضيًا ، ومع ذلك ، من السهل أيضًا إعداد عمليات سحب تلقائية لتلقي دفعات متكررة."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "حساب CrowdNode الخاص بك قيد الإنشاء ..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "تم إعداد حساب CrowdNode الخاص بك وهو جاهز للاستخدام!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "تم إنشاء حساب CrowdNode الخاص بك باستخدام هذه المعاملات."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "تم تأكيد عنوان CrowdNode الخاص بك."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "تم التحقق من صحة عنوان CrowdNode الخاص بك ، ولكن التحقق مطلوب."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "تم استلام الإيداع الخاص بك إلى CrowdNode."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "عنوان داش الأساسي الذي تستخدمه حاليًا لحساب CrowdNode الخاص بك"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "رصيدك الخاص. المبالغ والعناوين مشفّرة على السلسلة، فتبقى ممتلكاتك وسجلك سريّين."; diff --git a/DashWallet/bg.lproj/Localizable.strings b/DashWallet/bg.lproj/Localizable.strings index 17db6c1ce8..603fdb00d4 100644 --- a/DashWallet/bg.lproj/Localizable.strings +++ b/DashWallet/bg.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " или "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ е обявено за продажба за %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Необходима е парола на устройството за опазване на портфейла Ви. Отидете в настройки и включете използването на парола, за да продължите."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Активен"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Архивиране на портфейла"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Баланс"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Баланс след това"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Балансите и преводите не са публично видими"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Затвори приложението"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Свързани пиъри"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Кредити"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash адрес"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash баланс"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Дата"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Път на извеждане"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Отхвърляме…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Редактиране на началната височина"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Средствата са преместени"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Пригответе се да се присъедините към DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Първи стъпки"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Отидете на уебсайта"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Височина %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Колко поверителен е DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Приемам, че ще загубя монетите си, ако вече не притежавам фразата за възстановяване"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Ако все още искате да го изтриете, моля въведете: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Вътрешно преместени към"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Невалиден"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Запазете тези монети поверителни. Прилагат се мрежови такси и такси за поверителност."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Нека друг потребител на Dash Wallet сканира този код, за да ви добави като контакт."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Свързване на Uphold акаунт"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Ниско"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Средно"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Няма непотвърдени транзакции за отхвърляне."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Плащанията с всеки контакт са събрани на едно място, с имена и профили вместо сурови транзакции."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Адрес за изплащане"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Моля поставете вашият телефон близо до NFC устройство."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Моля изчакайте"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Предимства"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Само за четене"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Получени"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Получено от %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Записва вашите мастерноди като гласували, без да заемат страна."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Изпрати на"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Изпращане до"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Конфигуриране на портфейла"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Сподели"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Покажи Masternode ключове"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Покажи фраза за възстановяване"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Започва след като добавите средства"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Синхронизиране"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Този адрес не може да бъде платен от вашия баланс %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Този ПИН ще бъде необходим за отключване на приложението ви всеки път, когато го използвате."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Това пак се брои за гласуване на вашите мастерноди в този спор."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Историята на транзакциите не е налична"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Валидна покана"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Проверено по време на регистрацията"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Провери"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Потвърдете фразата си за възстановяване, за да зададете нов PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Много високо"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Виж всички"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Гласуването за „%@“ вече е затворено. Опреснете, за да видите резултата."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "Надградихме"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Нямате потребителско име, докато тече гласуването. Регистрирайте сега неоспорвано потребителско име — то остава ваше, а ако гласуването ви присъди „%@“, ще бъдете достъпни и с двете потребителски имена."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "с Dash блок верига"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Тегли целия баланс"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Изпратихте заявката за контакт до %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Вашият поверителен баланс. Сумите и адресите са криптирани във веригата, така че притежанията и историята ви остават поверителни."; diff --git a/DashWallet/ca.lproj/Localizable.strings b/DashWallet/ca.lproj/Localizable.strings index c4c5b93bef..b84c42dddc 100644 --- a/DashWallet/ca.lproj/Localizable.strings +++ b/DashWallet/ca.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " o "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ s'ha posat a la venda per %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Actiu"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo després"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Els saldos i les transferències no són visibles públicament"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Nodes connectats"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Crèdits"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Camí de derivació"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Descartant…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Edita l'alçada d'inici"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fons moguts"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Prepara't per unir-te a DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Alçada %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Com de privat és DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Mantén aquestes monedes privades. S'apliquen comissions de xarxa i de privadesa."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Deixa que un altre usuari de Dash Wallet escanegi aquest codi per afegir-te com a contacte."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "No hi ha transaccions no confirmades per descartar."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Els pagaments amb cada contacte s'agrupen en un sol lloc, amb noms i perfils en comptes de transaccions en cru."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Adreça de cobrament"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Avantatges"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Només de lectura"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Rebut de %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Registra els teus masternodes com a votants, sense prendre partit."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "S'està enviant a"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Comparteix"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Comença quan afegeixis fons"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Aquesta adreça no es pot pagar des del teu saldo %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Això continua comptant com que els teus masternodes han votat en aquesta disputa."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "L'historial de transaccions no està disponible"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Invitació vàlida"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Verificat durant el registre"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifica la teva frase de recuperació per establir un PIN nou."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Mostra-ho tot"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "La votació sobre «%@» ja s'ha tancat. Actualitza per veure el resultat."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "No tens cap nom d'usuari mentre la votació és en curs. Registra ara un nom d'usuari no disputat — es queda teu i, si la votació t'atorga «%@», se't podrà localitzar amb tots dos noms d'usuari."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Retira tot el saldo"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Has enviat la sol·licitud de contacte a %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "El teu saldo privat. Els imports i les adreces estan xifrats a la cadena, de manera que les teves tinences i el teu historial es mantenen confidencials."; diff --git a/DashWallet/cs.lproj/Localizable.strings b/DashWallet/cs.lproj/Localizable.strings index 3a37175c05..37a6e1510a 100644 --- a/DashWallet/cs.lproj/Localizable.strings +++ b/DashWallet/cs.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " nebo "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ nabídnuto za %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Přístupový kód zařízení je třeba k zabezpečení vaší peněženky. Přejděte do nastavení a pokračujte zapnutím přístupového kódu."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktivní"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Povolit"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Zálohovat peněženku"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Bilance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Zůstatek poté"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Zůstatky a převody nejsou veřejně viditelné"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Zavřít aplikaci"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Připojeno"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Připojené protějšky"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Vytvořit účet"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Vytvořit pozvánku"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kredity"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Expertovat jako CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash adresa"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash bilance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Datum"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Zakázáno"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Odvozovací cesta"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Zahazujeme…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Každá pozvánka bude financována touto částkou, aby si příjemce mohl rychle vytvořit uživatelské jméno na Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Dřívější"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Jednoduše Dash úročte a získejte pasivní příjem pomocí několika kliknutí."; - /* SPV diagnostics */ "Edit birth height" = "Upravit počáteční výšku"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "např.: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Prostředky přesunuty"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Připravte se vstoupit do DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Jdu na to"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Získejte uživatelské jméno"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Začínáme s CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Dárkový poukaz"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Přejít na Web"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Výška %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Jak soukromé je DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Souhlasím s tím, že přijdu o prostředky pokud ztratím frázi pro obovení"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Pokud jej přesto chcete vymazat, zadejte: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Interně přesunuto do"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Neplatná"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Připoj se nyní"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Ponechat tyto mince soukromé. Účtují se síťové poplatky a poplatky za soukromí."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Nechte jiného uživatele Dash Wallet naskenovat tento kód, aby si vás přidal jako kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Připojit existující účet"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Připojit účet Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Přihlásit do CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Nízká"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Střední"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nejsou žádné nepotvrzené transakce k zahození."; -/* CrowdNode */ -"New CrowdNode Account" = "Nový CrowdNode Účet"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Platby s každým kontaktem jsou seskupeny na jednom místě, se jmény a profily místo surových transakcí."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Výplatní adresa"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Přejděte prosím do Uphold účtu a ověřte vaší identitu."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Přiložte váš telefon k zařízení NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Čekejte prosím"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Výhody"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Pouze pro čtení"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Přijato"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Přijato od %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Zaznamená vaše masternody jako hlasující, aniž by se přiklonily k některé straně."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Odeslat pozvánku"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Odeslat prostřednictvím"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Odesílá se na"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Vytvořit peněženku"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Sdílet"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Zobrazit klíče masternode"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Zobrazit frázi pro obnovení"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Registrovat se na CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Úročení"; - /* Usernames */ "Starts after you add funds" = "Začne po přidání prostředků"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Synchronizace"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Tuto adresu nelze zaplatit z vašeho zůstatku %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Tento PIN bude požadován pro odemčení aplikace pokaždé, když ji budete chtít použít."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Stále se to počítá jako hlasování vašich masternode v tomto sporu."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Abyste mohli začít službu používat, vytvořte si účet CrowdNode nebo připojte již existující."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Historie transakcí není k dispozici"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Platná pozvánka"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Ověření uživatelské jméno selhalo"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Ověřeno během registrace"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Ověřit"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Ověřte frázi pro obnovení a nastavte nový PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Vělmi vysoká"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Zobrazit vše"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Hlasování o „%@“ již bylo uzavřeno. Obnovte, abyste viděli výsledek."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "Vylepšovali jsme"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Dokud probíhá hlasování, nemáte uživatelské jméno. Zaregistrujte si nyní nesporné uživatelské jméno — zůstane vám, a pokud vám hlasování přizná „%@“, budete dostupní pod oběma uživatelskými jmény."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Proč bych neměl pořizovat snímek obrazovky?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "s Dash blockchainem"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Vybere celý zůstatek"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Odeslali jste žádost o kontakt uživateli %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Tvoje uživatelské jméno DashPay je připraveo k použití"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Váš soukromý zůstatek. Částky a adresy jsou v řetězci zašifrované, takže vaše prostředky i historie zůstávají důvěrné."; diff --git a/DashWallet/da.lproj/Localizable.strings b/DashWallet/da.lproj/Localizable.strings index 9382a274b5..87d8b99460 100644 --- a/DashWallet/da.lproj/Localizable.strings +++ b/DashWallet/da.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " eller "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ er sat til salg for %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "En enhedsadgangskode er nødvendig for at sikre din tegnebog. Gå til indstillinger for aktivér adgangskode for at fortsætte."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiv"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo bagefter"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldi og overførsler er ikke offentligt synlige"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Forbundne peers"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kreditter"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash-adresse"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Afledningssti"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Kasserer…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Rediger starthøjde"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Midlerne er flyttet"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Gør dig klar til at blive en del af DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Højde %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Hvor privat er DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Hold disse mønter private. Der gælder netværks- og privatlivsgebyrer."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Lad en anden Dash Wallet-bruger scanne denne kode for at tilføje dig som kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Ingen ubekræftede transaktioner at kassere."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Betalingerne med hver kontakt samles ét sted, med navne og profiler i stedet for rå transaktioner."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Udbetalingsadresse"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Fordele"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Skrivebeskyttet"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Modtaget fra %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Registrerer, at dine masternoder har stemt, uden at tage parti."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Sender til"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Del"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Begynder, når du tilføjer midler"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Denne adresse kan ikke betales fra din %@-saldo"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Det tæller stadig som, at dine masternoder har stemt i denne tvist."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Transaktionshistorikken er ikke tilgængelig"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Gyldig invitation"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Bekræftet under registreringen"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Bekræft din gendannelsessætning for at angive en ny PIN-kode."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Vis alle"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Afstemningen om “%@” er allerede lukket. Opdater for at se resultatet."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Du har ikke et brugernavn, mens afstemningen er i gang. Registrér nu et ubestridt brugernavn — det forbliver dit, og hvis afstemningen tildeler dig “%@”, kan du nås på begge brugernavne."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Hæver hele saldoen"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Du sendte kontaktanmodningen til %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Din private saldo. Beløb og adresser er krypteret på kæden, så din beholdning og din historik forbliver fortrolige."; diff --git a/DashWallet/dashwallet-Bridging-Header.h b/DashWallet/dashwallet-Bridging-Header.h index ee76e62a0a..1e84234b53 100644 --- a/DashWallet/dashwallet-Bridging-Header.h +++ b/DashWallet/dashwallet-Bridging-Header.h @@ -109,7 +109,7 @@ static const bool _SNAPSHOT = 0; #import "DWDPUpdateProfileModel.h" #endif -//MARK: CrowdNode +//MARK: Seed phrase and utilities #import "DWCheckbox.h" #import "DWPreviewSeedPhraseModel.h" #import "DWSeedPhraseModel.h" diff --git a/DashWallet/de.lproj/Localizable.strings b/DashWallet/de.lproj/Localizable.strings index 3a24e15b2a..70326d0335 100644 --- a/DashWallet/de.lproj/Localizable.strings +++ b/DashWallet/de.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " oder "; -/* CrowdNode */ -" Privacy Policy " = "Datenschutzerklärung"; - -/* CrowdNode */ -" Terms of Use " = "AGB"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ für %2$@ DASH eingestellt"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Ein Gerätecode wird benötigt um Ihr Wallet zu schützen. Stellen Sie in Ihren Einstellungen Ihren Code ein um fortzufahren."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Ein Masternode benötigt 1000 Dash als Einlage und jeder Masternode erhält derzeit rund %@ pro Jahr."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "AGB akzeptieren"; -/* CrowdNode */ -"Accept Terms Of Use" = "AGB akzeptieren"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "AGB akzeptieren ..."; - -/* CrowdNode */ -"Account Recovery" = "Kontowiederherstellung"; - /* Masternode status */ "Active" = "Aktiv"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Alle Transfers von und zu Crowdnode auf diesem Gerät werden über die unten stehende Dash Adresse abgewickelt."; - /* ZenLedger */ "Allow" = "Erlauben"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Ein unbekannter Fehler ist aufgetreten. Bitte versuche es zu einem späteren Zeitpunkt erneut."; -/* CrowdNode */ -"and" = "und"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Jeder Nutzername, der die Nummern 2-9 beinhaltet, länger als 20 Zeichen ist oder einen Bindestrich beinhaltet, wird automatisch genehmigt."; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Als Masternode-Besitzer kannst du über die Genehmigung beantragter Nutzernamen abstimmen, bevor die Nutzer diese überhaupt erstellen können.\nDu kannst die Erstellung von gewissen Nutzernamen blockieren, die du für unangemessen hältst,"; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Da die meisten nicht genau 1000 Dash zur Hand haben, hat CrowdNode einen Service entwickelt der Einlagen von Mitgliedern zusammenlegt, damit diese die Vorteile, die durch das Besitzen eines Masternodes entstehen, nutzen können."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Passphrase sichern"; - /* A noun. Used as a title. */ "Backup Wallet" = "Wallet-Backup"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Sichere deine Passphrase um ein Crowdnode Konto zu erstellen"; - /* Back up wallet */ "Backup your recovery phrase" = "Wiederherstellungsphrase sichern"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Guthaben"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Guthaben danach"; -/* CrowdNode */ -"Balance On CrowdNode" = "CrowdNode Guthaben"; - -/* CrowdNode */ -"Balance: " = "Guthaben:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Guthaben und Transfers sind nicht öffentlich sichtbar"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Banküberweisung"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Werde Teil eines Dash Masternodes mit CrowdNode"; - /* TimeSkew */ "behind" = "zurück"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Schließen und benachrichtigen, wenn abgeschlossen"; - /* No comment provided by engineer. */ "Close App" = "App schließen"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Verbunden"; -/* CrowdNode */ -"Connected Dash address" = "Dash Adresse verknüpfen"; - /* SPV sync */ "Connected peers" = "Verbundene Peers"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Nutzernamen erstellen."; -/* CrowdNode */ -"Create Account" = "Konto erstellen"; - /* Create DashSpend account */ "Create account" = "Konto erstellen"; /* DashSpend account title */ "Create an account or log into an existing one" = "Erstelle ein Konto oder logge dich mit einem bereits existierenden ein"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Einen neues CrowdNode online Konto erstellen"; - /* No comment provided by engineer. */ "Create invitation" = "Erstelle eine Einladung"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Online Konto erstellen"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Credits"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode Leistungen"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "Crowdnode nutzt die Adresse als deine Konto ID. Wenn du die zugehörige Passphrase zu der Adresse verlierst, wirst du auch keinen Zugriff auf dein Guthaben und dein Crowdnode Konto mehr besitzen."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode Auszahlungslimits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Konto"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX Geschenkkarte"; -/* Crowdnode */ -"Current APY = %@" = "Derzeitige APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Derzeitige APY ist %@."; - /* Explore Dash: Filters */ "Current location" = "Aktueller Standort"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash-Adresse"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash Adresse, die für dein CrowdNode Konto in der Dash Wallet auf diesem Gerät bestimmt ist."; - /* No comment provided by engineer. */ "Dash balance" = "Dash-Guthaben"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Datum"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Abgelehnt"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Einzahlung"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "%@ einzahlen um Erträge zu erhalten."; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Zahle mindestens %@ Dash auf deine Dash Wallet ein um die Auszahlung abzuschließen"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Zahle mindestens %@ ein um Erträge zu erhalten."; - -/* CrowdNode */ -"Deposit sent" = "Einzahlung versendet"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Ableitungspfad"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Wird verworfen…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Aufgrund der CrowdNode AGB können Nutzer nicht mehr als diesen Betrag abheben:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Aufgrund von regulatorischen Beschränkungen müssen wir feststellen, dass du dich nicht im Vereinigten Königreich aufhältst. Dein Standort wird lediglich überprüft, wenn du die Coinbase-Funktoin nutzt."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Aufgrund des Voting-Prozesses hat das Dash Netzwerk entschieden, den Nutzernamen '%@' an jemand anderen zu vergeben. Bitte versuche es erneut, aber mit einem anderen Nutzernamen."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "z.B. maxmustermann@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Jede Einladung wird mit diesem Betrag versehen damit der Empfänger schnell einen eigenen Nutzernamen im Dash-Netzwerk beanspruchen kann"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Früher"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Dash staken und passives Einkommen generieren."; - /* SPV diagnostics */ "Edit birth height" = "Starthöhe bearbeiten"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "zB: maxmuster"; -/* CrowdNode */ +/* DashSpend */ "Email" = "E-Mail"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Die erste Einzahlung sollte größer als %@ sein."; - -/* CrowdNode */ -"First minimum deposit" = "Erste Mindesteinlage"; - /* DashSpend */ "Fixed amounts" = "Festgesetzte Beträge"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "von CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "von Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Mittel verschoben"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Erhalte Erträge für Einzahlungen in Dash Masternodes bereits ab 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Mach dich bereit, DashPay beizutreten"; -/* CrowdNode */ -"Get Rewards Instantly" = "Rewards direkt erhalten"; - /* No comment provided by engineer. */ "Get Started" = "Beginnen"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Erhalte deinen Nutzernamen"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Mit CrowdNode loslegen"; - /* No comment provided by engineer. */ "Gift card" = "Gutscheinkarte"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Geschenkkarte · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Gehe zur CrowdNode Webseite"; - /* No comment provided by engineer. */ "Go to Website" = "Webseite besuchen"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Höhe %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Hier ist die Dash Adresse, die für dein CrowdNode Konto in der Dash Wallet auf diesem Gerät bestimmt ist."; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Halte eine beliebige Taste oben gedrückt, um sie durch die gewünschte Funktion zu ersetzen"; -/* CrowdNode */ -"How CrowdNode staking works" = "Wie CrowdNode Staking funktioniert"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Wie bekomme ich Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Wie privat ist DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Wie du deine API Dash Adresse bestätigst"; - /* No comment provided by engineer. */ "How to use your gift card" = "Wie man deine Geschenkkarte verwendet"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Ich akzeptiere, dass ich meine Coins verlieren werden, wenn ich die Wiederherstellungsphrase verlieren sollte"; -/* CrowdNode */ -"I agree to CrowdNode" = "Ich stimme CrowdNode zu."; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Wenn du die Erlaubnis später erteilen willst und dich nicht im Vereinigten Königreich aufhältst, kannst du Coinbase nutzen."; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Solltest du deine Passphrase verlieren, kannst du dich auf andere Weise verifizieren um den Zugriff auf dein CrowdNode-Guthaben wieder zu erlangen."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Wenn du die Passphrase für diese Wallet verlierst und das Gerät verloren geht oder die Dash Wallet deinstalliert wird, wirst du auch den Zugang zu Crowdnode und all dein Guthaben verlieren."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Wenn Sie es immer noch entleeren möchten, geben Sie es bitte ein: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "Im Falle von größeren Auszahlungen führt CrowdNode diese innerhalb von 2 Wochen aus. Dies ist auf deren Sicherheitsprotokoll zurückzuführen und wird in den meisten Fällen viel schneller bearbeitet."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Solltest du keinen Zugriff mehr auf deine Passphrase besitzen, verlierst du auch das Recht auf deinen gewählten Nutzernamen."; -/* CrowdNode Portal */ -"In process…" = "In Bearbeitung"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informationen über dein Online Konto"; - /* Buy Sell Portal */ "Initializing" = "Initialisierung"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Intern verschoben nach"; -/* CrowdNode */ -"Introducing Staking" = "Einführung in das Staking"; - /* Invalid transaction */ "Invalid" = "Ungültig"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Ungültige Dash Adresse"; -/* CrowdNode Online */ -"Invalid Email" = "Ungültige E-Mail"; - /* No comment provided by engineer. */ "Invalid email or password." = "Ungültige E-Mail oder ungültiges Passwort."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ gemeldete Probleme"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Es kann eine Minute dauern, bis dein Guthaben aktualisiert wird."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Es kann eine Minute dauern, bis du dein Guthaben erhältst."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Trete jetzt bei"; -/* CrowdNode */ -"Joining the pool" = "Eintritt in den Pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Diese Coins privat halten. Es fallen Netzwerk- und Privatsphäre-Gebühren an."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Pool verlassen"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Lass einen anderen Dash-Wallet-Nutzer diesen Code scannen, um dich als Kontakt hinzuzufügen."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Coinbase Konto verknüpfen"; -/* CrowdNode */ -"Link Existing Account" = "Bestehendes Konto verbinden"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Bestehendes CrowdNode-Konto verbinden"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Uphold-Konto verknüpfen"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Bei CrowdNode anmelden"; - /* DashSpend */ "Log in to your account" = "In dein Konto einloggen"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Es scheint als würdest du deine Dash Wallet leeren"; - /* adjective, security level */ "Low" = "Niedrig"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Mittel"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Den Mitgliedern steht es frei, den Pool zu verlassen, und sie können es in den meisten Fällen sofort vollziehen."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Keine unbestätigten Transaktionen zum Verwerfen."; -/* CrowdNode */ -"New CrowdNode Account" = "Neues Crowdnode Konto"; - /* Voting */ "New to old" = "Neu nach alt"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Konto"; - /* Online Merchant */ "Online Merchant" = "Online Händler"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Zahlungen mit jedem Kontakt sind an einem Ort gebündelt, mit Namen und Profilen statt roher Transaktionen."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Auszahlungsadresse"; -/* CrowdNode */ -"Payout Options" = "Auszahlungsoptionen"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "pro 24 Stunden"; - -/* CrowdNode */ -"per hour" = "pro Stunde"; - -/* CrowdNode */ -"per transaction" = "pro Transaktion"; - /* Usernames */ "Personalise profile" = "Profil personalisieren"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Bitte rufe dein Uphold-Konto auf, um deine Identität zu verifizieren."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Bitte beachte, dass diese E-Mail nicht in der Dash Wallet gespeichert wird sondern nur an CrowdNode gesendet wird"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Bitte beachte, dass der Nutzername nach der Registrierung NICHT mehr geändert werden kann."; /* Usernames */ "Please note that you will not be able to change it in future" = "Bitte beachte, dass du dies in der Zukunft nicht mehr ändern kannst"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Bitte beachte, dass du dein Guthaben nicht von CrowdNode abheben kannst solange dies niedriger als %@ Dash ist."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Bitte halte dein Telefon nahe an das NFC-Gerät."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Bitte warten"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Warte bitte, bis du die nächste Auszahlung startest."; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Bitte warte, bis die Wallet vollständig synchronisiert ist, bevor du deinen Transaktionsverlauf exportierst."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Die Preise konnten nicht abgerufen werden. Es ist möglich, dass die Fiat-Werte nicht korrekt sind."; -/* CrowdNode */ -"Primary Dash address" = "Primäre Dash Adresse"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Vorteile"; -/* CrowdNode Portal */ -"Protect your savings" = "Sichere deine Sparanlagen"; - /* Usernames */ "Prove your identity" = "Deine Identität nachweisen"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Lese die Auszahlungsrichtlinie"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Schreibgeschützt"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Direkt in der Dash Wallet erhalten"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Erhalte täglich den Anteil deiner Rewards."; - /* Received transaction */ "Received" = "Empfangen"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Erhalten von %@"; -/* CrowdNode */ -"Receiving rewards" = "Rewards erhalten"; - "Records your masternodes as having voted, without taking a side." = "Erfasst deine Masternodes als abgestimmt, ohne Partei zu ergreifen."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Sende %@ Dash von deiner primären Dash Adresse, die du derzeit für dein CrowdNode Konto nutzt."; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Einladung senden"; -/* Coinbase - CrowdNode */ -"Send Report" = "Bericht senden"; - /* No comment provided by engineer. */ "Send to" = "Senden an"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Senden an"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sendet zu deinem CrowdNode Konto"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sendet zu der Dash Wallet auf deinem Gerät"; - /* Buy Dash */ "Sending to:" = "Senden an:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Wallet erstellen"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Teilen"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Masternode-Schlüssel anzeigen"; -/* CrowdNode */ -"Show QR" = "QR Code anzeigen"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Wiederherstellungsphrase anzeigen"; /* Alert title */ "Sign in required" = "Anmeldung erforderlich"; -/* CrowdNode */ -"Sign up error" = "Anmeldefehler"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Bei CrowdNode registrieren"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Anmelden, um die Einrichtung des Kontos abzuschließen"; - /* ZenLedger */ "Simplify your crypto taxes" = "Vereinfache deine Krypto-Steuern"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Beginnt, nachdem du Mittel hinzugefügt hast"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Mit aktueller Dash Wallet synchronisiert"; - /* No comment provided by engineer. */ "Syncing" = "Synchronisiere"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Das Dash-Netzwerk muss gewisse Nutzernamen bestätigen, bevor diese erstellt werden"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Das Dash Netzwerk wird durch eine Reihe von Masternodes gesteuert, die eine wesentliche Rolle bei der Erleichterung von Zahlungen spielen."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Die Dash wurden deinem Coinbase Konto erfolgreich gutgeschrieben. Aber es entstand ein Problem bei dem Transfer auf die Dash Wallet dieses Gerätes."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Diese Adresse kann nicht aus deinem %@-Guthaben bezahlt werden"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Die PIN muss bei jedem Verwenden der App zum Entsperren eingegeben werden."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Dieser QR Code enthält die Zahlungsaufforderung für %@."; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Dies ist die aktuelle jährliche prozentuale Rendite eines ganzen Masternodes abzüglich 15% CrowdNode-Gebühren. Es handelt sich nicht um eine garantierte Rendite, die je nach Größe des CrowdNode Pools und Höhe des Dash Preises nach oben oder unten gehen kann."; - "This still counts as your masternodes having voted in this contest." = "Dies zählt weiterhin als Abstimmung deiner Masternodes in diesem Wettbewerb."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "zur Dash Wallet auf diesem Gerät"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Um mit dem Staking zu beginnen, erstelle ein Konto bei CrowdNode oder verbinde ein bereits bestehendes."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "zu der vorgesehenen Dash Adresse für dein CrowdNode Konto in der Dash Wallet dieses Gerätes"; - /* No comment provided by engineer. */ "Today" = "Heute"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaktionshistorie"; - /* Balance info sheet */ "Transaction history isn't available" = "Transaktionsverlauf ist nicht verfügbar"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Übertragungsfehler"; - /* Coinbase */ "Transfer Failed" = "Übertragung fehlgeschlagen"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Gültige Einladung"; -/* CrowdNode Portal */ -"Validating address…" = "Adresse validieren..."; - /* No comment provided by engineer. */ "Validating username failed" = "Validierung des Benutzernamens fehlgeschlagen"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verifizierung notwendig"; - /* Usernames */ "Verified during registration" = "Bei der Registrierung überprüft"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Verifizieren"; -/* CrowdNode */ -"Verify your API Dash address" = "API Dash Adresse verifizieren"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifiziere deine Wiederherstellungs-Wortfolge, um eine neue PIN festzulegen."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Sehr hoch"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Es werden nun kleine Dash Beträge nach und von Crowdnode gesendet um dich als Besitzer deiner Adresse zu verifizieren."; - /* No comment provided by engineer. */ "View All" = "Alle anzeigen"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Die Abstimmung über „%@“ ist bereits geschlossen. Aktualisiere, um das Ergebnis zu sehen."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Warte bis die Blockchain komplett synchronisiert ist, damit wir deine Transaktionshistorie überprüfen können."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Warte bis die Chain voll synchronisiert ist, damit du eine Transaktionshistorie begutachten kannst. Besuche die Crowdnode Webseite um dich anzumelden oder zu registrieren."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Warte, bis die Wallet synchronisiert ist, um die Transaktion abzuschließen."; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Wir konnten dein CrowdNode Konto nicht erstellen."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Wir konnten keine Einzahlung auf dein CrowdNode Konto durchführen."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Wir konnten keine Auszahlung von deinem CrowdNode Konto durchführen."; - /* Explore */ "We have two types of merchants" = "Wir haben 2 Arten von Händlern"; /* No comment provided by engineer. */ "We Upgraded" = "Wir haben ein Upgrade durchgeführt"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Wir werden diese Transaktion automatisch erkennen und den gleichen Betrag deinem CrowdNode Konto gutschreiben. Danach wirst du Einzahlungen und Auszahlung in deine Dash Wallet auf diesem Gerät vornehmen können."; - /* Website */ "Website" = "Webseite"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Solange die Abstimmung läuft, hast du keinen Nutzernamen. Registriere jetzt einen nicht umkämpften Nutzernamen — er bleibt dir erhalten, und wenn die Abstimmung dir „%@“ zuspricht, bist du unter beiden Nutzernamen erreichbar."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Warum sehe ich all diese Transaktionen?"; -/* CrowdNode */ -"Why do you need an online account?" = "Warum benötigst du ein online Konto?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Warum sollte ich keinen Screenshot machen?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "mit der Dash-Blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Auszahlen"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Abheben ohne Grenzen mit einem Online Konto auf der CrowdNode Website."; - -/* CrowdNode */ -"Withdrawal requested" = "Auszahlen beantragt"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Zahlt das gesamte Guthaben aus"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Du kannst ändern, wann und wie die Auszahlungen deiner Rewards vorgenommen werden."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Du kannst DashPay weiterhin für Zahlungen nutzen, aber es ist nicht möglich dein Profil zu updaten oder weitere Kontakt hinzuzufügen, sofern du dein Credit-Guthaben nicht aufgeladen hast"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Du kannst mit Dash an der Kasse bezahlen."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Du kannst detaillierte Informationen über deine Einzahlungen, Auszahlungen und Erträge sehen."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Damit andere Nutzer es im Dash Network sehen können, kannst du jede URL eintragen, die öffentlich im Internet zugänglich ist."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Du hast für diesen Nutzernamen %ld Mal abgestimmt. Du kannst nur noch ein Vote für diesen Nutzernamen abgeben."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Du hast einen ungültigen Schlüssel eingegeben."; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Du hast nicht genügend Guthaben, um fortzufahren."; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Du musst die Passphrase in deiner Dash Wallet sichern"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Du benötigst mindestens %@ Dash um eine Einladung zu erstellen"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Du benötigst mindestens %@ in deiner Dash Wallet."; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Du benötigst mehr als %@ Dash, um diesen Nutzernamen erstellen zu können"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Du musst dich bei DashSpend anmelden, um eine Geschenkkarte kaufen zu können."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Du musst 5 Minuten warten, bevor du die nächste Auszahlung beginnen kannst."; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Du brauchst lediglich %@ um dem Pool beizutreten."; - /* DashSpend confirmation */ "You pay" = "Du bezahlst"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Du hast die Kontaktanfrage an %@ gesendet"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Du solltest einen positiven Saldo in deiner Dash Wallet haben"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Du solltest mindestens %@ Dash besitzen um mit der CrowdNode Verifizierung fortzufahren."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Du erhältst %@ Dash auf deiner Dash Wallet auf diesem Gerät. Bitte beachte, dass es bis zu 2 bis 3 Minuten dauern kann, bis eine Übertragung abgeschlossen ist."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Du erhältst automatisch Teilzahlungen, die standardmäßig reinvestiert werden. Du kannst jedoch auch automatische Entnahme einrichten, um wiederkehrende Auszahlungen zu erhalten."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Dein Credit-Guthaben ist niedrig"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Dein CrowdNode Konto wird erstellt..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Dein CrowdNode Konto ist fertig und zur Nutzung bereit!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Dein CrowdNode Konto wurde mit diesen Transaktionen erstellt."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Deine CrowdNode Adresse wurde bestätigt."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Deine CrowdNode Adresse wurde validiert, aber Verifizierung ist notwendig."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Dein DashPay-Benutzername kann jetzt verwendet werden"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Deine Einzahlung auf CrowdNode wurde erhalten."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Deine Gerätezeit ist %1$@ zu %2$d Sekunden.u kannst CoinJoin aufgrund dieses Unterschiedes nicht nutzen.\n\nDie Zeiteinstellungen auf deinem Gerät muss auf „Zeit automatisch einstellen“ geändert werden, um CoinJoin nutzen zu können."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Deine primäre Dash Adresse, die du derzeit für dein CrowdNode Konto nutzt"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Dein privates Guthaben. Beträge und Adressen sind on-chain verschlüsselt, sodass deine Bestände und dein Verlauf vertraulich bleiben."; diff --git a/DashWallet/el.lproj/Localizable.strings b/DashWallet/el.lproj/Localizable.strings index 8ed881df43..62e8890540 100644 --- a/DashWallet/el.lproj/Localizable.strings +++ b/DashWallet/el.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ή "; -/* CrowdNode */ -" Privacy Policy " = "Πολιτική απορρήτου"; - -/* CrowdNode */ -" Terms of Use " = "'Οροι χρήσης"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "Το %1$@ καταχωρήθηκε προς πώληση για %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Ένας κωδικός φράσης για την συσκευή είναι απαραίτητος για τη διαφύλαξη του πορτοφολιού σας. Μεταβείτε στην επιλογή Ρυθμίσεις και ενεργοποιήστε τον κωδικό για να συνεχίσετε."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Ένας Masternode χρειάζεται 1000 Dash ως εγγύηση και κάθε Masternode ανταμείβεται προς το παρόν με περίπου %@ ετησίως."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Αποδοχή των όρων και \nπροϋποθέσεων"; -/* CrowdNode */ -"Accept Terms Of Use" = "Αποδοχή των Όρων Χρήσης"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Αποδοχή των όρων χρήσης..."; - -/* CrowdNode */ -"Account Recovery" = "Ανάκτηση λογαριασμού"; - /* Masternode status */ "Active" = "Ενεργό"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Όλες οι μεταφορές από και προς το CrowdNode από αυτή τη συσκευή θα πραγματοποιούνται με την παρακάτω διεύθυνση Dash από αυτή τη συσκευή."; - /* ZenLedger */ "Allow" = "Επιτρέπετε"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Παρουσιάστηκε σφάλμα. Παρακαλώ προσπαθήστε ξανά αργότερα."; -/* CrowdNode */ -"and" = "και"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Οποιοδήποτε όνομα χρήστη που έχει αριθμό 2-9 ή είναι μεγαλύτερο από 20 χαρακτήρες ή που έχει παύλα θα εγκριθεί αυτόματα."; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Ως ιδιοκτήτης του κύριου κόμβου μπορείτε να ψηφίσετε για να εγκρίνετε τα ζητούμενα ονόματα χρηστών πριν οι χρήστες μπορέσουν να τα δημιουργήσουν..\nΜπορείτε να μπλοκάρετε τη δημιουργία των ονομάτων χρήστη που θεωρείτε ακατάλληλα."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Καθώς οι περισσότεροι δεν έχουν ακριβώς 1000 Dash στη διάθεσή τους, η Crowdnode έχει δημιουργήσει μια υπηρεσία όπου, συγκεντρώνοντας καταθέσεις από τα μέλη, θα μπορούν να απολαύσουν τα οφέλη της κατοχής ενός Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Αντίγραφο ασφαλείας"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup της φράσης πρόσβασης"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup πορτοφολιού"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Δημιουργήστε αντίγραφο ασφαλείας της φράσης πρόσβασης για να δημιουργήσετε έναν λογαριασμό CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Δημιουργήστε αντίγραφα ασφαλείας της φράσης ανάκτησης"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Υπόλοιπο"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Υπόλοιπο μετά"; -/* CrowdNode */ -"Balance On CrowdNode" = "Υπόλοιπο στο CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Υπόλοιπο:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Τα υπόλοιπα και οι μεταφορές δεν είναι δημόσια ορατά"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Τραπεζικό έμβασμα"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Γίνετε μέλος ενός Dash Masternode με το CrowdNode"; - /* TimeSkew */ "behind" = "πίσω "; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Κλείσιμο και ειδοποίηση όταν τελειώσει"; - /* No comment provided by engineer. */ "Close App" = "Κλείσιμο Εφαρμογής"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Συνδέθηκε"; -/* CrowdNode */ -"Connected Dash address" = "Συνδεδεμένη διεύθυνση Dash"; - /* SPV sync */ "Connected peers" = "Συνδεδεμένοι peers"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Δημιουργία όνομα χρήστη"; -/* CrowdNode */ -"Create Account" = "Δημιουργία λογαριασμού"; - /* Create DashSpend account */ "Create account" = "Δημιουργία λογαριασμού"; /* DashSpend account title */ "Create an account or log into an existing one" = "Δημιουργήστε έναν λογαριασμό ή συνδεθείτε στον ήδη υπάρχοντα."; -/* CrowdNode */ -"Create an online CrowdNode account" = "Δημιουργήστε έναν online λογαριασμό στο CrowdNode"; - /* No comment provided by engineer. */ "Create invitation" = "Δημιουργία πρόσκλησης"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Δημιουργία online λογαριασμού"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Credits"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Πλεονεκτήματα του CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Υποστήριξη CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "Το CrowdNode χρησιμοποιεί αυτή τη διεύθυνση ως αναγνωριστικό του λογαριασμού σας. Θα χάσετε την πρόσβαση στα χρήματά σας σε αυτό το πορτοφόλι και στο λογαριασμό σας CrowdNode αν χάσετε τη φράση πρόσβασης που σχετίζεται με αυτή τη διεύθυνση."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Όρια ανάληψης στην CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "Λογαριασμός · CrowdNode"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Εξαγωγή CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Δωροκάρτες CTX"; -/* Crowdnode */ -"Current APY = %@" = "Τρέχον APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Το τρέχον APY είναι %@"; - /* Explore Dash: Filters */ "Current location" = "Τρέχουσα τοποθεσία"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Διεύθυνση Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Διεύθυνση Dash που έχει οριστεί για το λογαριασμό σας στο CrowdNode στο πορτοφόλι Dash σε αυτή τη συσκευή"; - /* No comment provided by engineer. */ "Dash balance" = "Υπόλοιπο Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Ημερομηνία"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Απορρίφθηκε"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Κατάθεση"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Καταθέστε %@ για να αρχίσετε να κερδίζετε"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Καταθέστε τουλάχιστον %@ Dash στο Dash Wallet σας για να ολοκληρώσετε μια ανάληψη"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Καταθέστε τουλάχιστον %@ για να αρχίσετε να κερδίζετε"; - -/* CrowdNode */ -"Deposit sent" = "Η κατάθεση απεστάλη"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Διαδρομή παραγωγής"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Απόρριψη…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Σύμφωνα με τους όρους παροχής υπηρεσιών της CrowdNode οι χρήστες δεν μπορούν να αποσύρουν περισσότερα από:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Λόγω κανονιστικών περιορισμών, πρέπει να επαληθεύσουμε ότι δεν βρίσκεστε στο Ηνωμένο Βασίλειο. Ελέγχουμε την τοποθεσία σας μόνο όταν εισέρχεστε στις λειτουργίες της Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Λόγω της διαδικασίας ψηφοφορίας, το Dash Network αποφάσισε να εκχωρήσει το όνομα χρήστη %@ σε κάποιον άλλο. Παρακαλώ προσπαθήστε ξανά ζητώντας άλλο όνομα χρήστη."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Κάθε πρόσκληση θα χρηματοδοτείται με αυτό το ποσό, ώστε ο παραλήπτης να μπορεί να δημιουργήσει γρήγορα το όνομα χρήστη του στο δίκτυο Dash."; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Νωρίτερα"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Κάντε εύκολα Stake το Dash και κερδίστε παθητικό εισόδημα με μερικά απλά κλικ."; - /* SPV diagnostics */ "Edit birth height" = "Επεξεργασία ύψους έναρξης"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "πχ: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Η πρώτη κατάθεση πρέπει να είναι μεγαλύτερη από %@ "; - -/* CrowdNode */ -"First minimum deposit" = "Πρώτη ελάχιστη κατάθεση"; - /* DashSpend */ "Fixed amounts" = "Σταθερά ποσά"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "από το Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Τα κεφάλαια μεταφέρθηκαν"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Κερδίστε ανταμοιβές από καταθέσεις σε Dash Masternodes με μόλις 0,5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Ετοιμαστείτε να μπείτε στο DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Αποκτήστε ανταμοιβές άμεσα"; - /* No comment provided by engineer. */ "Get Started" = "Ξεκινήστε"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Αποκτήστε το όνομα χρήστη σας"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Ξεκινώντας με το CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Δωροκάρτα"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Δωροκάρτα · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Μεταβείτε στον ιστότοπο του CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Μεταβείτε στην Ιστοσελίδα"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Ύψος %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Αυτή είναι μια διεύθυνση Dash που έχει οριστεί για το λογαριασμό σας CrowdNode στο πορτοφόλι Dash σε αυτή τη συσκευή"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Κρατήστε πατημένο οποιοδήποτε κουμπί παραπάνω για να το αντικαταστήσετε με τη λειτουργία που χρειάζεστε"; -/* CrowdNode */ -"How CrowdNode staking works" = "Πώς λειτουργεί το staking στο CrowdNode "; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Πώς μπορώ να αποκτήσω Test Dash;"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Πόσο ιδιωτικό είναι το DashPay;"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Πώς να επιβεβαιώσετε τη διεύθυνση API Dash σας"; - /* No comment provided by engineer. */ "How to use your gift card" = "Πώς να χρησιμοποιήσετε την δωροκάρτα σας"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Αποδέχομαι ότι θα χάσω τα νομίσματά μου εάν δεν διαθέτω πλέον τη φράση ανάκτησης"; -/* CrowdNode */ -"I agree to CrowdNode" = "Συμφωνώ με το CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Εάν επιλέξετε να δώσετε δικαιώματα σε μεταγενέστερο χρόνο και δεν βρίσκεστε στο Ηνωμένο Βασίλειο, μπορείτε να χρησιμοποιήσετε το Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Εάν ποτέ χάσετε τη φράση πρόσβασης σας, μπορείτε να επαληθεύσετε τον εαυτό σας με άλλα μέσα για να ανακτήσετε την πρόσβαση στα κεφάλαια του CrowdNode σας."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Εάν χάσετε τη φράση πρόσβασης για αυτό το πορτοφόλι και χάσετε αυτή τη συσκευή ή απεγκαταστήσετε το Dash Wallet, θα χάσετε την πρόσβαση στα χρήματά σας στο CrowdNode και τα χρήματα σε αυτό το πορτοφόλι."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Εάν εξακολουθείτε να θέλετε να κάνετε εκκαθάριση παρακαλώ εισάγετε: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "Σε περίπτωση μεγαλύτερων αναλήψεων, το CrowdNode θα καταβάλει τις αναλήψεις εντός δύο εβδομάδων. Αυτό οφείλεται στα πρωτόκολλα ασφαλείας τους και τις περισσότερες φορές θα διεκπεραιώνονται πολύ πιο γρήγορα."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Σε περίπτωση που χάσετε τον φράση πρόσβασής σας, θα χάσετε το δικαίωμα στο όνομα χρήστη σας."; -/* CrowdNode Portal */ -"In process…" = "Σε εξέλιξη..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Πληροφορίες σχετικά με τον online λογαριασμό σας"; - /* Buy Sell Portal */ "Initializing" = "Έναρξη λειτουργίας"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Μετακινήθηκε εσωτερικά στο"; -/* CrowdNode */ -"Introducing Staking" = "Εισαγωγή στο Staking"; - /* Invalid transaction */ "Invalid" = "Μη έγκυρο"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Μη έγκυρη διεύθυνση Dash!"; -/* CrowdNode Online */ -"Invalid Email" = "Μη έγκυρο email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Μη έγκυρο email ή κωδικός πρόσβασης."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Αναφέρθηκε ζήτημα"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Μπορεί να χρειαστεί ένα λεπτό για να ενημερωθεί το υπόλοιπό σας."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Μπορεί να χρειαστεί ένα λεπτό για να φτάσουν τα χρήματά σας."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Εγγραφείτε τώρα"; -/* CrowdNode */ -"Joining the pool" = "Συμμετοχή στην δεξαμενή"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Διατηρήστε αυτά τα νομίσματα ιδιωτικά. Ισχύουν τέλη δικτύου και ιδιωτικότητας."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Αφήνοντας την δεξαμενή"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Αφήστε έναν άλλο χρήστη του Dash Wallet να σαρώσει αυτόν τον κωδικό για να σας προσθέσει ως επαφή."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Συνδέστε το λογαριασμό στην Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Σύνδεση υπάρχοντος λογαριασμού"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Σύνδεση υφιστάμενου λογαριασμού CrowdNode"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Σύνδεση Uphold Λογαριασμού"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Συνδεθείτε στο CrowdNode"; - /* DashSpend */ "Log in to your account" = "Συνδεθείτε στο λογαριασμό σας"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Φαίνεται ότι αδειάζετε το Dash Πορτοφόλι σας"; - /* adjective, security level */ "Low" = "χαμηλά"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Μέσο"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Τα μέλη είναι ελεύθερα να φύγουν από την δεξαμενή και τις περισσότερες φορές μπορούν να φύγουν αμέσως."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Δεν υπάρχουν ανεπιβεβαίωτες συναλλαγές για απόρριψη."; -/* CrowdNode */ -"New CrowdNode Account" = "Νέος λογαριασμός CrowdNode"; - /* Voting */ "New to old" = "Νέα σε παλιά"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online λογαριασμός"; - /* Online Merchant */ "Online Merchant" = "Online έμπορος"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Οι πληρωμές με κάθε επαφή ομαδοποιούνται σε ένα σημείο, με ονόματα και προφίλ αντί για ακατέργαστες συναλλαγές."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Διεύθυνση πληρωμής"; -/* CrowdNode */ -"Payout Options" = "Επιλογές πληρωμής"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "ανά 24 ώρες"; - -/* CrowdNode */ -"per hour" = "ανά ώρα"; - -/* CrowdNode */ -"per transaction" = "ανά συναλλαγή"; - /* Usernames */ "Personalise profile" = "Προσαρμόστε το προφίλ"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Παρακαλούμε μεταβείτε στο λογαριασμό σας στην Uphold για να επαληθεύσετε την ταυτότητά σας."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Λάβετε υπόψη ότι το email δεν αποθηκεύεται από το Dash Wallet και αποστέλλεται μόνο στο Crowdnode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Παρακαλείστε να σημειώσετε ότι το όνομα χρήστη ΔΕΝ μπορεί να αλλάξει από τη στιγμή που έχει καταχωρηθεί."; /* Usernames */ "Please note that you will not be able to change it in future" = "Παρακαλώ σημειώστε ότι δεν θα μπορείτε να το αλλάξετε στο μέλλον."; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Σημειώστε ότι δεν θα μπορείτε να κάνετε ανάληψη των χρημάτων σας από το CrowdNode σε αυτό το πορτοφόλι μέχρι να αυξήσετε το υπόλοιπό σας σε %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Τοποθετήστε το τηλέφωνό σας κοντά στη συσκευή NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Παρακαλώ περιμένετε"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Παρακαλώ περιμένετε πριν ξεκινήσετε την επόμενη ανάληψη"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Περιμένετε μέχρι να συγχρονιστεί πλήρως το πορτοφόλι πριν εξάγετε το ιστορικό των συναλλαγών σας."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Οι τιμές δεν ανακτήθηκαν. Οι Fiat τιμές ενδέχεται να είναι εσφαλμένες."; -/* CrowdNode */ -"Primary Dash address" = "Κύρια διεύθυνση Dash"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Πλεονεκτήματα"; -/* CrowdNode Portal */ -"Protect your savings" = "Προστατέψτε τις οικονομίες σας"; - /* Usernames */ "Prove your identity" = "Αποδείξτε την ταυτότητα σας"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Διαβάστε την Πολιτική απόσυρσης"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Μόνο για ανάγνωση"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Λάβετε απευθείας στο Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Λάβετε καθημερινά το μερίδιό σας από τις ανταμοιβές."; - /* Received transaction */ "Received" = "Ελήφθησαν"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Ελήφθη από %@"; -/* CrowdNode */ -"Receiving rewards" = "Λήψη ανταμοιβών"; - "Records your masternodes as having voted, without taking a side." = "Καταγράφει τα masternodes σας ως να έχουν ψηφίσει, χωρίς να πάρουν θέση."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Στείλτε %@ Dash από την κύρια διεύθυνση Dash που χρησιμοποιείτε σήμερα για τον λογαριασμό σας στην CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Αποστολή πρόσκλησης"; -/* Coinbase - CrowdNode */ -"Send Report" = "Αποστολή αναφοράς"; - /* No comment provided by engineer. */ "Send to" = "Εστάλη στο"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Αποστολή σε"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Αποστολή σε λογαριασμό CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Αποστολή στο Dash Wallet σε αυτή τη συσκευή"; - /* Buy Dash */ "Sending to:" = "Αποστολή σε:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Εγκατάσταση πορτοφολιού"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Μοιραστείτε"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Προβολή κλειδιών Masternode"; -/* CrowdNode */ -"Show QR" = "Εμφάνιση QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Προβολή Φράσης Ανάκτησης"; /* Alert title */ "Sign in required" = "Απαιτείται είσοδος"; -/* CrowdNode */ -"Sign up error" = "Σφάλμα εγγραφής"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Εγγραφείτε στο CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Εγγραφείτε για να ολοκληρώσετε τη δημιουργία λογαριασμού"; - /* ZenLedger */ "Simplify your crypto taxes" = "Απλοποιήστε τους φόρους των κρυπτονομισμάτων σας"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Ξεκινά αφού προσθέσετε κεφάλαια"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Συγχρονισμένο με το τρέχον Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Συγχρονισμός"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Το δίκτυο Dash πρέπει να ψηφίσει για να εγκρίνει ορισμένα ονόματα χρηστών πριν δημιουργηθούν."; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Το δίκτυο Dash διευθύνεται από έναν αριθμό Masternodes, οι οποίοι αποτελούν βασικό μέρος της διεξαγωγής των πληρωμών."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Τα Dash κατατέθηκαν επιτυχώς στο λογαριασμό σας στην Coinbase. Υπήρξε όμως πρόβλημα στη μεταφορά τους στο Dash Wallet σε αυτή τη συσκευή."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Αυτή η διεύθυνση δεν μπορεί να πληρωθεί από το υπόλοιπο %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Αυτός ο κωδικός PIN θα χρειαστεί να ξεκλειδώσετε την εφαρμογή σας κάθε φορά που την χρησιμοποιείτε."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Αυτό το QR περιέχει ήδη την αίτηση πληρωμής για %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Αυτό αντιπροσωπεύει την τρέχουσα Ετήσια Ποσοστιαία Απόδοση ενός πλήρους Masternode μείον το τέλος CrowdNode 15%. Δεν αποτελεί εγγυημένο ποσοστό απόδοσης και μπορεί να αυξηθεί ή να μειωθεί ανάλογα με το μέγεθος των δεξαμενών CrowdNode και την τιμή του Dash."; - "This still counts as your masternodes having voted in this contest." = "Αυτό εξακολουθεί να μετρά ως ψήφος των masternodes σας σε αυτή τη διαμάχη."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "στο Dash Wallet σε αυτή τη συσκευή"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Για να ξεκινήσετε το staking, δημιουργήστε έναν λογαριασμό στο CrowdNode ή συνδεθείτε σε έναν ήδη υπάρχοντα."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "στη διεύθυνση Dash που έχει οριστεί για το λογαριασμό σας CrowdNode στο Dash Wallet σε αυτή τη συσκευή"; - /* No comment provided by engineer. */ "Today" = "Σήμερα"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Ιστορικό συναλλαγών"; - /* Balance info sheet */ "Transaction history isn't available" = "Το ιστορικό συναλλαγών δεν είναι διαθέσιμο"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Σφάλμα μεταφοράς"; - /* Coinbase */ "Transfer Failed" = "Η μεταφορά απέτυχε"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Έγκυρη πρόσκληση"; -/* CrowdNode Portal */ -"Validating address…" = "Επικύρωση διεύθυνσης..."; - /* No comment provided by engineer. */ "Validating username failed" = "Η επικύρωση του ονόματος χρήστη απέτυχε"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Απαιτείται επαλήθευση"; - /* Usernames */ "Verified during registration" = "Επαληθεύτηκε κατά την εγγραφή"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Επιβεβαίωση"; -/* CrowdNode */ -"Verify your API Dash address" = "Επαληθεύστε τη διεύθυνση API Dash"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Επαληθεύστε τη φράση ανάκτησης για να ορίσετε νέο PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Πολύ Υψηλά"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Πολύ μικρές ποσότητες Dash θα αποστέλλονται από και προς το CrowdNode για να επαληθεύσετε ότι είστε ο ιδιοκτήτης αυτής της διεύθυνσης πορτοφολιού."; - /* No comment provided by engineer. */ "View All" = "Προβολή Όλων"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Η ψηφοφορία για το «%@» έχει ήδη κλείσει. Ανανεώστε για να δείτε το αποτέλεσμα."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Περιμένετε μέχρι να συγχρονιστεί πλήρως το blockchain, ώστε να μπορέσουμε να επανεξετάσουμε το ιστορικό των συναλλαγών σας."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Περιμένετε μέχρι να συγχρονιστεί πλήρως το blockchain, ώστε να μπορέσουμε να επανεξετάσουμε το ιστορικό των συναλλαγών σας. Επισκεφθείτε τον ιστότοπο του CrowdNode για να συνδεθείτε ή να εγγραφείτε."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Περιμένετε μέχρι να συγχρονιστεί το πορτοφόλι για να ολοκληρώσετε τη συναλλαγή"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Δεν μπορέσαμε να δημιουργήσουμε το λογαριασμό σας στο CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Δεν μπορέσαμε να κάνουμε κατάθεση στο λογαριασμό σας στο CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Δεν μπορέσαμε να κάνουμε ανάληψη από το λογαριασμό σας στο CrowdNode."; - /* Explore */ "We have two types of merchants" = "Έχουμε δύο τύπους εμπόρων"; /* No comment provided by engineer. */ "We Upgraded" = "Αναβαθμίσαμε"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Θα εντοπίσουμε αυτόματα αυτή τη συναλλαγή και θα μεταφέρουμε το ίδιο ποσό στο λογαριασμό σας στο CrowdNode. Μετά από αυτό θα μπορείτε να κάνετε καταθέσεις και αναλήψεις στο Dash Wallet σε αυτή τη συσκευή."; - /* Website */ "Website" = "Ιστοσελίδα"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Δεν έχετε όνομα χρήστη όσο βρίσκεται σε εξέλιξη η ψηφοφορία. Καταχωρήστε τώρα ένα μη διεκδικούμενο όνομα χρήστη — παραμένει δικό σας και, αν η ψηφοφορία σας αποδώσει το «%@», θα είστε προσβάσιμοι και με τα δύο ονόματα χρήστη."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Γιατί βλέπω όλες αυτές τις συναλλαγές;"; -/* CrowdNode */ -"Why do you need an online account?" = "Γιατί χρειάζεστε online λογαριασμό;"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Γιατί δεν πρέπει να τραβήξω στιγμιότυπο οθόνης;"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "Μεσώ του Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Απόσυρση"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Κάντε ανάληψη χωρίς όρια με έναν online λογαριασμό στον ιστότοπο της CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Ζητήθηκε απόσυρση"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Αποσύρει ολόκληρο το υπόλοιπο"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Μπορείτε να αλλάξετε τον τρόπο και τον χρόνο καταβολής των κερδών της ανταμοιβής σας."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Μπορείτε να συνεχίσετε να χρησιμοποιείτε το DashPay για πληρωμές, αλλά δεν μπορείτε να ενημερώσετε το προφίλ σας ή να προσθέσετε περισσότερες επαφές μέχρι να γεμίσετε το credit υπόλοιπο σας."; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Μπορείτε να πληρώσετε με Dash στο ταμείο."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Μπορείτε να δείτε λεπτομερείς πληροφορίες σχετικά με τις καταθέσεις, τις αναλήψεις και τα κέρδη ανταμοιβής σας."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Μπορείτε να καθορίσετε οποιαδήποτε διεύθυνση URL η οποία είναι δημόσια διαθέσιμη στο διαδίκτυο, ώστε να μπορούν να τη δουν άλλοι χρήστες στο δίκτυο Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Έχετε ήδη ψηφίσει για αυτό το όνομα χρήστη %ld φορές. Μπορείτε να δώσετε μόνο μία ακόμη ψήφο για αυτό το όνομα χρήστη."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Έχετε εισάγει ένα μη έγκυρο κλειδί"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Δεν έχετε επαρκή χρήματα για να προχωρήσετε."; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Πρέπει να δημιουργήσετε αντίγραφο ασφαλείας της φράση πρόσβασης στο Dash Wallet"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Χρειάζεστε τουλάχιστον %@ Dash για να δημιουργήσετε μια πρόσκληση"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Χρειάζεστε τουλάχιστον %@ στο Dash Wallet σας"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Πρέπει να έχετε περισσότερα %@ Dash για να δημιουργήσετε αυτό το όνομα χρήστη"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Πρέπει να συνδεθείτε στο DashSpend για να αγοράσετε δωροκάρτες."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Πρέπει να περιμένετε 5 λεπτά πριν ξεκινήσετε άλλη ανάληψη."; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Χρειάζεστε μόνο %@ για να ενταχθείτε στο pool."; - /* DashSpend confirmation */ "You pay" = "Πληρώνετε"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Στείλατε το αίτημα επαφής στον %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Θα πρέπει να έχετε θετικό υπόλοιπο στο Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Θα πρέπει να έχετε τουλάχιστον %@ για να προχωρήσετε στην επαλήθευση του CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Θα λάβετε Dash %@ στο Dash Wallet σας σε αυτή τη συσκευή. Λάβετε υπόψη ότι μπορεί να χρειαστούν έως και 2-3 λεπτά για να ολοκληρωθεί η μεταφορά."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Θα λαμβάνετε αυτόματα αποσπασματικές πληρωμές και θα επανεπενδύονται εξ ορισμού, ωστόσο, είναι επίσης εύκολο να ρυθμίσετε αυτόματες αναλήψεις για να λαμβάνετε επαναλαμβανόμενες πληρωμές."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Το υπόλοιπο των credits σας είναι χαμηλό"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Ο λογαριασμός σας στο CrowdNode δημιουργείται..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Ο λογαριασμός σας στο CrowdNode έχει ρυθμιστεί και είναι έτοιμος για χρήση!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Ο λογαριασμός σας στο CrowdNode δημιουργήθηκε χρησιμοποιώντας αυτές τις συναλλαγές."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Η διεύθυνση του CrowdNode σας έχει επιβεβαιωθεί."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Η διεύθυνση CrowdNode έχει επικυρωθεί, αλλά απαιτείται επαλήθευση."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Το DashPay Username σας είναι έτοιμο για χρήση"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Η κατάθεσή σας στο CrowdNode ελήφθη."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Η ώρα της συσκευής σας είναι%1$@ με %2$d δεύτερα. Δεν μπορείτε να χρησιμοποιήσετε το CoinJoin λόγω αυτής της διαφοράς.\n\nΟι ρυθμίσεις ώρας στη συσκευή σας πρέπει να αλλάξουν σε \"Αυτόματη ρύθμιση ώρας\" για να χρησιμοποιήσετε το CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Η κύρια διεύθυνση Dash που χρησιμοποιείτε επί του παρόντος για τον λογαριασμό σας στο CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Το ιδιωτικό σας υπόλοιπο. Τα ποσά και οι διευθύνσεις είναι κρυπτογραφημένα στην αλυσίδα, ώστε τα διαθέσιμα και το ιστορικό σας να παραμένουν εμπιστευτικά."; diff --git a/DashWallet/en.lproj/Localizable.strings b/DashWallet/en.lproj/Localizable.strings index 996b53665e..8b10fd99ca 100644 --- a/DashWallet/en.lproj/Localizable.strings +++ b/DashWallet/en.lproj/Localizable.strings @@ -1,12 +1,6 @@ /* No comment provided by engineer. */ " " = " "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ listed for %2$@ DASH"; @@ -386,9 +380,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -422,18 +413,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* No comment provided by engineer. */ "Activity" = "Activity"; @@ -520,9 +502,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -574,9 +553,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -613,9 +589,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -687,15 +660,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -705,13 +672,8 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ - +/* Platform address payment detail */ "Balance after" = "Balance after"; -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Balances and transfers are not publicly visible"; @@ -722,9 +684,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -1237,9 +1196,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -1282,9 +1238,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Connected peers"; @@ -1421,18 +1374,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1445,10 +1392,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1461,30 +1404,6 @@ /* Coinbase/Payment Methods */ "Credit Card" = "Credit Card"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1494,12 +1413,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1518,9 +1431,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1573,9 +1483,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1609,22 +1516,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Derivation path"; @@ -1711,9 +1602,6 @@ /* SPV diagnostics */ "Dropping…" = "Dropping…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1723,21 +1611,12 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Edit birth height"; @@ -1753,7 +1632,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1967,12 +1846,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -2018,12 +1891,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -2060,9 +1927,6 @@ /* Shielded transfer status */ "Funds locked — finishing transfer" = "Funds locked — finishing transfer"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -2078,9 +1942,6 @@ /* Usernames */ "Get ready to join DashPay" = "Get ready to join DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* Governance */ "Governance" = "Governance"; @@ -2096,9 +1957,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -2120,9 +1978,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -2153,9 +2008,6 @@ /* SPV sync phase */ "Headers" = "Headers"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ /* Masternodes */ "Height %u" = "Height %u"; @@ -2183,18 +2035,12 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; /* DashPay FAQ */ "How private is DashPay?" = "How private is DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -2210,9 +2056,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -2264,12 +2107,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2306,15 +2143,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2333,9 +2164,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2372,9 +2200,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2387,9 +2212,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2456,12 +2278,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2489,9 +2305,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* No comment provided by engineer. */ "Keep Wallet" = "Keep Wallet"; @@ -2541,9 +2354,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Let another Dash Wallet user scan this code to add you as a contact."; @@ -2568,12 +2378,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2631,9 +2435,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2667,9 +2468,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2764,9 +2562,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -3207,9 +3002,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "No unconfirmed transactions to drop."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -3381,9 +3173,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3537,12 +3326,9 @@ /* DashPay Contacts */ "Payments made directly to an address aren't retained here." = "Payments made directly to an address aren't retained here."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Payout address"; -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3555,15 +3341,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3637,21 +3414,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3676,9 +3444,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3703,9 +3468,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3727,9 +3489,6 @@ /* Balance info sheet section */ "Pros" = "Pros"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3787,9 +3546,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Usernames */ "Ready around %@" = "Ready around %@"; @@ -3808,9 +3564,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3826,9 +3579,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Received from %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - /* No comment provided by engineer. */ "Recover" = "Recover"; @@ -4140,9 +3890,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4155,10 +3902,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4207,12 +3950,6 @@ /* No comment provided by engineer. */ "Sending to" = "Sending to"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4267,7 +4004,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Share"; /* Receive screen */ @@ -4315,24 +4052,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4393,9 +4118,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Starts after you add funds"; @@ -4495,9 +4217,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4582,9 +4301,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -4678,9 +4394,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "This address can't be paid from your %@ balance"; @@ -4804,18 +4517,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - /* Dash DEX / dex_error_allowance */ "This token needs approval before it can be swapped." = "This token needs approval before it can be swapped."; @@ -4849,12 +4556,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -4876,9 +4577,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Transaction history isn't available"; @@ -4902,9 +4600,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5174,9 +4869,6 @@ /* DashPay Invitations */ "Valid invitation" = "Valid invitation"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5186,9 +4878,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Verified during registration"; @@ -5201,9 +4890,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verify your recovery phrase to set a new PIN."; @@ -5213,9 +4899,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "View All"; @@ -5270,15 +4953,9 @@ "Voting keys" = "Voting keys"; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5336,24 +5013,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5372,12 +5037,9 @@ /* No comment provided by engineer. */ "Where to Spend?" = "Where to Spend?"; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5396,19 +5058,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Balance info sheet */ "Works with every Dash wallet, exchange, and merchant" = "Works with every Dash wallet, exchange, and merchant"; @@ -5466,9 +5121,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5478,9 +5130,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5511,9 +5160,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5529,24 +5175,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -5556,12 +5193,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -5577,12 +5208,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "You sent the contact request to %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -5601,9 +5226,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -5616,21 +5238,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -5655,9 +5262,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -5696,9 +5300,6 @@ "Your Platform balance" = "Your Platform balance"; "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential."; diff --git a/DashWallet/eo.lproj/Localizable.strings b/DashWallet/eo.lproj/Localizable.strings index 9d7bd244ae..2ea998d77c 100644 --- a/DashWallet/eo.lproj/Localizable.strings +++ b/DashWallet/eo.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " aŭ "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ estas ofertita por %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiva"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo poste"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldoj kaj transpagoj ne estas publike videblaj"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Konektitaj samtavolanoj"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kreditoj"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Derivada vojo"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Forĵetante…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Redakti la komencan alton"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Monrimedoj movitaj"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Preparu vin aliĝi al DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Alto %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Kiom privata estas DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Konservu ĉi tiujn monerojn privataj. Aplikiĝas retaj kaj privatecaj kotizoj."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Lasu alian uzanton de Dash Wallet skani ĉi tiun kodon por aldoni vin kiel kontakton."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Neniuj nekonfirmitaj transakcioj por forĵeti."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "La pagoj kun ĉiu kontakto grupiĝas en unu loko, kun nomoj kaj profiloj anstataŭ krudaj transakcioj."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Elpaga adreso"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Avantaĝoj"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Nur legebla"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Ricevita de %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Registras viajn masternodojn kiel voĉdonintajn, sen preni flankon."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Sendado al"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Kunhavigi"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Komenciĝas post kiam vi aldonos monrimedojn"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Ĉi tiu adreso ne pageblas el via saldo %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Tio tamen kalkuliĝas kiel voĉdono de viaj masternodoj en ĉi tiu disputo."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "La transakcia historio ne disponeblas"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Valida invito"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Kontrolita dum la registrado"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Kontrolu vian reakiran frazon por agordi novan PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Vidi ĉion"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "La voĉdonado pri „%@“ jam fermiĝis. Refreŝigu por vidi la rezulton."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Vi ne havas uzantnomon dum la voĉdonado daŭras. Registru nun nekonkurencatan uzantnomon — ĝi restas via, kaj se la voĉdonado aljuĝas al vi „%@“, vi estos atingebla per ambaŭ uzantnomoj."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Elprenas la tutan saldon"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Vi sendis la kontaktpeton al %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Via privata saldo. Sumoj kaj adresoj estas ĉifritaj en la ĉeno, do viaj havaĵoj kaj historio restas konfidencaj."; diff --git a/DashWallet/es.lproj/Localizable.strings b/DashWallet/es.lproj/Localizable.strings index e46d71322a..17a13877ff 100644 --- a/DashWallet/es.lproj/Localizable.strings +++ b/DashWallet/es.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " o "; -/* CrowdNode */ -" Privacy Policy " = "Política de privacidad"; - -/* CrowdNode */ -" Terms of Use " = "Términos de uso"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ puesto a la venta por %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Es necesario que tu dispositivo esté resguardado por una clave para proteger tu billetera. Ve a configuraciones y habilita una clave de acceso para continuar"; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Un Masternode necesita 1000 Dash como garantía y cada Masternode actualmente se recompensa aproximadamente %@ por año."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Acepta los términos y condiciones"; -/* CrowdNode */ -"Accept Terms Of Use" = "Aceptar los términos de uso"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Aceptando los términos de uso…"; - -/* CrowdNode */ -"Account Recovery" = "Recuperación de cuenta"; - /* Masternode status */ "Active" = "Activo"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Todas las transferencias hacia y desde CrowdNode desde este dispositivo se realizarán con la siguiente dirección Dash desde este dispositivo."; - /* ZenLedger */ "Allow" = "Permitir"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Ocurrió un error desconocido. Por favor, intenta nuevamente más tarde."; -/* CrowdNode */ -"and" = "y"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Cualquier nombre de usuario que contenga un número del 2-9, o tenga más de 20 caracteres de largo, o que contenga un guion, será automáticamente aprobado"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Como propietario de un masternode, puedes votar para aprobar los nombres de usuario solicitados antes de que los usuarios puedan crearlos. Puede también bloquear los nombres de usuario que usted considere inapropiados"; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Como la mayoría de las personas no tienen exactamente 1000 Dash a mano, CrowdNode ha creado un servicio donde, al agrupar los depósitos de los miembros, pueden lograr los beneficios de poseer un Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Respaldo"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Contraseña de respaldo"; - /* A noun. Used as a title. */ "Backup Wallet" = "Hacer backup de billetera"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Haz una copia de seguridad de tu contraseña para crear una cuenta de CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Haz una copia de respaldo de tu frase de recuperación"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Saldo"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo después"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance en CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Los saldos y las transferencias no son visibles públicamente"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Transferencia bancaria"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Forma parte de un Masternode de Dash con CrowdNode"; - /* TimeSkew */ "behind" = "detrás"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Cerrar y avisar cuando termine"; - /* No comment provided by engineer. */ "Close App" = "Cerrar App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Conectado"; -/* CrowdNode */ -"Connected Dash address" = "Dirección de Dash conectada"; - /* SPV sync */ "Connected peers" = "Pares conectados"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Crear nombre de usuario"; -/* CrowdNode */ -"Create Account" = "Crear una cuenta"; - /* Create DashSpend account */ "Create account" = "Crear cuenta"; /* DashSpend account title */ "Create an account or log into an existing one" = "Crea una cuenta o inicia sesión en una cuenta existente"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Crear una cuenta de CrowdNode en línea"; - /* No comment provided by engineer. */ "Create invitation" = "Crear invitación"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Crear cuenta online"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Créditos"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Beneficios de CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Soporte de CrowdNode "; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode usa esta dirección como tu ID de cuenta. Perderás el acceso a tus fondos dentro de esta billetera y tu cuenta de CrowdNode si pierdes la contraseña asociada a esta dirección."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Límites de retiro de CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Cuenta"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ Billetera de Dash"; - /* No comment provided by engineer. */ "CSV Export" = "Exportar CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Tarjetas de regalo CTX"; -/* Crowdnode */ -"Current APY = %@" = "APY actual = %@"; - -/* CrowdNode */ -"Current APY is %@" = "El APY actual es %@"; - /* Explore Dash: Filters */ "Current location" = "Ubicación actual"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dirección de dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dirección de Dash designada para tu cuenta de CrowdNode en la billetera de Dash en este dispositivo"; - /* No comment provided by engineer. */ "Dash balance" = "Saldo en Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "Billetera de Dash ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Fecha"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Negado"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Depositar"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposita %@ para empezar a ganar"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposita al menos %@ Dash en tu billetere de Dash para completar un retiro"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposita al menos %@ para empezar a ganar"; - -/* CrowdNode */ -"Deposit sent" = "Depósito enviado"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Ruta de derivación"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Descartando…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Debido a los términos de servicio de CrowdNode, los usuarios no pueden retirar más de:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Debido a restricciones de regulación, debemos validar que no está en el Reino Unido. Solo validaremos su ubicación cuando ingrese a las funcionalidades de Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Debido al proceso de votación, la Dash Network ha decidido asignar el nombre de usuario ' 1%@ '  a otra persona. Inténtalo de nuevo solicitando otro nombre de usuario."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "por ejemplo, johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Cada invitación se financiará con esta cantidad para que el receptor pueda crear rápidamente su nombre de usuario en la red de Dash."; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Antes"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Haz fácilmente staking de tus Dash y obtén ingresos pasivos con unos pocos clics."; - /* SPV diagnostics */ "Edit birth height" = "Editar la altura de origen"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "El primer depósito debe ser más de %@"; - -/* CrowdNode */ -"First minimum deposit" = "Primer depósito mínimo"; - /* DashSpend */ "Fixed amounts" = "Montos fijos"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "desde CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "desde la billetera de Dash "; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fondos movidos"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Obtén recompensas de depósitos en Masternodes de Dash con tan solo 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Prepárate para unirte a DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Obtén recompensas al instante"; - /* No comment provided by engineer. */ "Get Started" = "Comienza"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Obten tu nombre de usuario"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Primeros pasos con CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Tarjeta de regalo"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Tarjeta de regalo · ' 1%@ '"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Ir al sitio web de CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Ir a la página web"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Altura %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Aquí hay una dirección de Dash designada para tu cuenta de CrowdNode en la billetera de Dash en este dispositivo."; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Apreté cualquier botón arriba para reemplazarlo con la función que necesita"; -/* CrowdNode */ -"How CrowdNode staking works" = "Cómo funciona el staking de CrowdNode"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "¿Cómo obtengo Dash de prueba?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "¿Qué tan privado es DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Cómo confirmar tu dirección API de Dash"; - /* No comment provided by engineer. */ "How to use your gift card" = "Cómo usar su certificado de regalo"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Acepto que perderé mis monedas si ya no tengo mi frase de recuperación"; -/* CrowdNode */ -"I agree to CrowdNode" = "Acepto a CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Si decide otorgar permiso en un momento futuro, y ud no se encuentra en en el Reino Unido, usted podrá usar Coinbase."; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Si alguna vez pierdes tu contraseña, puedes verificarte por otros medios para recuperar el acceso a tus fondos de CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Si pierdes tu contraseña para esta billetera y pierdes este dispositivo o desinstalas la billetera de Dash, perderás el acceso a tus fondos en CrowdNode y a los fondos dentro de esta billetera."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Si aún deseas limpiar por favor introduce: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "En caso de retiros mayores, CrowdNode pagará los retiros dentro de dos semanas. Esto se debe a sus protocolos de seguridad y en la mayoría de los casos, se solucionará mucho más rápido."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "En caso de que pierdas tu frase de contraseña, perderás tu derecho al nombre de usuario solicitado."; -/* CrowdNode Portal */ -"In process…" = "En proceso..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Información sobre tu cuenta online"; - /* Buy Sell Portal */ "Initializing" = "Inicializando"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Movido internamente para"; -/* CrowdNode */ -"Introducing Staking" = "Introduciendo Staking"; - /* Invalid transaction */ "Invalid" = "Inválido"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Dirección inválida de Dash"; -/* CrowdNode Online */ -"Invalid Email" = "E-mail inválido"; - /* No comment provided by engineer. */ "Invalid email or password." = "Correo electrónico o contraseña incorrectos."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "La billetera IOS: ' %@ ' ha reportado un problema"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Tu saldo puede tardar un minuto en actualizarse."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Tus fondos pueden tardar un minuto en llegar."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Unirse ahora"; -/* CrowdNode */ -"Joining the pool" = "Entrar al grupo"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Mantén estas monedas privadas. Se aplican comisiones de red y de privacidad."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Dejar el grupo"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Deja que otro usuario de Dash Wallet escanee este código para añadirte como contacto."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Vincular cuenta de Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Vincular cuenta existente"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Vincular una cuenta de CrowdNode existente"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Vincular cuenta de Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Iniciar sesión en CrowdNode"; - /* DashSpend */ "Log in to your account" = "Inicia sesión en tu cuenta"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Parece que estás vaciando tu billetera de Dash "; - /* adjective, security level */ "Low" = "Bajo"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Mediano"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Los miembros son libres de abandonar el grupo y en la mayoría de los casos, pueden hacerlo de inmediato."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "No hay transacciones sin confirmar que descartar."; -/* CrowdNode */ -"New CrowdNode Account" = "Nueva cuenta de CrowdNode "; - /* Voting */ "New to old" = "Nuevo a viejo"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "En línea"; -/* CrowdNode Portal */ -"Online Account" = "Cuenta online"; - /* Online Merchant */ "Online Merchant" = "Comercio en línea"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Los pagos con cada contacto se agrupan en un solo lugar, con nombres y perfiles en vez de transacciones sin procesar."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Dirección de pago"; -/* CrowdNode */ -"Payout Options" = "Opciones de pago"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "por 24 horas"; - -/* CrowdNode */ -"per hour" = "por hora"; - -/* CrowdNode */ -"per transaction" = "por transacción"; - /* Usernames */ "Personalise profile" = "Personalizar perfil"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Por favor ve a tu cuenta de Uphold para verificar tu identidad."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Ten en cuenta que la billetera de Dash no guarda el correo electrónico y solo se envía a CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Por favor, observe que el nombre de usuario NO se puede cambiar una vez sea registrado."; /* Usernames */ "Please note that you will not be able to change it in future" = "Por favor, observe que no lo podrá cambiar en el futuro"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Ten en cuenta que no podrás retirar tus fondos de CowdNode a esta billetera hasta que aumentes tu saldo a %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Coloca tu teléfono cerca del dispositivo NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Por favor espera"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Espera antes de iniciar el próximo retiro."; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Espera hasta que la billetera esté completamente sincronizada antes de exportar tu historial de transacciones"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Los precios no fueron encontrados. Los valores mostrados en FIAT pueden estar equivocados."; -/* CrowdNode */ -"Primary Dash address" = "Dirección primaria de Dash"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Pros"; -/* CrowdNode Portal */ -"Protect your savings" = "Protege tus ahorros"; - /* Usernames */ "Prove your identity" = "Demuestra tu identidad"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Leer política de retiro"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Solo lectura"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Recibe directamente en la billetera de Dash "; -/* CrowdNode */ -"Receive your share of rewards daily." = "Recibe tu parte de las recompensas diariamente."; - /* Received transaction */ "Received" = "Recibido"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Recibido de %@"; -/* CrowdNode */ -"Receiving rewards" = "Recibir recompensas"; - "Records your masternodes as having voted, without taking a side." = "Registra tus masternodes como que han votado, sin tomar partido."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Envía %@ desde tu dirección principal de Dash que usas actualmente para tu cuenta de CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Enviar invitación"; -/* Coinbase - CrowdNode */ -"Send Report" = "Enviar reporte"; - /* No comment provided by engineer. */ "Send to" = "Enviar para"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Enviando a"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Envío a la cuenta de CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Envío a la billetera de Dash en este dispositivo"; - /* Buy Dash */ "Sending to:" = "Enviando a:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Configurar Billetera"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Compartir"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Mostrar Llaves de Masternodo"; -/* CrowdNode */ -"Show QR" = "Mostrar QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Mostrar Frase de Recuperación"; /* Alert title */ "Sign in required" = "Es necesario iniciar sesión"; -/* CrowdNode */ -"Sign up error" = "Error de registro"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Regístrate en CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Regístrate para terminar de configurar la cuenta"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplifica tus impuestos criptográficos"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Empieza cuando añadas fondos"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Sincronizado con la billetera de Dash actual"; - /* No comment provided by engineer. */ "Syncing" = "Sincronizando"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "La red Dash debe votar para aprobar ciertos nombres de usuario antes de que sean creados"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Dash Network está impulsada por una serie de Masternodes que son una parte esencial para facilitar los pagos."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Los Dash se depositaron con éxito en tu cuenta de Coinbase. Pero hubo un problema al transferirlos a la billetera de Dash en este dispositivo."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Esta dirección no se puede pagar desde tu saldo %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Este PIN será requerido para desbloquear tu app cada vez que la utilices."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Este QR ya contiene la solicitud de pago de %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Esto representa el rendimiento porcentual anual actual de un Masternode completo menos la tarifa de CrowdNode del 15%. No es una tasa de rendimiento garantizada y puede aumentar o disminuir según el tamaño de los grupos de CrowdNode y el precio de Dash."; - "This still counts as your masternodes having voted in this contest." = "Esto sigue contando como que tus masternodes han votado en esta disputa."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "a la billetera de Dash en este dispositivo"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Para comenzar a hacer staking, crea una cuenta en CrowdNode o conéctate a una existente."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "a la dirección de Dash designada para tu cuenta de CrowdNode en la billetera de Dash en este dispositivo"; - /* No comment provided by engineer. */ "Today" = "Hoy"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Historial de transacciones"; - /* Balance info sheet */ "Transaction history isn't available" = "El historial de transacciones no está disponible"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Error de transferencia"; - /* Coinbase */ "Transfer Failed" = "Transacción fallida"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Invitación válida"; -/* CrowdNode Portal */ -"Validating address…" = "Validando dirección…"; - /* No comment provided by engineer. */ "Validating username failed" = "No se pudo validar el nombre de usuario"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verificación requerida"; - /* Usernames */ "Verified during registration" = "Verificado durante el registro"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Verificar"; -/* CrowdNode */ -"Verify your API Dash address" = "Verifica tu dirección API de Dash"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifica tu frase de recuperación para establecer un nuevo PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Muy alto"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Se enviarán cantidades muy pequeñas de Dash hacia y desde CrowdNode para verificar que tu eres el propietario de esta dirección de billetera."; - /* No comment provided by engineer. */ "View All" = "Ver todo"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "La votación sobre «%@» ya se ha cerrado. Actualiza para ver el resultado."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Espera hasta que la cadena esté completamente sincronizada para que podamos revisar tu historial de transacciones."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Espera hasta que la cadena esté completamente sincronizada, para que podamos revisar tu historial de transacciones. Visita el sitio web de CrowdNode para iniciar sesión o registrarte."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Espera hasta que la billetera esté sincronizada para completar la transacción"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "No pudimos crear tu cuenta de CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "No pudimos realizar un depósito en tu cuenta de CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "No pudimos retirar dinero de tu cuenta de CrowdNode."; - /* Explore */ "We have two types of merchants" = "Tenemos 2 tipos de comerciantes"; /* No comment provided by engineer. */ "We Upgraded" = "Actualizamos"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Detectaremos automáticamente esta transacción y transferiremos la misma cantidad a tu cuenta de CrowdNode. Después de eso, podrás realizar depósitos y retiros en la billetera de Dash en este dispositivo."; - /* Website */ "Website" = "Página web"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "No tienes nombre de usuario mientras la votación está en curso. Registra ahora un nombre de usuario no disputado — será tuyo para siempre y, si la votación te concede “%@”, se te podrá localizar con ambos nombres de usuario."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "¿Por qué veo todas estas transacciones?"; -/* CrowdNode */ -"Why do you need an online account?" = "¿Por qué necesitas una cuenta en línea?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "¿Por que no debo tomar una captura de pantalla?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "con la blockchain de Dash"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Retiro"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Retira sin límites con una cuenta en línea en el sitio web de CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Retiro solicitado"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Retira todo el saldo"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Puedes cambiar cómo / cuándo se te pagan las ganancias de tus recompensas."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Puedes seguir usando DashPay para realizar pagos, pero no podrás actualizar tu perfil ni agregar más contactos hasta que recargues tu saldo de crédito."; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Puede pagarle al cajero en Dash"; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Puedes ver información detallada sobre tus depósitos, retiros y ganancias de recompensas."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Puedes especificar cualquier URL que esté disponible públicamente en Internet para que otros usuarios puedan verla en la red de Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Ya has votado por este nombre de usuario %ld veces. Sólo puedes emitir un voto más para este nombre de usuario."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Has introducido una clave inválida"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "No tienes fondos suficientes para continuar"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Tienes que hacer una copia de seguridad de tu contraseña en tu billetera de Dash "; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Necesitas al menos %@ Dash para crear una invitación"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Necesitas al menos %@ en tu billetera de Dash"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Debes tener al menos '%@ ' mas para crear este usuario"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Usted debe ingresar a DashSpend para comprar certificados de regalo."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Debes esperar 5 minutos antes de iniciar otro retiro."; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Solo necesitas %@ para unirte al pool."; - /* DashSpend confirmation */ "You pay" = "Tu pagas"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Enviaste la solicitud de contacto a %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Deberías tener un saldo positivo en la billetera de Dash "; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Deberías tener al menos %@ para continuar con la verificación de CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Tu recibirás %@ Dash en tu billetera de Dash en este dispositivo. Ten en cuenta que puede tomar hasta 2-3 minutos completar una transferencia."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Recibirás pagos fraccionados automáticamente y se reinvertirán de manera predeterminada; sin embargo, también es fácil configurar retiros automáticos para recibir pagos recurrentes."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Tu saldo de crédito es bajo"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Tu cuenta de CrowdNode está creando..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "¡Tu cuenta de CrowdNode está configurada y lista para usar!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Tu cuenta de CrowdNode se creó utilizando estas transacciones."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Tu dirección de CrowdNode ha sido confirmada."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Tu dirección de CrowdNode ha sido validada, pero se requiere verificación."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Tu nombre de usuario de DashPay está listo para usar"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Tu depósito en CrowdNode ha sido recibido."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "La hora de tu dispositivo es %1$@ por %2$d segundos. No puedes usar CoinJoin debido a esta diferencia.\n\nLa configuración de hora en tu dispositivo debe cambiarse a “Establecer hora automáticamente” para poder usar CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Tu dirección principal de Dash que usas actualmente para tu cuenta de CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Tu saldo privado. Los importes y las direcciones están cifrados en la cadena, así que tus fondos y tu historial se mantienen confidenciales."; diff --git a/DashWallet/et.lproj/Localizable.strings b/DashWallet/et.lproj/Localizable.strings index f4da030f46..bca8856850 100644 --- a/DashWallet/et.lproj/Localizable.strings +++ b/DashWallet/et.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " või "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ pandi müüki hinnaga %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Rahakoti turvamiseks on seadmele tarvis pääsukoodi. Jätkamiseks mine seadetesse ja lülita pääsukoodi küsimine sisse."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiivne"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Jääk"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Jääk pärast"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Jäägid ja ülekanded pole avalikult nähtavad"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Ühendatud partnerid"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediidid"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dashi aadress"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Tuletustee"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Loobume…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Muuda alguskõrgust"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Vahendid liigutatud"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Valmistu DashPayga liituma"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Kõrgus %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Kui privaatne on DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Nõustun, et kui kaotan rahakoti taastamise sala-lause, siis jään oma coinidest ilma"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Kui sa endiselt soovid seda puhastada, siis palun sisesta: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Hoia need mündid privaatsena. Kehtivad võrgu- ja privaatsustasud."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Lase teisel Dash Walleti kasutajal see kood skannida, et lisada sind kontaktiks."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Kinnitamata tehinguid, millest loobuda, ei ole."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Iga kontaktiga tehtud maksed on koondatud ühte kohta, nimede ja profiilidega toortehingute asemel."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Väljamakse aadress"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Plussid"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Ainult lugemiseks"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Saadud kasutajalt %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Märgib su masternode'id hääletanuks, ilma poolt valimata."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Saadetakse"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Jaga"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Algab pärast vahendite lisamist"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Sellele aadressile ei saa maksta su %@ jäägist"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "See loeb ikkagi selleks, et su masternode'id on selles vaidluses hääletanud."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Tehingute ajalugu pole saadaval"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Kehtiv kutse"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Kontrollitud registreerimise ajal"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Kinnita oma taastefraas, et määrata uus PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Vaata kõiki"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Hääletamine nime „%@“ üle on juba suletud. Tulemuse nägemiseks värskenda."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Sul ei ole kasutajanime, kuni hääletus kestab. Registreeri kohe vaidlustamata kasutajanimi — see jääb sulle ja kui hääletus annab sulle „%@“, oled kättesaadav mõlema kasutajanimega."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Võtab välja kogu jäägi"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Saatsid kontaktitaotluse kasutajale %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Su privaatne jääk. Summad ja aadressid on ahelas krüptitud, nii et su varad ja ajalugu jäävad konfidentsiaalseks."; diff --git a/DashWallet/fa.lproj/Localizable.strings b/DashWallet/fa.lproj/Localizable.strings index c37d60f1b3..1bd886c14e 100644 --- a/DashWallet/fa.lproj/Localizable.strings +++ b/DashWallet/fa.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " یا "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "‏%1$@ به قیمت %2$@ DASH برای فروش گذاشته شد"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "پذیرش شرایط استفاده..."; - -/* CrowdNode */ -"Account Recovery" = "بازیابی حساب"; - /* Masternode status */ "Active" = "فعال"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "همه تراکنش‌ها از و به کراودنود از این دستگاه از طریق نشانی زیر از این دستگاه صورت می‌گیرد. "; - /* ZenLedger */ "Allow" = "اجازه می‌دهم"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "نسخه پشتیبان‌گیری"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "تهیه پشتیبان از عبارت ورودی"; - /* A noun. Used as a title. */ "Backup Wallet" = "کیف پول پشتیبان"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "از عبارت ورودی‌تان یک نسخه پشتیبان تهیه کنید تا بتوانید حساب کراودنود را ایجاد کنید. "; - /* Back up wallet */ "Backup your recovery phrase" = "گرفتن نسخه پشتیبان از عبارت بازیابی"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "موجودی"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "موجودی پس از آن"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "موجودی‌ها و انتقال‌ها به‌صورت عمومی دیده نمی‌شوند"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "از طریق کراودنود یکی از مسترنودهای دش بشوید."; - /* TimeSkew */ "behind" = "عقب"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "ببند و وقتی آماده شد، مرا مطلع کن. "; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "متصل"; -/* CrowdNode */ -"Connected Dash address" = "اتصال به نشانی دش برقرار است"; - /* SPV sync */ "Connected peers" = "همتاهای متصل"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "ایجاد یک حساب کاربری"; -/* CrowdNode */ -"Create Account" = "ایجاد حساب"; - /* Create DashSpend account */ "Create account" = "ایجاد حساب"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "یک حساب آنلاین کراودنود ایجاد کنید"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "ایجاد حساب آنلاین"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "اعتبارها"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "مزایای کراودنود"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "پشتیبانی کراودنود"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "کراودنود از این نشانی به عنوان شناسه حساب شما استفاده می‌کند. اگر این عبارت ورودی مربوط به این نشانی را گم کنید، دیگر نمی‌توانید به موجودی کیف پول و نیز حساب‌تان در کراودنود دسترسی داشته باشید. "; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "سقف برداشت کراودنود"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "دش‌والت ➝ کراودنود"; - /* No comment provided by engineer. */ "CSV Export" = "بیرون دادن فرمت CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "کارت‌های هدیه سی‌تی‌اکس"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "موجودی دش"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "کراودنود➝دش‌والت"; - /* No comment provided by engineer. */ "Date" = "تاریخ"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "غیرمجاز"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "واریز"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "ارسال واریز"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "مسیر اشتقاق"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "در حال دورانداختن…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "با توجه به شرایط استفاده از کراودنود کاربران نمی‌توانند بیشتر از این میزان برداشت کنند: "; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "برای هر دعوت، مبلغی اختصاص می‌یابد تا دریافت‌کننده بتواند نام کاربری‌اش را در شبکه دش ایجاد کتد."; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "قدیمی‌تر"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "با چند کلیک ساده، به راحتی دش را سپرده‌گذاری کرده و درآمدی جانبی برای خودتان ایجاد کنید. "; - /* SPV diagnostics */ "Edit birth height" = "ویرایش ارتفاع آغاز"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "ایمیل"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "مقادیر ثابت"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "از کراودنود"; - -/* from Dash Wallet */ -"from Dash Wallet" = "از دش والت"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "وجوه منتقل شد"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "با سپرده‌گذاری در مسترنودهای دش، حتی به میزان ۰.۵ دش، پاداش دریافت کنید. "; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "برای پیوستن به DashPay آماده شوید"; -/* CrowdNode */ -"Get Rewards Instantly" = "دریافت آنی پاداش"; - /* No comment provided by engineer. */ "Get Started" = "شروع"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "انتتخاب نام کاربری"; -/* CrowdNode */ -"Getting started with CrowdNode" = "آغاز کار با کراودنود"; - /* No comment provided by engineer. */ "Gift card" = "کارت هدیه"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "رفتن به وب‌سایت کراودنود"; - /* No comment provided by engineer. */ "Go to Website" = "رفتن به وب‌سایت"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "ارتفاع %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "یکی از دگمه‌های بالا را نگه دارید تا آن را با کاربرد مورد نظرتان جایگزین کنید"; -/* CrowdNode */ -"How CrowdNode staking works" = "عملکرد استیکینگ کراونود"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "چگونه تست دش دریافت کنم؟ "; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "‏DashPay چقدر خصوصی است؟"; -/* CrowdNode */ -"How to confirm your API Dash address" = "چطور نشانی ای‌پی‌آی دش‌تان را تائید کنید"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "اگر عبارت ورودی‌تان را گم کنید، می‌توانید با استفاده از روش‌های دیگر احراز هویت شوید تا بتوانید به موجودی کراودنود دسترسی یابید. "; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "اگر عبارت ورودی‌تان برای این کیف پول را گم کنید و این دستگاه مفقود شود و یا دش والت از روی آن حذف شود، دیگر نمی‌توانید به موجودی‌تان در کراودنود و موجودی داخل کیف پول دسترسی داشته باشید. "; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "در صورتی که عبارت بازیابی را گم کنید، حق دسترسی به نام کاربری درخواستی را از دست خواهید داد. "; -/* CrowdNode Portal */ -"In process…" = "اجرای فرآیند..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "اطلاعات درباره حساب آنلاین شما"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "به صورت داخلی منتقل شد به"; -/* CrowdNode */ -"Introducing Staking" = "آشنایی با سپرده‌گذاری"; - /* Invalid transaction */ "Invalid" = "نامعتبر"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "به‌روزرسانی موجودی شما یک دقیقه طول می‌کشد. "; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "مبلغ مورد نظرتان یک دقیقه دیگر می‌رسد. "; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "الان بپیوندید"; -/* CrowdNode */ -"Joining the pool" = "پیوستن به مجموعه"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "این سکه‌ها را خصوصی نگه دارید. کارمزد شبکه و کارمزد حریم خصوصی اعمال می‌شود."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "بگذارید کاربر دیگر Dash Wallet این کد را اسکن کند تا شما را به‌عنوان مخاطب اضافه کند."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "حساب کوین‌بیس‌ را متصل کنید"; -/* CrowdNode */ -"Link Existing Account" = "اتصال به حساب موجود "; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "اتصال به یک حساب موجود در کراودنود"; - /* No comment provided by engineer. */ "Link Uphold Account" = "اتصال حساب کاربری در آپهولد"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "ورود به کراودنود"; - /* DashSpend */ "Log in to your account" = "ورود به حساب شما"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "به نظر می‌رسد موجودی دش والت‌تان را خالی می‌کنید"; - /* adjective, security level */ "Low" = "پائین"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "متوسط"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "اعضا می‌توانند هر وقت که بخواهند این مجموعه را ترک کنند و در اکثر مواقع می‌توانند بلافاصله آن را ترک کنند. "; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "تراکنش تأییدنشده‌ای برای دورانداختن وجود ندارد."; -/* CrowdNode */ -"New CrowdNode Account" = "ایجاد حساب جدید کراودنود"; - /* Voting */ "New to old" = "از جدید به قدیم"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "آنلاین"; -/* CrowdNode Portal */ -"Online Account" = "حساب آنلاین"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "پرداخت‌ها با هر مخاطب در یک جا گرد می‌آیند، با نام و نمایه به‌جای تراکنش‌های خام."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "نشانی پرداخت"; -/* CrowdNode */ -"Payout Options" = "گزینه‌های پاداش"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "هر ۲۴ ساعت"; - -/* CrowdNode */ -"per hour" = "هر ساعت"; - -/* CrowdNode */ -"per transaction" = "به ازای هر تراکنش"; - /* Usernames */ "Personalise profile" = "شخصی‌سازی پروفایل"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "لطفا به حساب آپهولد خودتان بروید و هویت‌تان را تائید کنید. "; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "دقت داشته باشید که ایمیل توسط دش والت ذخیره نمی‌شود و فقط برای کراودنود ارسال می‌شود"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "لطفا منتظر بمانید"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "لطفاً پیش از آغاز برداشت بعدی منتظر بمانید"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "قیمت‌ها به دست نیامد. قیمت‌های بدون تغییر شاید نادرست باشد"; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "مزایا"; -/* CrowdNode Portal */ -"Protect your savings" = " از پس‌اندازهایتان محافظت کنید"; - /* Usernames */ "Prove your identity" = "هویت‌تان را اثبات کنید"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "شرایط برداشت را بخوانید"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "فقط‌خواندنی"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "مستقیما روی دش والت دریافت کنید"; -/* CrowdNode */ -"Receive your share of rewards daily." = "سهم‌تان از پاداش روزانه را دریافت کنید. "; - /* Received transaction */ "Received" = "دریافتی"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "دریافت‌شده از %@"; -/* CrowdNode */ -"Receiving rewards" = "دریافت پاداش"; - "Records your masternodes as having voted, without taking a side." = "مسترنودهای شما را به‌عنوان رأی‌داده ثبت می‌کند، بدون جانبداری."; /* No comment provided by engineer. */ @@ -4407,9 +4155,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4422,10 +4167,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "ارسال دعوتنامه"; -/* Coinbase - CrowdNode */ -"Send Report" = "ارسال گزارش"; - /* No comment provided by engineer. */ "Send to" = "ارسال به"; @@ -4507,12 +4248,6 @@ /* No comment provided by engineer. */ "Sending to" = "ارسال به"; -/* CrowdNode */ -"Sending to CrowdNode account" = "ارسال به حساب کراودنود"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "ارسال به دش والت روی این دستگاه"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4567,7 +4302,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "به اشتراک گذاری"; /* Receive screen */ @@ -4621,24 +4356,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "نمایش کیوآر کد"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "نشان دادن عبارت بازیابی"; /* Alert title */ "Sign in required" = "نیازمند ورود به حساب"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "ثبت‌نام برای کراودنود"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "برای تکمیل حساب‌تان ثبت‌نام کنید"; - /* ZenLedger */ "Simplify your crypto taxes" = "فرآیند مالیاتی رمزارزی خود را ساده‌ کنید"; @@ -4701,9 +4424,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "سپرده‌گذاری"; - /* Usernames */ "Starts after you add funds" = "پس از افزودن وجه آغاز می‌شود"; @@ -4806,9 +4526,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "همزمان‌سازی با دش والت کنونی"; - /* No comment provided by engineer. */ "Syncing" = "در حال همزمان‌سازی"; @@ -4898,9 +4615,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "شبکه دش توسط تعدادی مسترنود اداره می‌شود که بخشی اساسی در تسهیل پرداخت‌ها هستند. "; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -4997,9 +4711,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "این نشانی را نمی‌توان از موجودی %@ شما پرداخت کرد"; @@ -5188,18 +4899,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "برای هر بار باز کردن قفل اپلیکیشن در مواقع استفاده، به این پین کد نیاز خواهید داشت."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "این رقم نشانگر درصد بازدهی سالانه یک مسترنود منهای کارمزد ۱۵ درصدی کراودنود است. این نرخ بازگشت سرمایه تضمینی نیست و ممکن است بر اساس تعداد حاضران در کراودنود و قیمت دش پائین و بالا رود. "; - "This still counts as your masternodes having voted in this contest." = "این همچنان به‌عنوان رأی دادن مسترنودهای شما در این رقابت به شمار می‌آید."; /* Dash DEX / dex_error_allowance */ @@ -5244,12 +4949,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "برای آغاز سپرده‌گذاری، ابتدا یک حساب در کراودنود ایجاد کنید و یا به یک حساب موجود در آن متصل شوید. "; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "به نشانی دشی که برای حساب کراودنود در دش والت روی این دستگاه در نظر گرفته‌اید"; - /* No comment provided by engineer. */ "Today" = "امروز"; @@ -5271,9 +4970,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "سابقه تراکنش‌ها"; - /* Balance info sheet */ "Transaction history isn't available" = "تاریخچه تراکنش‌ها در دسترس نیست"; @@ -5297,9 +4993,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "عملیات انتقال ناموفق بود"; @@ -5554,9 +5247,6 @@ /* DashPay Invitations */ "Valid invitation" = "دعوتنامه معتبر"; -/* CrowdNode Portal */ -"Validating address…" = "در حال اعتبارسنجی نشانی..."; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5566,9 +5256,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "نیازمند تائید"; - /* Usernames */ "Verified during registration" = "هنگام ثبت راستی‌آزمایی شد"; @@ -5581,9 +5268,6 @@ /* No comment provided by engineer. */ "Verify" = "تائید"; -/* CrowdNode */ -"Verify your API Dash address" = "نشانی ای‌پی‌آی دش‌تان را تائید کنید. "; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "برای تعیین PIN جدید، عبارت بازیابی خود را تأیید کنید."; @@ -5599,9 +5283,6 @@ /* adjective, security level */ "Very High" = "بسیار بالا"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "یک مبلغ جزئی دش از کراودنود به این حساب فرستاده می‌شود تا از اینکه شما صاحب این نشانی هستید اطمینان حاصل شود. "; - /* No comment provided by engineer. */ "View All" = "مشاهده همه"; @@ -5687,15 +5368,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "رأی‌گیری درباره «%@» پیش‌تر بسته شده است. برای دیدن نتیجه به‌روزرسانی کنید."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "منتظر بمانید تا بلاکچین کاملا به‌روزرسانی شود تا بتوانید سابقه تراکنش‌هایتان را ببینید. "; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "منتظر بمانید تا بلاکچین کاملا به‌روزرسانی شود تا بتوانید سابقه تراکنش‌هایتان را ببینید. برای ورود به حساب یا ثبت‌نام به وب‌سایت کراودنود بروید. "; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5755,24 +5430,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "نمی‌توانیم حساب کراودنود شما را ایجاد کنیم. "; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "نتوانستیم به حساب کراودنود مبلغی را واریز کنیم. "; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "نتوانستیم از حساب کراودنود شما مبلغی برداشت کنیم. "; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "ما ارتقاء دادیم"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "ما به صورت خودکار به بررسی تراکنش پرداخته و همان مقدار را به حساب کراودنود شما برمی‌گردانیم. پس از آن، می‌توانید در دش والت روی این دستگاه اقدام به واریز و برداشت کنید. "; - /* Website */ "Website" = "وب‌سایت"; @@ -5826,12 +5489,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "تا زمانی که رأی‌گیری در جریان است نام کاربری ندارید. همین حالا یک نام کاربری بدون رقابت ثبت کنید — آن نام مال شما می‌ماند و اگر رأی‌گیری «%@» را به شما بدهد، با هر دو نام کاربری در دسترس خواهید بود."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "چرا همه این تراکنش‌ها را می‌بینم؟ "; -/* CrowdNode */ -"Why do you need an online account?" = "چرا نیاز به یک حساب آنلاین دارید؟ "; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "چرا نباید اسکرین‌شات بگیریم؟ "; @@ -5850,19 +5510,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = " بلاکچین دش"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "برداشت"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "برداشت بدون سیف با حساب آنلاین در وب‌سایت کراودنود"; - -/* CrowdNode */ -"Withdrawal requested" = "درخواست برداشت صورت گرفته است"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "کل موجودی را برداشت می‌کند"; @@ -5928,9 +5581,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "می‌توانید نحوه برداشت/زمان برداشت پاداشی که به شما داده می‌شود را تغییر دهید. "; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "همچنان می‌توانید از دش‌پی برای پرداخت‌ها استفاده کنید، ولی نمی‌توانید پروفایل‌تان را به‌روزرسانی کرده و یا مخاطبان بیشتری اضافه کنید، تا وقتی که موجودی اعتبارتان را افزایش دهید"; @@ -5940,9 +5590,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "جزئیات مربوط به واریزها، برداشت‌ها و پاداش‌ها را می‌توانید ببینید. "; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5973,9 +5620,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5991,24 +5635,15 @@ /* Voting */ "You have entered an invalid key" = "کلید اشتباه وارد کردید"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "باید از عبارت ورودی‌تان در دش والت یک نسخه پشتیبان تهیه کنید. "; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6018,12 +5653,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "پیش از برداشت بعدی، باید ۵ دقیقه منتظر بمانید"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "مبلغی که پرداخت می‌کنید"; @@ -6039,12 +5668,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "شما درخواست تماس را برای %@ فرستادید"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "موجودی دش ولت شما باید مثبت باشد"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6063,9 +5686,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "مبلغی جزئی را به صورت خودکار دریافت خواهید کرد و به صورت خودکار دوباره سرمایه‌گذاری می‌شود. با این وجود، امکان تنظیم برداشت خودکار برای دریافت پرداخت‌های مکرر به سادگی امکان‌پذیر است. "; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6083,21 +5703,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "موجودی اعتباری‌تان پائین است"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "حساب کراودنود شما در حال ایجاد شدن است..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "حساب کراودنود شما ایجاد شده و آماده استفاده است! "; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "حساب کراودنود با استفاده از این تراکنش‌ها ایجاد شد"; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "نشانی کراودنود شما تائید شد. "; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "نشانی کراودنود شما اعتبارسنجی شد، اما نیازمند تائید است. "; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6122,9 +5727,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "واریز شما به کراودنود صورت گرفت. "; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6191,9 +5793,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "نشانی اصلی دش شما که از آن در حال حاضر برای حساب کراودنود  استفاده می‌کنید. "; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "موجودی خصوصی شما. مبالغ و نشانی‌ها روی زنجیره رمزگذاری می‌شوند، پس دارایی‌ها و تاریخچه شما محرمانه می‌مانند."; diff --git a/DashWallet/fi.lproj/Localizable.strings b/DashWallet/fi.lproj/Localizable.strings index 928f6d872b..d6cdc4cac8 100644 --- a/DashWallet/fi.lproj/Localizable.strings +++ b/DashWallet/fi.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " tai "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ asetettiin myyntiin hintaan %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiivinen"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo maksun jälkeen"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldot ja siirrot eivät näy julkisesti"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Yhdistetyt vertaiset"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediitit"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Johdannaispolku"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Hylätään…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Muokkaa aloituskorkeutta"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Varat siirretty"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Valmistaudu liittymään DashPayhin"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Korkeus %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Kuinka yksityinen DashPay on?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Pidä nämä kolikot yksityisinä. Verkko- ja yksityisyysmaksut ovat voimassa."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Anna toisen Dash Wallet -käyttäjän skannata tämä koodi lisätäkseen sinut yhteystiedoksi."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Ei hylättäviä vahvistamattomia tapahtumia."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Kunkin yhteystiedon kanssa tehdyt maksut on koottu yhteen paikkaan, nimineen ja profiileineen raakatapahtumien sijaan."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Maksuosoite"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Edut"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Vain luku"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Vastaanotettu käyttäjältä %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Kirjaa masternodesi äänestäneiksi ottamatta kantaa."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Lähetetään"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Jaa"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Alkaa, kun lisäät varoja"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Tästä %@-saldosta ei voi maksaa tähän osoitteeseen"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Tämä lasketaan silti siksi, että masternodesi ovat äänestäneet tässä kiistassa."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Tapahtumahistoria ei ole käytettävissä"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Kelvollinen kutsu"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Vahvistettu rekisteröinnin yhteydessä"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Vahvista palautuslauseesi, niin voit asettaa uuden PIN-koodin."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Näytä kaikki"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Äänestys kohteesta ”%@” on jo suljettu. Päivitä nähdäksesi tuloksen."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Sinulla ei ole käyttäjänimeä äänestyksen ollessa käynnissä. Rekisteröi nyt kiistaton käyttäjänimi — se pysyy sinun, ja jos äänestys myöntää sinulle nimen ”%@”, sinut tavoittaa molemmilla käyttäjänimillä."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Nostaa koko saldon"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Lähetit yhteyspyynnön käyttäjälle %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Yksityinen saldosi. Summat ja osoitteet on salattu ketjussa, joten omistuksesi ja historiasi pysyvät luottamuksellisina."; diff --git a/DashWallet/fil.lproj/Localizable.strings b/DashWallet/fil.lproj/Localizable.strings index 759d9de37f..37be621d55 100644 --- a/DashWallet/fil.lproj/Localizable.strings +++ b/DashWallet/fil.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " o "; -/* CrowdNode */ -" Privacy Policy " = "Patakaran sa Pagkapribado"; - -/* CrowdNode */ -" Terms of Use " = "Mga Tuntunin ng Paggamit"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "Nakalista ang %1$@ sa halagang %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Kailangan ng device passcode para pangalagaan ang iyong pitaka. Pumunta sa settings at i-on ang passcode para magpatuloy,"; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Ang isang Masternode ay nangangailangan ng 1000 Dash bilang collateral at ang bawat Masternode ay kasalukuyang ginagantimpalaan ng humigit-kumulang %@ bawat taon."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Tanggapin ang mga tuntunin at\nkundisyon"; -/* CrowdNode */ -"Accept Terms Of Use" = "Tanggapin ang Mga Tuntunin ng paggamit"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Tumatanggap ng mga tuntunin sa paggamit…"; - -/* CrowdNode */ -"Account Recovery" = "Pagbawi ng Account"; - /* Masternode status */ "Active" = "Aktibo"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Ang lahat ng paglilipat papunta at mula sa CrowdNode mula sa device na ito ay isasagawa gamit ang ibaba ng Dash address mula sa device na ito."; - /* ZenLedger */ "Allow" = "Payagan"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "May naganap na hindi kilalang error. Pakisubukang muli mamaya."; -/* CrowdNode */ -"and" = "at"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Awtomatikong maaaprubahan ang anumang username na mayroong numero 2-9, higit sa 20 character o may gitling."; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Bilang may-ari ng masternode maaari kang bumoto upang aprubahan ang mga hiniling na username bago ito magawa ng mga user.\nMaaari mong harangan ang paglikha ng mga username na sa tingin mo ay hindi naaangkop."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Dahil karamihan sa mga tao ay walang eksaktong 1000 Dash, gumawa ang Crowdnode ng isang serbisyo kung saan, sa pamamagitan ng pagsasama-sama ng mga deposito mula sa mga miyembro, makakamit nila ang mga benepisyo ng pagmamay-ari ng Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "back-up"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "I-backup ang passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup na Pitaka"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "I-backup ang iyong passphrase para gumawa ng CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "I-backup ang iyong recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balanse"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Balanse pagkatapos"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balanse sa CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balanse:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Hindi pampublikong nakikita ang mga balanse at paglilipat"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Maging bahagi ng isang Dash Masternode na may CrowdNode"; - /* TimeSkew */ "behind" = "sa huli"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Isara at ipaalam kapag tapos na ito"; - /* No comment provided by engineer. */ "Close App" = "Isara ang app"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Konektado"; -/* CrowdNode */ -"Connected Dash address" = "Nakakonektang Dash address"; - /* SPV sync */ "Connected peers" = "Mga nakakonektang peer"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Gumawa ng username"; -/* CrowdNode */ -"Create Account" = "Lumikha ng Account"; - /* Create DashSpend account */ "Create account" = "Gumawa ng account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Lumikha ng isang account o mag-log in sa isang umiiral na"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Lumikha ng online na CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Gumawa ng imbitasyon"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Lumikha ng Online na Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Mga Kredito"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Mga benepisyo ng CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Suporta sa CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "Ginagamit ng CrowdNode ang address na ito bilang iyong account ID. Mawawalan ka ng access sa iyong mga pondo sa loob ng wallet na ito at sa iyong CrowdNode account kung mawala mo ang passphrase na nauugnay sa address na ito."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Mga limitasyon sa pag-withdraw sa CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Mga CTX gift card"; -/* Crowdnode */ -"Current APY = %@" = "Kasalukuyang APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Ang kasalukuyang APY ay %@"; - /* Explore Dash: Filters */ "Current location" = "Kasalukuyang Lokasyon"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Address ng Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address na itinalaga para sa iyong CrowdNode account sa Dash Wallet sa device na ito"; - /* No comment provided by engineer. */ "Dash balance" = "Balanse ng Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Petsa"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Tinanggihan"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposito"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Magdeposito nang %@ para magsimulang kumita"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Magdeposito ng hindi bababa sa %@ Dash sa iyong Dash Wallet upang makumpleto ang isang withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Magdeposito nang hindi bababa sa %@ para magsimulang kumita"; - -/* CrowdNode */ -"Deposit sent" = "Ipinadala ang deposito"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Derivation path"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Dinodrop…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Dahil sa mga tuntunin ng serbisyo ng CrowdNode, ang mga user ay maaaring mag-withdraw ng hindi hihigit sa:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Dahil sa mga hadlang sa regulasyon, kailangan naming i-verify na wala ka sa UK. Tinitingnan lang namin ang iyong lokasyon kapag ipinasok mo ang mga feature ng Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Dahil sa proseso ng pagboto, nagpasya ang Dash Network na italaga ang username '%@' sa ibang tao. Pakisubukang muli sa pamamagitan ng paghiling ng isa pang username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "hal. juandelacruz@gmail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Ang bawat imbitasyon ay popondohan ng halagang ito upang mabilis na magawa ng tatanggap ang kanilang username sa Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Mas maaga"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Madaling i-stake ang Dash at kumita ng passive income sa ilang simpleng pag-click."; - /* SPV diagnostics */ "Edit birth height" = "I-edit ang panimulang taas"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "hal: juandelacruz"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Ang unang deposito ay dapat na higit sa %@"; - -/* CrowdNode */ -"First minimum deposit" = "Unang Minimum na Deposito"; - /* DashSpend */ "Fixed amounts" = "Mga nakapirming halaga"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "mula sa CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "mula sa Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Nailipat ang pondo"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Makakuha ng mga reward mula sa mga deposito sa Dash Masternodes na may kasing liit na 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Maghanda nang sumali sa DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Makakuha kaagad ng Mga Gantimpala"; - /* No comment provided by engineer. */ "Get Started" = "Magsimula"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Kunin ang iyong Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Pagsisimula sa CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Pumunta sa website ng CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Pumunta sa Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Taas %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Narito ang isang Dash address na itinalaga para sa iyong CrowdNode account sa Dash Wallet sa device na ito."; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Pindutin ang anumang pindutan sa itaas upang palitan ito ng function na kailangan mo"; -/* CrowdNode */ -"How CrowdNode staking works" = "Paano gumagana ang CrowdNode staking"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Paano ako makakakuha ng Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Gaano kapribado ang DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Paano kumpirmahin ang iyong API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "Paano gamitin ang iyong gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Tinatanggap ko na mawawala ko ang aking mga barya kung sakaling hindi ko na maalala ang recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "Sumasang ayon ako sa CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Kung pipiliin mong magbigay ng mga pahintulot sa ibang pagkakataon at wala ka sa UK, maaari mong gamitin ang Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Kung sakaling mawala mo ang iyong passphrase, maaari mong i-verify ang iyong sarili sa ibang paraan upang mabawi ang access sa iyong mga pondo ng CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Kung mawala mo ang iyong passphrase para sa wallet na ito at mawala ang device na ito o i-uninstall ang Dash Wallet, mawawalan ka ng access sa iyong mga pondo sa CrowdNode at ang mga pondo sa loob ng wallet na ito."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Kung gusto mo paring i-wipe ito paki-input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "Sa kaso ng mas malalaking withdrawal, magbabayad ang CrowdNode ng mga withdrawal sa loob ng dalawang linggo. Ito ay dahil sa kanilang mga protocol sa seguridad at kadalasan ay mas mabilis na hahawakan."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Kung sakaling mawala mo ang iyong passphrase mawawala ang iyong karapatan sa iyong hiniling na username."; -/* CrowdNode Portal */ -"In process…" = "Pinoproseso…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Impormasyon tungkol sa iyong online na account"; - /* Buy Sell Portal */ "Initializing" = "Nagsisimula"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally ilipat sa"; -/* CrowdNode */ -"Introducing Staking" = "Ipinapakilala ang Staking"; - /* Invalid transaction */ "Invalid" = "Hindi wasto"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Hindi wasto ang iyong Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Hindi wastong email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Di-wastong email o password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Naiulat na isyu"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Maaaring tumagal ng isang minuto bago ma-update ang iyong balanse."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Maaaring tumagal ng isang minuto bago dumating ang iyong mga pondo."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Sumali ka na"; -/* CrowdNode */ -"Joining the pool" = "Sumasali sa pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Panatilihing pribado ang mga baryang ito. May bayarin sa network at sa privacy."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Umalis sa Pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Pa-scan ang code na ito sa ibang user ng Dash Wallet para maidagdag ka bilang contact."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "I-link ang Coinbase account"; -/* CrowdNode */ -"Link Existing Account" = "I-link ang Umiiral na Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "I-link ang Umiiral na CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "I-liink ang Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Mag-log in sa CrowdNode"; - /* DashSpend */ "Log in to your account" = "Mag-log in sa iyong account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Mukhang inubos mo ang laman ng iyong Dash Wallet"; - /* adjective, security level */ "Low" = "Mababa"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Katamtaman"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Ang mga miyembro ay malayang umalis sa pool at kadalasan ay maaaring umalis kaagad."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Walang hindi nakumpirmang transaksyon na puwedeng i-drop."; -/* CrowdNode */ -"New CrowdNode Account" = "Bagong CrowdNode Account"; - /* Voting */ "New to old" = "Bago sa luma"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online na Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Nakagrupo sa isang lugar ang mga bayad sa bawat kontak, may pangalan at profile sa halip na raw na transaksyon."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Address ng bayad"; -/* CrowdNode */ -"Payout Options" = "Mga Pagpipilian sa Pagbabayad"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "bawat 24 na oras"; - -/* CrowdNode */ -"per hour" = "bawat oras"; - -/* CrowdNode */ -"per transaction" = "bawat transaksyon"; - /* Usernames */ "Personalise profile" = "I-personalize ang profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Mangyaring pumunta sa iyong Uphold account upang i-verify ang iyong pagkakakilanlan."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Pakitandaan na ang email ay hindi nai-save ng Dash Wallet at ipinapadala lamang sa Crowdnode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Mangyaring tandaan na ang username ay HINDI maaaring baguhin kapag ito ay nakarehistro."; /* Usernames */ "Please note that you will not be able to change it in future" = "Pakitandaan na hindi mo na ito mababago sa hinaharap"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Pakitandaan, hindi mo mai-withdraw ang iyong mga pondo mula sa CrowdNode patungo sa wallet na ito hanggang sa mapataas mo ang iyong balanse sa %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Pakilagay ang iyong phone malapit sa NFC device"; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Mangyaring maghintay"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Mangyaring maghintay bago simulan ang susunod na withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Mangyaring maghintay hanggang ang wallet ay ganap na ma-sync bago i-export ang iyong kasaysayan ng transaksyon."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Hindi nakuha ang mga presyo. Maaaring mali ang mga halaga ng Fiat."; -/* CrowdNode */ -"Primary Dash address" = "Pangunahing Address ng Dash"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Mga Bentahe"; -/* CrowdNode Portal */ -"Protect your savings" = "Protektahan ang iyong mga ipon"; - /* Usernames */ "Prove your identity" = "Patunayan ang iyong pagkakakilanlan"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Basahin ang Patakaran sa Pag-withdraw"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Basahin lamang"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Direktang tumanggap sa Dash Wallet."; -/* CrowdNode */ -"Receive your share of rewards daily." = "Tanggapin ang iyong bahagi ng mga reward araw-araw."; - /* Received transaction */ "Received" = "Natanggap"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Natanggap mula kay %@"; -/* CrowdNode */ -"Receiving rewards" = "Pagtanggap ng mga gantimpala"; - "Records your masternodes as having voted, without taking a side." = "Itinatala ang iyong mga masternode bilang bumoto na, nang hindi pumapanig."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Ipadala ang %@ mula sa iyong pangunahing Dash address na kasalukuyan mong ginagamit para sa iyong CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Magpadala ng imbitasyon"; -/* Coinbase - CrowdNode */ -"Send Report" = "Magpadala ng ulat"; - /* No comment provided by engineer. */ "Send to" = "Pinadala kay"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Ipinapadala kay"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Ipinapadala sa CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Ipinapadala sa Dash Wallet sa device na ito"; - /* Buy Dash */ "Sending to:" = "Nagpapadala kay"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Magset up ng wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Ipamahagi"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Ipakita ang susi ng masternode"; -/* CrowdNode */ -"Show QR" = "Ipakita ang QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Ipakita ang recovery phrase"; /* Alert title */ "Sign in required" = "Kailangang mag-sign in"; -/* CrowdNode */ -"Sign up error" = "Error sa pag sign up"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Mag-sign up sa CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Mag-sign up para tapusin ang pag-set up ng account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Pasimplehin ang iyong mga buwis sa crypto"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Magsisimula kapag nagdagdag ka ng pondo"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Naka-sync sa kasalukuyang Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Nagsi-sync"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Ang network ng Dash ay kailangang bumoto upang aprubahan ang ilang mga username bago sila malikha"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Ang Dash Network ay hinihimok ng isang bilang ng mga Masternode na isang mahalagang bahagi ng pagpapadali sa mga pagbabayad."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Ang Dash ay matagumpay na nadeposito sa iyong Coinbase account. Ngunit nagkaroon ng problema sa paglilipat nito sa Dash Wallet sa device na ito."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Hindi mababayaran ang address na ito mula sa iyong %@ na balanse"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Ang PIN na ito ay kailangan upang i-unlock ang iyong app kapag nais gamitin."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Ang QR na ito ay naglalaman na ng kahilingan sa pagbabayad para sa %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Kinakatawan nito ang kasalukuyang Annual Percentage Yield ng isang buong Masternode na mas mababa sa 15% na bayad sa CrowdNode. Ito ay hindi isang garantisadong rate ng pagbabalik at maaaring tumaas o bumaba batay sa laki ng mga pool ng CrowdNode at ang presyo ng Dash."; - "This still counts as your masternodes having voted in this contest." = "Nabibilang pa rin itong bumoto ang iyong mga masternode sa paligsahang ito."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "Sa Dash wallet sa device na ito"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Para simulan ang staking, gumawa ng account sa CrowdNode o kumonekta sa mayroon na."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Para sa Dash address na itinalaga para sa iyong CrowdNode account sa Dash Wallet sa device na ito"; - /* No comment provided by engineer. */ "Today" = "Ngayon"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Kasaysayan ng Transaksyon"; - /* Balance info sheet */ "Transaction history isn't available" = "Hindi available ang kasaysayan ng transaksyon"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Error sa Paglipat"; - /* Coinbase */ "Transfer Failed" = "Nabigo ang Paglipat"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Wastong imbitasyon"; -/* CrowdNode Portal */ -"Validating address…" = "Pinapatunayan ang address..."; - /* No comment provided by engineer. */ "Validating username failed" = "Bigo ang pagpapatunay ng username"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Kailangan ng beripikasyon"; - /* Usernames */ "Verified during registration" = "Naberipika habang nagpaparehistro"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Kumpirmahin"; -/* CrowdNode */ -"Verify your API Dash address" = "I-verify ang iyong API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "I-verify ang iyong recovery phrase para magtakda ng bagong PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Napakataas"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Ang napakaliit na halaga ng Dash ay ipapadala sa at mula sa CrowdNode upang i-verify na ikaw ang may-ari ng address ng wallet na ito."; - /* No comment provided by engineer. */ "View All" = "Tingnan Lahat"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Sarado na ang pagboto sa “%@”. Mag-refresh para makita ang resulta."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Maghintay hanggang sa ganap na ma-sync ang chain, para masuri namin ang iyong history ng transaksyon."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Maghintay hanggang sa ganap na ma-sync ang chain, para masuri namin ang iyong history ng transaksyon. Bisitahin ang website ng CrowdNode upang mag-log in o mag-sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Maghintay hanggang ma-sync ang wallet upang makumpleto ang transaksyon"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Hindi namin magawa ang iyong CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Hindi kami makapagdeposito sa iyong CrowdNode account"; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Hindi kami makapag-withdraw mula sa iyong CrowdNode account."; - /* Explore */ "We have two types of merchants" = "Mayroon kaming dalawang uri ng mangangalakal"; /* No comment provided by engineer. */ "We Upgraded" = "Kami ay nag-upgrade"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Awtomatiko naming matutukoy ang transaksyong ito at ilipat ang parehong halaga sa iyong CrowdNode account. Pagkatapos nito, makakagawa ka na ng mga deposito at pag-withdraw sa Dash Wallet sa device na ito."; - /* Website */ "Website" = "Website"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Wala kang username habang isinasagawa ang pagboto. Magrehistro na ngayon ng username na walang katunggali — mananatili itong sa iyo, at kung ipagkaloob sa iyo ng pagboto ang “%@”, maaabot ka sa parehong username."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Bakit ko nakikita ang lahat ng mga transaksyong ito?"; -/* CrowdNode */ -"Why do you need an online account?" = "Bakit kailangan mo ng online na account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Bakit hindi ako dapat kumuha ng screenshot?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "kasama ang Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Mag-withdraw nang walang limitasyon gamit ang isang online na account sa website ng CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Hiniling ang withdrawal"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Iniuurong ang buong balanse"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Maaari mong baguhin kung paano / kailan binabayaran sa iyo ang iyong mga kita sa reward."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Maaari mong patuloy na gamitin ang DashPay para sa mga pagbabayad ngunit hindi mo mai-update ang iyong profile o magdagdag ng higit pang mga contact hanggang sa ma-top up mo ang iyong balanse sa kredito"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Maaari kang magbayad gamit ang Dash sa cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Maaari mong makita ang detalyadong impormasyon tungkol sa iyong mga deposito, pag-withdraw at mga kita ng reward."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Maaari mong tukuyin ang anumang URL na available sa publiko sa internet para makita ito ng ibang mga user sa Dash network."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Nakaboto ka na para sa username na ito ng %ld beses. Maaari ka lamang magsumite ng isa pang boto para sa username na ito."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Naglagay ka ng di-wastong key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Wala kang sapat na pondo para magpatuloy."; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Kailangan mong i-backup ang iyong passphrase sa Dash Wallet"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Kailangan mo ng kahit man lang %@ Dash para gumawa ng imbitasyon"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Kailangan mo ng kahit man lang %@ sa iyong Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Kailangan mong magkaroon ng higit pa %@ Dash upang lumikha ng username na ito"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Kailangan mong mag-sign in sa DashSpend para bumili ng mga gift card."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Kailangan mong maghintay ng 5 minuto bago simulan ang isa pang withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Kailangan mo lang ng %@ para sumali sa pool."; - /* DashSpend confirmation */ "You pay" = "Magbabayad ka"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Ipinadala mo ang kahilingan sa pakikipag-ugnay kay %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Dapat ay mayroon kang positibong balanse sa Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Dapat ay mayroon kang hindi bababa sa %@ upang magpatuloy sa pag-verify ng CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Makakatanggap ka ng %@ Dash sa iyong Dash Wallet sa device na ito. Pakitandaan na maaaring tumagal ng hanggang 2-3 minuto upang makumpleto ang isang paglipat."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Awtomatiko kang makakatanggap ng mga fractional na pagbabayad at bilang default, ire-invest ang mga ito, gayunpaman, madali ring mag-set up ng mga awtomatikong withdrawal upang makatanggap ng mga umuulit na payout."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Ang iyong balanse sa kredito ay mababa"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Linilikha na ang iyong CrowdNode account..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Ang iyong CrowdNode account ay naka-set up at handa nang gamitin!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Ang iyong CrowdNode account ay nilikha gamit ang mga transaksyong ito."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Ang iyong CrowdNode address ay nakumpirma na."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Na-validate na ang iyong CrowdNode address, ngunit kailangan ang pag-verify."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Handa nang gamitin ang iyong DashPay Username"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Natanggap na ang iyong deposito sa CrowdNode."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Ang oras ng iyong device ay %1$@ sa pamamagitan ng %2$d segundo. Yhindi mo magagamit ang CoinJoin dahil sa pagkakaibang ito.\n\nAng mga setting ng oras sa iyong device ay kailangang baguhin sa “Awtomatikong itakda ang oras” para magamit ang CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Ang iyong pangunahing Dash address na kasalukuyan mong ginagamit para sa iyong CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Ang iyong pribadong balanse. Naka-encrypt on-chain ang mga halaga at address, kaya nananatiling kumpidensyal ang hawak at kasaysayan mo."; diff --git a/DashWallet/fr.lproj/Localizable.strings b/DashWallet/fr.lproj/Localizable.strings index 4bff547665..03929f6ea4 100644 --- a/DashWallet/fr.lproj/Localizable.strings +++ b/DashWallet/fr.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ou "; -/* CrowdNode */ -" Privacy Policy " = "Politique de confidentialité"; - -/* CrowdNode */ -" Terms of Use " = "Conditions d'utilisation"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ mis en vente pour %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "\nUn code d'accès est nécessaire pour sécuriser votre portefeuille. Allez dans les paramètres et activez le code d'accès pour continuer."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Un masternode nécessite une caution de 1000 dashs, et chaque masternode est actuellement rémunéré à hauteur d'environ %@ par an."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accepter les termes\net conditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accepter les conditions d'utilisation"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Acceptation des conditions d'utilisation…"; - -/* CrowdNode */ -"Account Recovery" = "Restauration de compte"; - /* Masternode status */ "Active" = "Actif"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Tous les transferts vers et depuis CrowdNode, à partir de cet appareil, seront exécutés avec l'adresse Dash ci-dessus."; - /* ZenLedger */ "Allow" = "Autoriser"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Une erreur inconnue s'est produite. Veuillez réessayer plus tard."; -/* CrowdNode */ -"and" = "et"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Tout nom d'utilisateur sera automatiquement approuvé s'il contient au moins un chiffre entre 2 et 9, ou s'il a plus de 20 caractères, ou s'il contient un trait d'union."; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "En tant qu'opérateur de masternode, vous pouvez voter pour approuver les noms d'utilisateur avant que les utilisateurs ne puissent les utiliser.\nVous pouvez voter contre la création de noms d'utilisateur que vous jugez inappropriés."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Comme beaucoup de gens n'ont pas 1000 dashs sous la main, CrowdNode a bâti un service qui permet à ses membres, par la réunion de leurs dépôts, de bénéficier des revenus de la propriété d'un masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Sauvegarde"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Sauvegarder la phrase de passe"; - /* A noun. Used as a title. */ "Backup Wallet" = "Sauvegarder le portefeuille"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Sauvegardez votre phrase de passe pour créer un compte CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Sauvegardez votre phrase de récupération"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Solde"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Solde après"; -/* CrowdNode */ -"Balance On CrowdNode" = "Solde sur CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Solde :"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Les soldes et les transferts ne sont pas visibles publiquement"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Virement bancaire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Participez à un masternode Dash avec CrowdNode"; - /* TimeSkew */ "behind" = "en arrière"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Fermer et prévenir quand c'est terminé"; - /* No comment provided by engineer. */ "Close App" = "Fermer l'application"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connecté"; -/* CrowdNode */ -"Connected Dash address" = "Adresse Dash connectée"; - /* SPV sync */ "Connected peers" = "Pairs connectés"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Créer un nom d'utilisateur"; -/* CrowdNode */ -"Create Account" = "Créer un compte"; - /* Create DashSpend account */ "Create account" = "Créer le compte"; /* DashSpend account title */ "Create an account or log into an existing one" = "Créer un compte ou se connecter à un compte existant"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Créer un compte en ligne CrowdNode"; - /* No comment provided by engineer. */ "Create invitation" = "Créer une invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Créer un compte en ligne"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Crédits"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Bénéfices CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Aide CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode utilise cette adresse comme identifiant de votre compte. Vous perdrez l'accès à vos fonds dans ce portefeuille et dans votre compte CrowdNode si vous perdez la phrase de passe associée à cette adresse."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Limites de retrait CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Compte"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Exportation CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Cartes-cadeau CTX"; -/* Crowdnode */ -"Current APY = %@" = "Taux de rendement annuel actuel = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Le taux de rendement annuel est actuellement %@"; - /* Explore Dash: Filters */ "Current location" = "Localisation actuelle"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Adresse Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Adresse Dash attribuée à votre compte CrowdNode dans Dash Wallet sur cet appareil"; - /* No comment provided by engineer. */ "Dash balance" = "Solde Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Refusé"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Transfert"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Faites un dépôt de %@ pour lancer votre rémunération"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Faites un dépôt d'au moins %@ dashs sur votre Dash Wallet pour terminer un retrait"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Faites un dépôt d'au moins %@ pour lancer votre rémunération"; - -/* CrowdNode */ -"Deposit sent" = "Transfert envoyé"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Chemin de dérivation"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Abandon en cours…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "En raison des conditions d'utilisation CrowdNode, les utilisateurs ne peuvent pas retirer plus de :"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "En raison de contraintes légales, nous devons vérifier que vous n'êtes pas au Royaume-Uni. Nous vérifions votre localisation uniquement lorsque vous accédez aux fonctionnalités Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "En raison des votes, le réseau Dash a décidé d'attribuer le nom d'utilisateur '%@' à quelqu'un d'autre. Veuillez réessayer en demandant un autre nom d'utilisateur."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "par exemple johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Chaque invitation percevra ce montant, et le bénéficiaire peut créer rapidement son nom d'utilisateur sur le réseau Dash"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Plus tôt"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Percevez facilement des gains Dash et gagnez un revenu passif après quelques simples clics."; - /* SPV diagnostics */ "Edit birth height" = "Modifier la hauteur d'origine"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "par ex. : alexandremartin"; -/* CrowdNode */ +/* DashSpend */ "Email" = "E-mail"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Le premier dépôt doit être supérieur à %@"; - -/* CrowdNode */ -"First minimum deposit" = "Premier dépôt minimum"; - /* DashSpend */ "Fixed amounts" = "Montants fixes"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "depuis CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "depuis Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fonds déplacés"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Percevez des récompenses grâce à vos transferts sur des masternodes Dash, dès la petite somme de 0,5 dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Préparez-vous à rejoindre DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Percevez des récompenses instantanément"; - /* No comment provided by engineer. */ "Get Started" = "Commencer"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Obtenir votre nom d'utilisateur"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Commencer à utiliser CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Carte-cadeau"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Carte-cadeau · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Aller sur le site CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Aller sur le site web"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Hauteur %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Voici une adresse Dash attribuée à votre compte CrowdNode dans Dash Wallet sur cet appareil"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Touchez un bouton ci-dessus pour le remplacer par toute fonction dont vous avez besoin"; -/* CrowdNode */ -"How CrowdNode staking works" = "Comment marche l'épargne CrowdNode (staking)"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Comment puis-je obtenir des dashs de test ?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Quel est le niveau de confidentialité de DashPay ?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Comment confirmer votre adresse API Dash"; - /* No comment provided by engineer. */ "How to use your gift card" = "Comment utiliser votre carte-cadeau"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Je reconnais que je perdrai tous mes fonds si je ne possède plus la phrase de récupération"; -/* CrowdNode */ -"I agree to CrowdNode" = "Je souscris à CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Si vous choisissez d'accorder plus tard les autorisations et que vous n'êtes pas au Royaume-Uni, vous pouvez utiliser Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Si vous égarez votre phrase de passe, vous pouvez vous authentifier par d'autres moyens pour regagner l'accès à vos fonds CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Si vous perdez votre phrase de passe pour ce portefeuille, ou si vous perdez cet appareil, ou si vous désinstallez Dash Wallet, vous perdrez l'accès à vos fonds sur CrowdNode ainsi que les fonds dans ce portefeuille."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Si vous souhaitez toujours tout effacer, veuillez taper : \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "Dans le cas de retraits plus importants, CrowdNode les effectuera sous deux semaines. Cela est dû à leur protocole de sécurité, et ce sera souvent traité bien plus rapidement."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "En cas de perte de votre phrase de passe, vous perdrez votre droit pour votre nom d'utilisateur demandé."; -/* CrowdNode Portal */ -"In process…" = "En cours..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informations sur votre compte en ligne"; - /* Buy Sell Portal */ "Initializing" = "Initialisation"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Déplacé en interne vers"; -/* CrowdNode */ -"Introducing Staking" = "Présentation des gains"; - /* Invalid transaction */ "Invalid" = "Invalide"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Adresse Dash non valide"; -/* CrowdNode Online */ -"Invalid Email" = "Adresse e-mail invalide"; - /* No comment provided by engineer. */ "Invalid email or password." = "Adresse e-mail ou mot de passe invalide."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "Dash Wallet iOS : %@ Problème signalé"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "La mise à jour de votre solde peut prendre une minute."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "La réception de vos fonds peut prendre une minute."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Rejoindre maintenant"; -/* CrowdNode */ -"Joining the pool" = "Rejoindre une équipe"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Gardez ces pièces privées. Des frais de réseau et de confidentialité s'appliquent."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Sortie du pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Laissez un autre utilisateur de Dash Wallet scanner ce code pour vous ajouter en contact."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Lier au compte Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Utiliser un compte existant"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Utiliser un compte CrowdNode existant"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Lier un compte Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Se connecter à CrowdNode"; - /* DashSpend */ "Log in to your account" = "Se connecter à votre compte"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Il semble que vous videz votre Dash Wallet"; - /* adjective, security level */ "Low" = "Bas"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Moyen"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Les membres sont libres de quitter les serveurs, et peuvent dans la plupart des cas le faire immédiatement."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Aucune transaction non confirmée à abandonner."; -/* CrowdNode */ -"New CrowdNode Account" = "Nouveau compte CrowdNode"; - /* Voting */ "New to old" = "De récent à ancien"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "En ligne"; -/* CrowdNode Portal */ -"Online Account" = "Compte en ligne"; - /* Online Merchant */ "Online Merchant" = "Vendeur en ligne"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Les paiements avec chaque contact sont regroupés au même endroit, avec des noms et des profils au lieu de transactions brutes."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Adresse de paiement"; -/* CrowdNode */ -"Payout Options" = "Options de paiement"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "par 24 heures"; - -/* CrowdNode */ -"per hour" = "par heure"; - -/* CrowdNode */ -"per transaction" = "par transaction"; - /* Usernames */ "Personalise profile" = "Personnaliser le profil"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Veuillez vous rendre sur votre compte Uphold pour vérifier votre identité."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Veuillez noter que l'adresse e-mail n'est pas enregistrée par le portefeuille Dash, mais seulement envoyée à CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Veuillez noter que le nom d'utilisateur ne peut PAS être modifié une fois qu'il est enregistré."; /* Usernames */ "Please note that you will not be able to change it in future" = "Veuillez noter que vous ne pourrez pas le modifier à l'avenir"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Veuillez noter que vous ne pourrez pas retirer vos fonds depuis CrowdNode vers ce portefeuille sans augmenter votre solde à %@ dashs."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Veuillez placer votre téléphone près de l'appareil NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Veuillez patienter"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Veuillez attendre avant de lancer le retrait suivant"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Veuillez attendre que ce portefeuille soit entièrement synchronisé avant d'exporter votre historique de transactions"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Les cours n'ont pas pu être récupérés. Les valeurs fiduciaires peuvent être incorrectes."; -/* CrowdNode */ -"Primary Dash address" = "Adresse Dash principale"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Avantages"; -/* CrowdNode Portal */ -"Protect your savings" = "Protéger vos fonds"; - /* Usernames */ "Prove your identity" = "Prouver votre identité"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Lire les conditions de retrait"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Lecture seule"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Recevoir directement dans Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Recevez votre part de récompense quotidiennement."; - /* Received transaction */ "Received" = "Reçu"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Reçu de %@"; -/* CrowdNode */ -"Receiving rewards" = "Recevoir les paiements"; - "Records your masternodes as having voted, without taking a side." = "Enregistre vos masternodes comme ayant voté, sans prendre parti."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Envoyer %@ depuis l'adresse principale Dash que vous utilisez actuellement pour votre compte CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Envoyer l'invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Envoyer un rapport"; - /* No comment provided by engineer. */ "Send to" = "Envoyer à"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Envoi à"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Envoi au compte CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Envoi au Dash Wallet sur cet appareil"; - /* Buy Dash */ "Sending to:" = "Envoi à :"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Mettre en place le portefeuille"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Partager"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Voir les clés de masternode"; -/* CrowdNode */ -"Show QR" = "Voir le QR-code"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Voir la phase de récupération"; /* Alert title */ "Sign in required" = "Connexion requise"; -/* CrowdNode */ -"Sign up error" = "Erreur d'inscription"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "S'inscrire à CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Identifiez-vous pour terminer l'ouverture du compte"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplifier vos taxes crypto"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Récompenses"; - /* Usernames */ "Starts after you add funds" = "Démarre après l'ajout de fonds"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synchronisé avec le Dash Wallet actuel"; - /* No comment provided by engineer. */ "Syncing" = "En synchronisation"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Le réseau Dash doit voter pour approuver certains noms d'utilisateur avant leur création"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Le réseau Dash est opéré par un certain nombre de masternodes, qui sont un facteur essentiel pour faciliter les paiements."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Les dashs ont été déposés avec succès sur votre compte Coinbase. Mais il y a eu un problème lors de leur transfert sur Dash Wallet sur cet appareil."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Cette adresse ne peut pas être payée depuis votre solde %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Ce code PIN sera demandé pour déverrouiller votre app avant chaque utilisation."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Ce QR-code contient déjà la requête de paiement pour %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Cela représente le pourcentage annuel de rendement d'un masternode entier, moins les 15% des frais de CrowdNode. Cela n'est pas un taux garanti de retour, et peut augmenter ou diminuer en fonction des tailles des serveurs CrowdNode et du cours de Dash."; - "This still counts as your masternodes having voted in this contest." = "Cela compte tout de même comme un vote de vos masternodes dans ce litige."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "vers Dash Wallet sur cet appareil"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Pour commencer à investir, créez un compte sur CrowdNode ou connectez-vous à un compte existant."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "vers l'adresse Dash associée à votre compte CrowdNode dans le Dash Wallet de cet appareil"; - /* No comment provided by engineer. */ "Today" = "Aujourd'hui"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Historique des transactions"; - /* Balance info sheet */ "Transaction history isn't available" = "L'historique des transactions n'est pas disponible"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Erreur de transfert"; - /* Coinbase */ "Transfer Failed" = "Échec du transfert"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Invitation valide"; -/* CrowdNode Portal */ -"Validating address…" = "Validation de l'adresse..."; - /* No comment provided by engineer. */ "Validating username failed" = "Échec de la validation du nom d'utilisateur"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Vérification demandée"; - /* Usernames */ "Verified during registration" = "Vérifié lors de l'enregistrement"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Vérifier"; -/* CrowdNode */ -"Verify your API Dash address" = "Vérifier votre adresse API Dash"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Vérifiez votre phrase de récupération pour définir un nouveau code PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Très élevé"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "De très petits montants en dashs seront envoyés vers et depuis CrowdNode, pour vérifier que vous êtes le propriétaire de cette adresse de portefeuille."; - /* No comment provided by engineer. */ "View All" = "Tout afficher"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Le vote sur « %@ » est déjà clos. Actualisez pour voir le résultat."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Attendez que la chaîne soit entièrement synchronisée, pour que vous puissiez consulter votre historique de transactions."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Patientez jusqu'à ce que la chaîne soit entièrement synchronisée, pour que nous puissions voir votre historique de transactions. Consultez le site CrowdNode pour vous connecter ou vous inscrire."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Veuillez attendre que le portefeuille soit synchronisé avant de terminer la transaction"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Nous n'avons pas pu créer votre compte CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Nous n'avons pas pu faire un transfert vers votre compte CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Nous n'avons pu faire un retrait depuis votre compte CrowdNode."; - /* Explore */ "We have two types of merchants" = "Nous avons deux types de vendeurs"; /* No comment provided by engineer. */ "We Upgraded" = "Nous avons mis à jour"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Nous détecterons automatiquement cette transaction et transférerons le même montant vers votre compte CrowdNode. Ensuite, vous pourrez faire des transferts et des retraits dans le Dash Wallet de cet appareil."; - /* Website */ "Website" = "Site web"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Vous n'avez pas de nom d'utilisateur tant que le vote est en cours. Enregistrez maintenant un nom d'utilisateur non contesté — il vous reste acquis, et si le vote vous attribue « %@ », vous serez joignable aux deux noms d'utilisateur."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Pourquoi vois-je toutes ces transactions ?"; -/* CrowdNode */ -"Why do you need an online account?" = "Pourquoi avez-vous besoin d'un compte en ligne ?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Pourquoi ne dois-je pas prendre de capture d'écran ?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "avec la blockchain Dash"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Retrait"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Retirer sans limite avec un compte en ligne sur le site web CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Retrait demandé"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Retire l'intégralité du solde"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Vous pouvez modifier comment et quand vos gains de récompense vous sont payés."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Vous pouvez continuer à utiliser DashPay pour des paiements, mais vous ne pouvez pas mettre à jour votre profil ou ajouter des contacts sans recharger votre solde de crédits"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Vous pouvez maintenant payer le caissier avec Dash."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Vous pouvez consulter des informations détaillées sur vos transferts, vos retraits et vos gains de récompense."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Vous pouvez spécifier n'importe quelle URL accessible publiquement sur Internet, et les autres utilisateurs peuvent la voir sur le réseau Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Vous avez déjà voté %ld fois sur ce nom d'utilisateur. Vous pouvez voter seulement une fois de plus sur lui."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Vous avez saisi une clé invalide"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Vous n'avez pas assez de fonds pour continuer"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Vous devez sauvegarder dans Dash Wallet votre phrase de passe"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Vous avez besoin d'au moins %@ dashs pour créer une invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Vous avez besoin d'au moins %@ dans votre Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Vous devez avoir %@ dashs de plus pour créer ce nom d'utilisateur"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Vous devez vous connecter à DashSpend pour acheter des cartes-cadeau."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Vous devez attendre 5 minutes avant de lancer un autre retrait"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Vous avez seulement besoin de %@ pour rejoindre le groupe."; - /* DashSpend confirmation */ "You pay" = "Vous payez"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Vous avez envoyé la demande de contact à %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Vous devriez avoir un solde positif sur votre Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Vous devez avoir au moins %@ pour suivre la vérification CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Vous recevrez %@ dashs sur votre Dash Wallet sur cet appareil. Veuillez noter qu'achever un transfert peut demander jusqu'à 2 à 3 minutes."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Vous recevrez automatiquement les paiements partiels, et ils seront réinvestis par défaut. Cependant, il est également simple d'opter pour des retraits automatiques pour recevoir les paiements récurrents."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Votre solde de crédits est bas"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Votre compte CrowdNode est en cours de création..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Votre compte CrowdNode est créé et prêt à être utilisé !"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Votre compte CrowdNode a été créé en utilisant ces transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Votre adresse CrowdNode a été confirmée."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Votre adresse CrowdNode a été validée, mais la vérification est requise."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Votre nom d'utilisateur DashPay est prêt à être utilisé"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Votre transfert vers CrowdNode a été reçu."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "L'heure de votre appareil est %1$@ de %2$d secondes. Vous ne pouvez pas utiliser CoinJoin en raison de cette différence.\n\nLe réglage de l'heure de votre appareil doit être mis sur “Réglage de l'heure automatique” pour pouvoir utiliser CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Votre adresse Dash principale, actuellement utilisée par votre compte CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Votre solde privé. Les montants et les adresses sont chiffrés on-chain, vos avoirs et votre historique restent donc confidentiels."; diff --git a/DashWallet/hr.lproj/Localizable.strings b/DashWallet/hr.lproj/Localizable.strings index fd98284bc0..3c344bf2b9 100644 --- a/DashWallet/hr.lproj/Localizable.strings +++ b/DashWallet/hr.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ili "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ je oglašeno za %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktivan"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Stanje nakon toga"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Stanja i prijenosi nisu javno vidljivi"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Povezani čvorovi"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediti"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Putanja izvođenja"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Odbacujemo…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Uredi početnu visinu"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Sredstva premještena"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Pripremite se za pridruživanje DashPayu"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Visina %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Koliko je DashPay privatan?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Zadržite ove novčiće privatnima. Primjenjuju se mrežne naknade i naknade za privatnost."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Neka drugi korisnik Dash Walleta skenira ovaj kod kako bi vas dodao kao kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nema nepotvrđenih transakcija za odbacivanje."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Plaćanja sa svakim kontaktom grupirana su na jednom mjestu, s imenima i profilima umjesto sirovih transakcija."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Adresa isplate"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Prednosti"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Samo za čitanje"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Primljeno od %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Bilježi vaše masternodeove kao da su glasali, bez zauzimanja strane."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Slanje na"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Podjeli"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Počinje nakon što dodate sredstva"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Ova adresa ne može se platiti iz vašeg stanja %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "To se i dalje računa kao da su vaši masternodeovi glasali u ovom sporu."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Povijest transakcija nije dostupna"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Važeća pozivnica"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Provjereno tijekom registracije"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Potvrdite frazu za oporavak da biste postavili novi PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Prikaži sve"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Glasanje o „%@“ već je zatvoreno. Osvježite da biste vidjeli rezultat."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Dok traje glasanje, nemate korisničko ime. Registrirajte sada korisničko ime bez nadmetanja — ostaje vaše, a ako vam glasanje dodijeli „%@“, bit ćete dostupni pod oba korisnička imena."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Isplaćuje cjelokupno stanje"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Poslali ste zahtjev za kontakt korisniku %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Vaše privatno stanje. Iznosi i adrese šifrirani su na lancu, pa vaša sredstva i povijest ostaju povjerljivi."; diff --git a/DashWallet/hu.lproj/Localizable.strings b/DashWallet/hu.lproj/Localizable.strings index 6f953c8549..5198f53b30 100644 --- a/DashWallet/hu.lproj/Localizable.strings +++ b/DashWallet/hu.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " vagy "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ meghirdetve %2$@ DASH áron"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktív"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Egyenleg"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Egyenleg utána"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Az egyenlegek és az átutalások nem nyilvánosan láthatók"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Csatlakozott partnerek"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kreditek"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash cím"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash egyenleg"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Származtatási útvonal"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Eldobás…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Kezdőmagasság szerkesztése"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "A pénz áthelyezve"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Készülj fel a DashPayhez való csatlakozásra"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Irány a weboldal"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Magasság: %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Mennyire privát a DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Tartsd privátban ezeket az érméket. Hálózati és adatvédelmi díjak érvényesek."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Olvastasd be ezt a kódot egy másik Dash Wallet felhasználóval, hogy felvegyen a névjegyei közé."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Uphold Fiók Összekapcsolása"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nincs eldobható megerősítetlen tranzakció."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Az egyes névjegyekkel folytatott fizetések egy helyen csoportosulnak, nyers tranzakciók helyett nevekkel és profilokkal."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Kifizetési cím"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Helyezd a telefonod az NFC eszköz közelébe."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Előnyök"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Csak olvasható"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Fogadva"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Kapott tőle: %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Rögzíti, hogy a masternode-jaid szavaztak, anélkül hogy oldalra állnának."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Küldés ide"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Megosztás"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Akkor indul, amikor pénzt adsz hozzá"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Ez a cím nem fizethető a(z) %@ egyenlegedből"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Ez akkor is úgy számít, hogy a masternode-jaid szavaztak ebben a versengésben."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "A tranzakciós előzmények nem érhetők el"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Érvényes meghívó"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Ellenőrizve a regisztráció során"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Ellenőrizd a helyreállítási kifejezésedet új PIN beállításához."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Összes megtekintése"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "A(z) „%@” szavazása már lezárult. Frissíts az eredmény megtekintéséhez."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Amíg a szavazás tart, nincs felhasználóneved. Regisztrálj most egy nem vitatott felhasználónevet — az a tiéd marad, és ha a szavazás neked ítéli a(z) „%@” nevet, mindkét felhasználónéven elérhető leszel."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "A teljes egyenleget kiveszi"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Elküldted a kapcsolatkérést neki: %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "A privát egyenleged. Az összegek és a címek titkosítva vannak a láncon, így a vagyonod és az előzményeid bizalmasak maradnak."; diff --git a/DashWallet/id.lproj/Localizable.strings b/DashWallet/id.lproj/Localizable.strings index f4431f52a2..d6e45ad218 100644 --- a/DashWallet/id.lproj/Localizable.strings +++ b/DashWallet/id.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " atau "; -/* CrowdNode */ -" Privacy Policy " = "Kebijakan pribadi"; - -/* CrowdNode */ -" Terms of Use " = "Syarat Penggunaan"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ dijual seharga %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Kode akses perangkat diperlukan untuk melindungi dompet Anda. Buka pengaturan dan aktifkan kode akses untuk melanjutkan."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Masternode membutuhkan 1000 Dash sebagai jaminan dan setiap Masternode saat ini dihargai kira-kira %@ per tahun."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Terima syarat dan\nkondisi"; -/* CrowdNode */ -"Accept Terms Of Use" = "Terima Ketentuan Penggunaan"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Menerima persyaratan penggunaan…"; - -/* CrowdNode */ -"Account Recovery" = "Pemulihan Akun"; - /* Masternode status */ "Active" = "Aktif"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Semua transfer ke dan dari CrowdNode dari perangkat ini akan dilakukan dengan alamat Dash di bawah dari perangkat ini."; - /* ZenLedger */ "Allow" = "Izinkan"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Terjadi kesalahan yang tidak diketahui. Silakan coba lagi nanti."; -/* CrowdNode */ -"and" = "dan"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Nama pengguna apa pun yang memiliki angka 2-9, lebih dari 20 karakter atau yang memiliki tanda hubung akan disetujui secara otomatis"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Sebagai pemilik masternode, Anda dapat memberikan suara untuk menyetujui nama pengguna yang diminta sebelum pengguna dapat membuatnya. Anda dapat memblokir pembuatan nama pengguna yang menurut Anda tidak pantas."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Karena kebanyakan orang tidak memiliki 1000 Dash, Crowdnode telah membuat layanan di mana, dengan mengumpulkan simpanan dari anggota, mereka dapat memperoleh keuntungan dari memiliki Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Cadangan"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Cadangkan Frasa Sandi"; - /* A noun. Used as a title. */ "Backup Wallet" = "Cadangkan Dompet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Cadangkan frasa sandi Anda untuk membuat akun CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Cadangkan frasa pemulihan anda"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Saldo"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo setelahnya"; -/* CrowdNode */ -"Balance On CrowdNode" = "Saldo Di CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Saldo:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldo dan transfer tidak terlihat secara publik"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Transfer antar bank"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Menjadi bagian dari Masternode Dash dengan CrowdNode"; - /* TimeSkew */ "behind" = "dibelakang"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Tutup dan beri tahu jika sudah selesai"; - /* No comment provided by engineer. */ "Close App" = "Tutup aplikasi"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Terhubung"; -/* CrowdNode */ -"Connected Dash address" = "Alamat Dash terhubung"; - /* SPV sync */ "Connected peers" = "Peer terhubung"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Buat Nama Pengguna"; -/* CrowdNode */ -"Create Account" = "Buat Akun"; - /* Create DashSpend account */ "Create account" = "Buat akun"; /* DashSpend account title */ "Create an account or log into an existing one" = "Buat akun atau masuk ke akun yang sudah ada"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Buat akun CrowdNode online"; - /* No comment provided by engineer. */ "Create invitation" = "Buat undangan"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Buat Akun Online"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kredit"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Manfaat CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Dukungan CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode menggunakan alamat ini sebagai ID akun Anda. Anda akan kehilangan akses ke dana Anda dalam dompet ini dan akun CrowdNode jika Anda kehilangan frasa sandi yang terkait dengan alamat ini."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Batas penarikan CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Akun"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Ekspor CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Kartu hadiah CTX"; -/* Crowdnode */ -"Current APY = %@" = "APY saat ini = %@"; - -/* CrowdNode */ -"Current APY is %@" = "APY saat ini adalah %@"; - /* Explore Dash: Filters */ "Current location" = "Lokasi saat ini"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Alamat dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Alamat dash yang ditujukan untuk akun CrowdNode Anda di Dash Wallet pada perangkat ini"; - /* No comment provided by engineer. */ "Dash balance" = "Saldo Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Tanggal"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Ditolak"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Setoran"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Setor %@ untuk mulai menghasilkan"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Setor setidaknya %@ Dash di Dash Wallet Anda untuk menyelesaikan penarikan"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Setor setidaknya %@ untuk mulai menghasilkan"; - -/* CrowdNode */ -"Deposit sent" = "Setoran terkirim"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Jalur derivasi"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Membuang…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Karena persyaratan layanan CrowdNode, pengguna dapat menarik tidak lebih dari:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Karena kendala peraturan, kami perlu memverifikasi bahwa Anda tidak berada di Inggris. Kami hanya memeriksa lokasi Anda ketika Anda memasuki fitur Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Karena proses pemungutan suara, Dash Network telah memutuskan untuk memberikan nama pengguna '%@' kepada orang lain. Silakan coba lagi dengan meminta nama pengguna lain."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "misalnya johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Setiap undangan akan didanai dengan jumlah ini sehingga penerima dapat dengan cepat membuat nama pengguna mereka di Jaringan Dash"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Sebelumnya"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Stake Dash dengan mudah dan dapatkan penghasilan pasif dengan beberapa klik yang mudah."; - /* SPV diagnostics */ "Edit birth height" = "Ubah tinggi awal"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "misalnya: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Setoran pertama harus lebih dari %@"; - -/* CrowdNode */ -"First minimum deposit" = "Setoran minimum pertama"; - /* DashSpend */ "Fixed amounts" = "Jumlah tetap"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "dari CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "dari Wallet Dash"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Dana dipindahkan"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Dapatkan hadiah dari deposit di Dash Masternodes hanya dengan 0,5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Bersiaplah bergabung dengan DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Dapatkan Hadiah Instan"; - /* No comment provided by engineer. */ "Get Started" = "Memulai"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Dapatkan Nama Pengguna Anda"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Mulai menggunakan CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Kartu Hadiah"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Kartu hadiah · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Buka situs web CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Pergi ke Situs Web"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Tinggi %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Berikut adalah alamat Dash yang ditujukan untuk akun CrowdNode Anda di Dash Wallet pada perangkat ini"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Tahan tombol apa pun di atas untuk menggantinya dengan fungsi yang Anda butuhkan"; -/* CrowdNode */ -"How CrowdNode staking works" = "Cara kerja staking CrowdNode"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Bagaimana saya mendapatkan tes Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Seberapa privat DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Bagaimana cara mengonfirmasi API alamat Dash Anda"; - /* No comment provided by engineer. */ "How to use your gift card" = "Cara menggunakan kartu hadiah Anda"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Saya menerima bahwa saya akan kehilangan koin saya jika saya tidak lagi memiliki frasa pemulihan"; -/* CrowdNode */ -"I agree to CrowdNode" = "Saya setuju dengan CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Jika Anda memilih untuk memberikan izin di lain waktu dan Anda tidak berada di Inggris, Anda dapat menggunakan Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Jika Anda kehilangan frasa sandi, Anda dapat memverifikasi diri dengan cara lain untuk mendapatkan kembali akses ke dana CrowdNode Anda."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Jika Anda kehilangan frasa sandi untuk dompet ini dan kehilangan perangkat ini atau mencopot Dash Wallet, Anda akan kehilangan akses ke dana Anda di CrowdNode dan dana di dalam dompet ini."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Jika Anda masih ingin menghapusnya, silakan masukkan: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "Jika terjadi penarikan lebih besar, CrowdNode akan membayar penarikan dalam waktu dua minggu. Hal ini disebabkan oleh protokol keamanan mereka dan seringkali akan ditangani lebih cepat."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Jika Anda kehilangan frasa sandi, Anda akan kehilangan hak atas nama pengguna yang Anda minta."; -/* CrowdNode Portal */ -"In process…" = "Dalam proses…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informasi tentang akun online Anda"; - /* Buy Sell Portal */ "Initializing" = "Menginisialisasi"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Pindah ke internal"; -/* CrowdNode */ -"Introducing Staking" = "Memperkenalkan Staking"; - /* Invalid transaction */ "Invalid" = "Tidak valid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Alamat Dash Salah"; -/* CrowdNode Online */ -"Invalid Email" = "Email tidak valid"; - /* No comment provided by engineer. */ "Invalid email or password." = "Email atau kata sandi tidak valid."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ masalah yang dilaporkan"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Diperlukan waktu satu menit untuk memperbarui saldo Anda."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Mungkin butuh satu menit agar dana Anda tiba."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Bergabung Sekarang"; -/* CrowdNode */ -"Joining the pool" = "Bergabung ke pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Jaga koin ini tetap privat. Berlaku biaya jaringan dan privasi."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Meninggalkan Pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Biarkan pengguna Dash Wallet lain memindai kode ini untuk menambahkan Anda sebagai kontak."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Tautkan akun Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Hubungkan Akun yang Sudah Ada"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Tautkan Akun CrowdNode yang Ada"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Tautkan Akun Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Masuk ke CrowdNode"; - /* DashSpend */ "Log in to your account" = "Masuk ke akun anda"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Sepertinya Anda sedang mengosongkan Dompet Dash Anda"; - /* adjective, security level */ "Low" = "Rendah"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Sedang"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Anggota bebas untuk meninggalkan pool dan paling sering dapat segera pergi."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Tidak ada transaksi belum terkonfirmasi yang bisa dibuang."; -/* CrowdNode */ -"New CrowdNode Account" = "Akun CrowdNode Baru"; - /* Voting */ "New to old" = "Baru ke Lama"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Akun Online"; - /* Online Merchant */ "Online Merchant" = "Pedagang online"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Pembayaran dengan setiap kontak dikelompokkan di satu tempat, dengan nama dan profil alih-alih transaksi mentah."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Alamat pembayaran"; -/* CrowdNode */ -"Payout Options" = "Opsi Pembayaran"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 jam"; - -/* CrowdNode */ -"per hour" = "per jam"; - -/* CrowdNode */ -"per transaction" = "per transaksi"; - /* Usernames */ "Personalise profile" = "Personalisasi profil"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Silakan buka akun Uphold Anda untuk memverifikasi identitas Anda."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Harap dicatat bahwa email tidak disimpan oleh Dompet Dash dan hanya dikirim ke CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Harap dicatat bahwa nama pengguna TIDAK DAPAT diubah setelah didaftarkan."; /* Usernames */ "Please note that you will not be able to change it in future" = "Harap dicatat bahwa Anda tidak akan dapat mengubahnya di masa mendatang"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Harap diperhatikan, Anda tidak akan dapat menarik dana Anda dari CowdNode ke dompet ini sampai Anda menambah saldo ke %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Silakan letakkan ponsel Anda di dekat perangkat NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Silahkan tunggu"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Harap tunggu sebelum memulai penarikan berikutnya"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Harap tunggu hingga dompet sepenuhnya disinkronkan sebelum mengekspor riwayat transaksi Anda"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Harga tidak diambil. Nilai Fiat mungkin salah."; -/* CrowdNode */ -"Primary Dash address" = "Alamat Dash utama"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Kelebihan"; -/* CrowdNode Portal */ -"Protect your savings" = "Lindungi tabungan Anda"; - /* Usernames */ "Prove your identity" = "Buktikan identitas anda"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Baca Kebijakan Penarikan"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Hanya-baca"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Terima langsung ke Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Terima bagian hadiah Anda setiap hari."; - /* Received transaction */ "Received" = "Diterima"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Diterima dari %@"; -/* CrowdNode */ -"Receiving rewards" = "Menerima imbalan"; - "Records your masternodes as having voted, without taking a side." = "Mencatat masternode Anda sebagai telah memberi suara, tanpa memihak."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Kirim %@ dari alamat Dash utama yang saat ini Anda gunakan untuk akun CrowdNode Anda"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Kirim Undangan"; -/* Coinbase - CrowdNode */ -"Send Report" = "Kirim Laporan"; - /* No comment provided by engineer. */ "Send to" = "Kirim ke"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Mengirim ke"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Mengirim ke akun CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Mengirim ke Dompet Dash di perangkat ini"; - /* Buy Dash */ "Sending to:" = "Kirim ke:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Siapkan Dompet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Bagikan"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Tampilkan kunci masternode"; -/* CrowdNode */ -"Show QR" = "Tunjukkan QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Tampilkan Frasa pemulihan"; /* Alert title */ "Sign in required" = "Diperlukan masuk"; -/* CrowdNode */ -"Sign up error" = "Kesalahan pendaftaran"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Daftar ke CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Daftar untuk menyelesaikan penyiapan akun"; - /* ZenLedger */ "Simplify your crypto taxes" = "Sederhanakan pajak kripto Anda"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Dimulai setelah Anda menambahkan dana"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Disinkronkan dengan Dompet Dash saat ini"; - /* No comment provided by engineer. */ "Syncing" = "Menyingkronkan:"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Jaringan Dash harus memberikan suara untuk menyetujui beberapa nama pengguna sebelum dibuat"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Dash Network digerakkan oleh sejumlah Masternode yang merupakan bagian penting dalam memfasilitasi pembayaran."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash berhasil disimpan ke akun Coinbase Anda. Namun terjadi masalah saat mentransfernya ke Dash Wallet di perangkat ini."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Alamat ini tidak dapat dibayar dari saldo %@ Anda"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "PIN ini akan diperlukan untuk membuka kunci aplikasi Anda setiap kali saat Anda menggunakannya."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "QR ini sudah berisi permintaan pembayaran untuk %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Ini mewakili Persentase Hasil Tahunan saat ini dari Masternode penuh dikurangi biaya CrowdNode 15%. Ini bukan tingkat pengembalian yang dijamin dan dapat naik atau turun berdasarkan ukuran CrowdNode pool dan harga Dash."; - "This still counts as your masternodes having voted in this contest." = "Ini tetap dihitung sebagai masternode Anda telah memberi suara dalam sengketa ini."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "ke Dash Wallet di perangkat ini"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Untuk memulai staking, buat akun di CrowdNode atau hubungkan ke akun yang sudah ada."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "ke alamat Dash yang ditunjuk untuk akun CrowdNode Anda di Dash Wallet pada perangkat ini"; - /* No comment provided by engineer. */ "Today" = "Hari ini"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Riwayat Transaksi"; - /* Balance info sheet */ "Transaction history isn't available" = "Riwayat transaksi tidak tersedia"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Kesalahan Transfer"; - /* Coinbase */ "Transfer Failed" = "Transfer Gagal"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Undangan valid"; -/* CrowdNode Portal */ -"Validating address…" = "Memvalidasi alamat…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validasi nama pengguna gagal"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verifikasi Diperlukan"; - /* Usernames */ "Verified during registration" = "Diverifikasi saat pendaftaran"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Memeriksa"; -/* CrowdNode */ -"Verify your API Dash address" = "Verifikasi alamat API Dash Anda"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifikasi frasa pemulihan Anda untuk menetapkan PIN baru."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Sangat tinggi"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Jumlah Dash yang sangat kecil akan dikirim ke dan dari CrowdNode untuk memverifikasi bahwa Anda adalah pemilik alamat dompet ini."; - /* No comment provided by engineer. */ "View All" = "Lihat Semua"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Pemungutan suara untuk “%@” sudah ditutup. Segarkan untuk melihat hasilnya."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Tunggu hingga rantai disinkronkan sepenuhnya, sehingga kami bisa mengulas riwayat transaksi anda."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Tunggu hingga rantai disinkronkan sepenuhnya, sehingga kami dapat meninjau riwayat transaksi Anda. Kunjungi situs web CrowdNode untuk masuk atau mendaftar."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Tunggu hingga dompet disinkronkan untuk menyelesaikan transaksi"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Kami tidak dapat membuat akun CrowdNode Anda."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Kami tidak dapat melakukan deposit ke akun CrowdNode Anda."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Kami tidak dapat menarik dana dari akun CrowdNode Anda."; - /* Explore */ "We have two types of merchants" = "Kami memiliki dua jenis pedagang"; /* No comment provided by engineer. */ "We Upgraded" = "Kami meningkatkan"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Kami akan secara otomatis mendeteksi transaksi ini dan mentransfer jumlah yang sama ke akun CrowdNode Anda. Setelah itu Anda akan dapat melakukan penyetoran dan penarikan di Dash Wallet pada perangkat ini."; - /* Website */ "Website" = "Website"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Anda tidak punya nama pengguna selama pemungutan suara berlangsung. Daftarkan sekarang nama pengguna yang tidak diperebutkan — nama itu tetap menjadi milik Anda, dan jika pemungutan suara memberikan “%@” kepada Anda, Anda dapat dihubungi melalui kedua nama pengguna."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Mengapa saya melihat semua transaksi ini?"; -/* CrowdNode */ -"Why do you need an online account?" = "Mengapa Anda membutuhkan akun online?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Mengapa saya harus tidak mengambil tangkapan layar?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "dengan Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Tarik"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Penarikan tanpa batas dengan akun online di situs web CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Penarikan diminta"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Menarik seluruh saldo"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Anda dapat mengubah bagaimana / kapan penghasilan hadiah Anda dibayarkan kepada Anda."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Anda dapat terus menggunakan DashPay untuk pembayaran tetapi Anda tidak dapat memperbarui profil Anda atau menambahkan lebih banyak kontak sampai Anda mengisi saldo kredit Anda"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Anda dapat membayar dengan Dash di kasir."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Anda dapat melihat informasi terperinci tentang setoran, penarikan, dan hadiah penghasilan Anda."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Anda dapat menentukan URL apa pun yang tersedia untuk umum di internet sehingga pengguna lain dapat melihatnya di jaringan Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Anda sudah memberikan suara untuk nama pengguna ini %ld kali. Anda hanya dapat memberikan suara satu kali lagi untuk nama pengguna ini."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Anda telah memasukkan kunci yang tidak valid"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Anda tidak memiliki cukup dana untuk melanjutkan"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Anda harus mencadangkan frasa sandi Anda di Dash Wallet"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Anda memerlukan setidaknya %@ Dash untuk membuat undangan"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Anda membutuhkan setidaknya %@ dash di Wallet Anda"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Anda harus mempunyai lebih dari %@ Dash untuk membuat nama pengguna ini"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Anda harus masuk ke DashSpend untuk membeli kartu hadiah."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Anda harus menunggu 5 menit sebelum memulai penarikan lainnya"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Anda hanya perlu %@ bergabung dengan pool."; - /* DashSpend confirmation */ "You pay" = "Anda membayar"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Anda mengirim permintaan kontak ke %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Anda harus memiliki saldo positif di Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Anda setidaknya harus %@ untuk melanjutkan verifikasi CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Anda akan menerima %@ Dash di Wallet Anda di perangkat ini. Perlu diketahui bahwa butuh waktu hingga 2-3 menit untuk menyelesaikan transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Anda akan menerima pembayaran pecahan secara otomatis dan secara default akan diinvestasikan kembali, namun,mudah juga untuk mengatur penarikan otomatis untuk menerima pembayaran berulang."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Saldo kredit Anda rendah"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Akun CrowdNode Anda sedang membuat…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Akun CrowdNode Anda sudah disiapkan dan siap digunakan!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Akun CrowdNode Anda dibuat menggunakan transaksi ini."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Alamat CrowdNode Anda telah dikonfirmasi."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Alamat CrowdNode Anda telah divalidasi, tetapi verifikasi diperlukan."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Nama Pengguna DashPay Anda siap digunakan"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Setoran Anda ke CrowdNode diterima."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Waktu perangkat anda %1$@ dalam %2$d Detik. Anda tidak dapat menggunakan CoinJoin karena perbedaan ini.\n\nPengaturan waktu pada perangkat Anda perlu diubah ke “Atur waktu secara otomatis” untuk menggunakan CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Alamat Dash utama Anda yang saat ini digunakan untuk akun CrowdNode Anda"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Saldo privat Anda. Jumlah dan alamat dienkripsi on-chain, sehingga kepemilikan dan riwayat Anda tetap rahasia."; diff --git a/DashWallet/it.lproj/Localizable.strings b/DashWallet/it.lproj/Localizable.strings index dd43ba923f..98711498ad 100644 --- a/DashWallet/it.lproj/Localizable.strings +++ b/DashWallet/it.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " o "; -/* CrowdNode */ -" Privacy Policy " = "Politica sulla Riservatezza"; - -/* CrowdNode */ -" Terms of Use " = "Termini di utilizzo"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ messo in vendita a %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Un codice di accesso è necessario per proteggere il tuo portafoglio. Vai nelle impostazioni e attiva il codice per continuare."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Un Masternode ha bisogno di 1000 Dash come garanzia e ogni Masternode è attualmente ricompensato approssimativamente %@ per anno"; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accetta i termini e\nle condizioni"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accetta i termini di utilizzo"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accettazione delle condizioni d'uso..."; - -/* CrowdNode */ -"Account Recovery" = "Recupero dell'account"; - /* Masternode status */ "Active" = "Attivo"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Tutti i trasferimenti da e verso CrowdNode da questo dispositivo verranno eseguiti con l'indirizzo Dash sottostante da questo dispositivo."; - /* ZenLedger */ "Allow" = "Permetti"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Si è verificato un errore sconosciuto. Riprova più tardi."; -/* CrowdNode */ -"and" = "e"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Qualsiasi nome utente che contenga un numero compreso tra 2 e 9, che abbia più di 20 caratteri o che contenga un trattino verrà automaticamente approvato"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "In qualità di proprietario di un masternode, puoi votare per approvare i nomi utente richiesti prima che gli utenti possano crearli.\nPuoi bloccare la creazione di nomi utente che ritieni inappropriati."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Poiché la maggior parte delle persone non ha esattamente 1000 Dash a portata di mano, CrowdNode ha creato un servizio in cui, mettendo in comune i depositi dei membri, è possibile ottenere i vantaggi di possedere un Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Passphrase di backup"; - /* A noun. Used as a title. */ "Backup Wallet" = "Portafoglio di backup"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Esegui il backup della tua passphrase per creare un account CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Eseguire il backup della frase di recupero"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Saldo"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo dopo"; -/* CrowdNode */ -"Balance On CrowdNode" = "Saldo su CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Bilancio:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldi e trasferimenti non sono visibili pubblicamente"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bonifico bancario"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Entra a far parte di un Dash Masternode con CrowdNode"; - /* TimeSkew */ "behind" = "indietro"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Chiudi e avvisa quando al termine"; - /* No comment provided by engineer. */ "Close App" = "Chiudi app"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connesso"; -/* CrowdNode */ -"Connected Dash address" = "Indirizzo Dash connesso"; - /* SPV sync */ "Connected peers" = "Peer connessi"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Crea un nome utente"; -/* CrowdNode */ -"Create Account" = "Crea un Account"; - /* Create DashSpend account */ "Create account" = "Crea un account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Crea un account o accedi ad uno esistente"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Crea un account CrowdNode online"; - /* No comment provided by engineer. */ "Create invitation" = "Crea invito"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Crea un account online"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Crediti"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Vantaggi di CrowNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Supporto CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode utilizza questo indirizzo come ID account. Perderai l'accesso ai tuoi fondi all'interno di questo portafoglio e al tuo account CrowdNode se perdi la passphrase associata a questo indirizzo."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Limiti di prelievo CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Esporta CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Carte regalo CTX"; -/* Crowdnode */ -"Current APY = %@" = "APY Corrente =%@"; - -/* CrowdNode */ -"Current APY is %@" = "L'APY attuale è %@"; - /* Explore Dash: Filters */ "Current location" = "Posizione attuale"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Indirizzo Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Indirizzo Dash designato per il tuo account CrowdNode nel Portafoglio Dash su questo dispositivo"; - /* No comment provided by engineer. */ "Dash balance" = "Bilancio Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Data"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Nega"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Depositare"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposita %@ per iniziare a guadagnare"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposita almeno %@ Vai sul tuo portafoglio Dash per completare un prelievo"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposita almeno %@ per iniziare a guadagnare"; - -/* CrowdNode */ -"Deposit sent" = "Deposito inviato"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Percorso di derivazione"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Scarto in corso…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "A causa dei termini di servizio di CrowdNode, gli utenti possono recedere non più di:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "A causa di vincoli normativi, dobbiamo verificare che tu non sia nel Regno Unito. Controlliamo la tua posizione solo quando accedi alle funzionalità di Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "A causa del processo di votazione, Dash Network ha deciso di assegnare il nome utente '%@' a qualcun altro. Riprova richiedendo un altro nome utente."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "esempio: johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Ogni invito sarà finanziato con questo importo in modo che il destinatario possa creare rapidamente il proprio Username Nella Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Prima"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Vincola facilmente Dash e guadagna entrate passive con pochi semplici clic."; - /* SPV diagnostics */ "Edit birth height" = "Modifica l'altezza di origine"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "es: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "E-mail"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Il primo deposito dovrebbe essere superiore a %@"; - -/* CrowdNode */ -"First minimum deposit" = "Primo deposito minimo"; - /* DashSpend */ "Fixed amounts" = "Importi fissi"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "da CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "dal Portafoglio Dash"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fondi spostati"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Ottieni ricompense dai depositi in Dash Masternodes con un minimo di 0,5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Preparati a entrare in DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Ottieni premi all'istante"; - /* No comment provided by engineer. */ "Get Started" = "Iniziare"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Ottieni il tuo Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Iniziare con CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Carta Regalo"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Carta regalo · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Vai al sito Web CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Vai al sito web"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Altezza %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Ecco un indirizzo Dash designato per il tuo account CrowdNode nel Portafoglio Dash su questo dispositivo"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Tieni premuto un pulsante sopra per sostituirlo con la funzione di cui hai bisogno"; -/* CrowdNode */ -"How CrowdNode staking works" = "Come funziona lo staking di CrowdNode"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Come posso ottenere Dash di Test?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Quanto è privato DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Come confermare il tuo indirizzo API Dash"; - /* No comment provided by engineer. */ "How to use your gift card" = "Come utilizzare la tua carta regalo"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Accetto di perdere le mie monete se non possiedo la frase di recupero"; -/* CrowdNode */ -"I agree to CrowdNode" = "Accetto CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Se scegli di concedere le autorizzazioni in un secondo momento e non ti trovi nel Regno Unito, puoi utilizzare Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Se dovessi perdere la passphrase, puoi verificarti con altri mezzi per riottenere l'accesso ai tuoi fondi CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Se perdi la passphrase per questo portafoglio e perdi questo dispositivo o disinstalli il Portafoglio Dash, perderai l'accesso ai tuoi fondi su CrowdNode e ai fondi all'interno di questo portafoglio."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Se desideri veramente cancellarlo, perfavore inserisci: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In caso di prelievi maggiori CrowdNode pagherà i prelievi entro due settimane. Ciò è dovuto ai loro protocolli di sicurezza e molto spesso verrà gestito molto più velocemente."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Nel caso in cui perdi la passphrase perderai il diritto al nome utente richiesto."; -/* CrowdNode Portal */ -"In process…" = "Processo in corso..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informazioni sul tuo account online"; - /* Buy Sell Portal */ "Initializing" = "Inizializzazione"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Trasferito internamente a"; -/* CrowdNode */ -"Introducing Staking" = "Introduzione allo Staking"; - /* Invalid transaction */ "Invalid" = "Non valido"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Indirizzo Dash non valido"; -/* CrowdNode Online */ -"Invalid Email" = "E-mail non valida"; - /* No comment provided by engineer. */ "Invalid email or password." = "Email o password non valide."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "Portafoglio Dash iOS: %@ Problema segnalato"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "L'aggiornamento del saldo può richiedere un minuto."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Potrebbe volerci un minuto prima che i tuoi fondi arrivino."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Unisciti ora"; -/* CrowdNode */ -"Joining the pool" = "Unisciti alla pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Mantieni private queste monete. Si applicano commissioni di rete e di privacy."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Esci dal \"pool\""; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Fai scansionare questo codice a un altro utente di Dash Wallet per farti aggiungere come contatto."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Collega l'account Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Collega account esistente"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Collega l'account CrowdNode esistente"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Collega l'account Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Accedi a CrowdNode"; - /* DashSpend */ "Log in to your account" = "Esegui il Log in al tuo account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Sembra che tu stia svuotando il tuo Portafoglio Dash"; - /* adjective, security level */ "Low" = "Basso"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medio"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "I membri sono liberi di lasciare la pool e nella maggior parte dei casi possono andarsene immediatamente."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nessuna transazione non confermata da scartare."; -/* CrowdNode */ -"New CrowdNode Account" = "Nuovo account CrowdNode"; - /* Voting */ "New to old" = "Dal nuovo al vecchio"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Account in linea"; - /* Online Merchant */ "Online Merchant" = "Commerciante Online"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "I pagamenti con ogni contatto sono raggruppati in un unico posto, con nomi e profili al posto di transazioni grezze."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Indirizzo di pagamento"; -/* CrowdNode */ -"Payout Options" = "Opzioni di pagamento"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "ogni 24 ore"; - -/* CrowdNode */ -"per hour" = "all'ora"; - -/* CrowdNode */ -"per transaction" = "per transazione"; - /* Usernames */ "Personalise profile" = "Personalizza il profilo"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Vai al tuo account Uphold per verificare la tua identità."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Tieni presente che l'Email non viene salvata dal Portafoglio Dash e viene inviata solo a CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Si prega di notare che il nome utente NON può essere modificato una volta registrato."; /* Usernames */ "Please note that you will not be able to change it in future" = "Tieni presente che non potrai modificarlo in futuro"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Tieni presente che non sarai in grado di prelevare i tuoi fondi da CowdNode a questo portafoglio fino a quando non aumenterai il tuo saldo a %@ Dash"; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Perfavore posiziona il tuo telefono vicino al dispositivo NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "attendere prego"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Si prega di attendere prima di avviare il prossimo prelievo"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Attendi che il portafoglio sia completamente sincronizzato prima di esportare la cronologia delle transazioni"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "I prezzi non sono stati recuperati. I valori Fiat potrebbero essere errati."; -/* CrowdNode */ -"Primary Dash address" = "Indirizzo Dash primario"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Pro"; -/* CrowdNode Portal */ -"Protect your savings" = "Proteggi i tuoi risparmi"; - /* Usernames */ "Prove your identity" = "Dimostra la tua identità"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Leggi la Policy di prelievo"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Sola lettura"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Ricevi direttamente nel Portafoglio Dash"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Ricevi la tua quota di premi ogni giorno."; - /* Received transaction */ "Received" = "Ricevuto"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Ricevuto da %@"; -/* CrowdNode */ -"Receiving rewards" = "Ricevi le ricompense"; - "Records your masternodes as having voted, without taking a side." = "Registra i tuoi masternode come votanti, senza prendere posizione."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Invia %@ dal tuo indirizzo Dash principale registrato e validato nel tuo account CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Invia Invito"; -/* Coinbase - CrowdNode */ -"Send Report" = "Spedisci il rapporto"; - /* No comment provided by engineer. */ "Send to" = "Manda a"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Invio a"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Invio all'account CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Invio al Portafoglio Dash su questo dispositivo"; - /* Buy Dash */ "Sending to:" = "Invio a:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Imposta il portafoglio"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Condividi"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Mostra le chiavi masternode"; -/* CrowdNode */ -"Show QR" = "Mostra QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Mostra la frase di recupero"; /* Alert title */ "Sign in required" = "È richiesto l'accesso"; -/* CrowdNode */ -"Sign up error" = "Errore di registrazione"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Iscriviti a CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Iscriviti per completare la configurazione dell'account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Semplifica le tue tasse sulle criptovalute"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Inizia dopo che avrai aggiunto i fondi"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Sincronizzato con l'attuale Portafoglio Dash"; - /* No comment provided by engineer. */ "Syncing" = "Sincronizzazione"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "La rete Dash deve votare per approvare alcuni nomi utente prima che vengano creati"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "La rete Dash è guidata da una serie di Masternode che sono una parte essenziale per facilitare i pagamenti."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "I Dash sono stati depositati con successo sul tuo account Coinbase. Ma si è verificato un problema durante il trasferimento sul Portafoglio Dash su questo dispositivo."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Questo indirizzo non può essere pagato dal tuo saldo %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Questo PIN ti sarà richiesto per sbloccare l'app ogni volta che la usi."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Questo QR contiene già la richiesta di pagamento per %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Questo rappresenta l'attuale rendimento percentuale annuo di un Masternode completo meno la commissione CrowdNode del 15%. Non è un tasso di rendimento garantito e può aumentare o diminuire in base alle dimensioni delle pool di CrowdNode e al prezzo di Dash."; - "This still counts as your masternodes having voted in this contest." = "Questo conta comunque come voto espresso dai tuoi masternode in questa contesa."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "al Portafoglio Dash su questo dispositivo"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Per iniziare a fare staking, crea un account su CrowdNode o connettiti a uno esistente."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "all'indirizzo Dash designato per il tuo account CrowdNode nel Portafoglio Dash su questo dispositivo"; - /* No comment provided by engineer. */ "Today" = "In data odierna"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Cronologia delle transazioni"; - /* Balance info sheet */ "Transaction history isn't available" = "La cronologia delle transazioni non è disponibile"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Errore di trasferimento"; - /* Coinbase */ "Transfer Failed" = "Trasferimento fallito"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Invito valido"; -/* CrowdNode Portal */ -"Validating address…" = "Indirizzo di convalida..."; - /* No comment provided by engineer. */ "Validating username failed" = "Convalida del nome utente non riuscita"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verifica richiesta"; - /* Usernames */ "Verified during registration" = "Verificato durante la registrazione"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Verifica"; -/* CrowdNode */ -"Verify your API Dash address" = "Verifica il tuo indirizzo API Dash"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifica la tua frase di recupero per impostare un nuovo PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Molto Alto"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Piccole quantità di Dash verranno inviate da e verso CrowdNode per verificare che tu sia il proprietario di questo indirizzo di portafoglio."; - /* No comment provided by engineer. */ "View All" = "Mostra tutto"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Il voto su «%@» è già chiuso. Aggiorna per vedere il risultato."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Attendi fino a quando la catena non sarà completamente sincronizzata, in modo da poter rivedere la cronologia delle transazioni."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Attendi fino a quando la catena non è completamente sincronizzata, così possiamo rivedere la cronologia delle transazioni. Visita il sito Web CrowdNode per accedere o registrarti."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Attendi fino a quando il portafoglio non viene sincronizzato per completare la transazione"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Non siamo riusciti a creare il tuo account CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Non è stato possibile effettuare un deposito sul tuo account CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Non siamo riusciti a prelevare dal tuo account CrowdNode."; - /* Explore */ "We have two types of merchants" = "Abbiamo due tipi di commercianti"; /* No comment provided by engineer. */ "We Upgraded" = "Abbiamo aggiornato"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Rileveremo automaticamente questa transazione e trasferiremo lo stesso importo sul tuo account CrowdNode. Dopodiché sarai in grado di effettuare depositi e prelievi nel Portafoglio ​Dash su questo dispositivo."; - /* Website */ "Website" = "Sito Web"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Non hai un nome utente mentre la votazione è in corso. Registra ora un nome utente non conteso — resta tuo e, se la votazione ti assegna «%@», sarai raggiungibile con entrambi i nomi utente."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Perché vedo tutte queste transazioni?"; -/* CrowdNode */ -"Why do you need an online account?" = "Perché hai bisogno di un account online?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Perché non devo scattare screenshot?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "con blockchain Dash"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Ritirare"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Preleva senza limiti con un account online sul sito web di CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Ritiro richiesto"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Preleva l'intero saldo"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Puoi modificare come/quando ti vengono pagati i guadagni del premio."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Puoi continuare a utilizzare DashPay per i pagamenti ma non puoi aggiornare il tuo profilo o aggiungere altri contatti finché non ricarichi il saldo del tuo credito"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Puoi pagare con Dash alla cassa."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Puoi visualizzare informazioni dettagliate sui tuoi depositi, prelievi e guadagni premio."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Puoi specificare qualsiasi URL pubblicamente disponibile su Internet in modo che altri utenti possano vederlo sulla Dash Network."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Hai già votato per questo nome utente %ld volte. Puoi esprimere un solo altro voto per questo nome utente."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Hai inserito una chiave non valida"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Non hai fondi sufficienti per procedere"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Devi eseguire il backup della tua passphrase nel Portafoglio Dash"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "È necessario almeno %@ Dash per creare un invito"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Ti serve almeno %@ sul tuo portafoglio Dash"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Devi avere %@ Dash per creare questo nome utente"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Per acquistare le carte regalo devi accedere a DashSpend."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Devi attendere 5 minuti prima di avviare un altro prelievo"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Hai solo bisogno di %@ per poter entrare nel pool."; - /* DashSpend confirmation */ "You pay" = "Tu paghi"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Hai inviato la richiesta di contatto a %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Dovresti avere un saldo positivo sul Portafoglio Dash"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Dovresti avere almeno %@ per procedere con la verifica in CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Riceverai %@ Dash sul tuo portafoglio in questo dispositivo. Tieni presente che possono essere necessari fino a 2-3 minuti per completare un trasferimento."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Riceverai automaticamente pagamenti frazionari e per impostazione predefinita verranno reinvestiti, tuttavia, è anche facile impostare prelievi automatici per ricevere pagamenti ricorrenti."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Il saldo del tuo credito è basso"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Il tuo account CrowdNode sta creando..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Il tuo account CrowdNode è configurato e pronto per l'uso!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Il tuo account CrowdNode è stato creato utilizzando queste transazioni."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Il tuo indirizzo CrowdNode è stato confermato."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Il tuo indirizzo CrowdNode è stato convalidato, ma è richiesta la verifica."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Il tuo nome utente DashPay è pronto per l'uso"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Il tuo deposito a CrowdNode è stato ricevuto."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "L'ora del tuo dispositivo è %1$@ da %2$d secondi. Non puoi utilizzare CoinJoin a causa di questa differenza."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Il tuo indirizzo Dash principale che utilizzi attualmente per il tuo account CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Il tuo saldo privato. Importi e indirizzi sono cifrati on-chain, così le tue disponibilità e la tua cronologia restano riservate."; diff --git a/DashWallet/ja.lproj/Localizable.strings b/DashWallet/ja.lproj/Localizable.strings index f36d29c6cb..b2be77720f 100644 --- a/DashWallet/ja.lproj/Localizable.strings +++ b/DashWallet/ja.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " または "; -/* CrowdNode */ -" Privacy Policy " = "プライバシーポリシー"; - -/* CrowdNode */ -" Terms of Use " = "利用規約"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ を %2$@ DASH で出品しました"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "端末のパスコードを設定しないとウォレットを守ることができません。端末設定にてパスコードを有効にしてから次に進んでください。"; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "マスターノードには1000Dashの担保が必要であり、各マスターノードには現在年に約%@回ほど報酬が支払われます。"; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "利用規約に\n同意する"; -/* CrowdNode */ -"Accept Terms Of Use" = "利用規約に同意する"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "利用規約に同意しています"; - -/* CrowdNode */ -"Account Recovery" = "アカウントの復旧"; - /* Masternode status */ "Active" = "有効"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "このデバイスからCrowdNodeへの全ての金銭取引は、同デバイスから下記のDashアドレスで行われることになります。"; - /* ZenLedger */ "Allow" = "許可する"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "不明なエラーが発生しました。しばらく経ってからもう一度お試しください。"; -/* CrowdNode */ -"and" = "および"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "ユーザー名は2〜9の数字を含み、20文字を超えるもので、ハイフンを含むものが自動的に承認されます。"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "マスターノードの所有者として、ユーザーがユーザー名を作成する前に、リクエストされたユーザー名を承認する投票を行うことができます。\n不適切と判断したユーザー名の作成をブロックすることができます。"; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "1000Dashを手元に持ち合わせている人はほとんどいないため、Crowdnodeはメンバーからの預金をプールすることでマスターノードを所有するメリットを得ることができるサービスを作りました。"; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "バックアップ"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "バックアップのパスフレーズ"; - /* A noun. Used as a title. */ "Backup Wallet" = "ウォレットをバックアップする"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "CrowdNodeのアカウントを作成するためのパスフレーズをバックアップします"; - /* Back up wallet */ "Backup your recovery phrase" = "リカバリーフレーズをバックアップ"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "残高"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "後の残高"; -/* CrowdNode */ -"Balance On CrowdNode" = "CrowdNodeの残高"; - -/* CrowdNode */ -"Balance: " = "残高:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "残高と送金は公開されません"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "銀行振込"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "CrowdNodeでDashのマスターノードに加入します"; - /* TimeSkew */ "behind" = "下回る"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "完了したら、閉じて通知する"; - /* No comment provided by engineer. */ "Close App" = "アプリを閉じる"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "接続しました"; -/* CrowdNode */ -"Connected Dash address" = "連結されたDashアドレス"; - /* SPV sync */ "Connected peers" = "接続中のピア"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "ユーザー名を作成する"; -/* CrowdNode */ -"Create Account" = "アカウントの作成"; - /* Create DashSpend account */ "Create account" = "アカウントを作成する"; /* DashSpend account title */ "Create an account or log into an existing one" = "アカウントを作成するか、既存のアカウントにログインする"; -/* CrowdNode */ -"Create an online CrowdNode account" = "CrowdNodeのオンラインアカウントを作成"; - /* No comment provided by engineer. */ "Create invitation" = "招待状を作成する"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "オンラインアカウントを作成"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "クレジット"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNodeの特典"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNodeのサポート"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNodeは、このアドレスをお客様のアカウントIDとして使用します。このアドレスに割り当てられたパスフレーズを紛失すると、このウォレットとCrowdNodeのアカウントにある資金へのアクセスが出来なくなります。"; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNodeの出金限度額"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNodeのアカウント"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNodeからDashWalletへ"; - /* No comment provided by engineer. */ "CSV Export" = "CSVのエクスポート"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTXのギフトカード"; -/* Crowdnode */ -"Current APY = %@" = "現在のAPY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "現在のAPY: %@"; - /* Explore Dash: Filters */ "Current location" = "現在地"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dashアドレス"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "この端末のDashウォレットでCrowdNodeアカウントに指定されたDashアドレス"; - /* No comment provided by engineer. */ "Dash balance" = "Dash残高"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWalletからCrowdNodeへ"; - /* No comment provided by engineer. */ "Date" = "日付け"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "拒否されました"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "入金"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "%@を入金して、収入を獲得し始める"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "出金するには、Dashウォレットに%@Dash以上の入金が必要です。"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "収入の獲得を開始するには、%@以上必要です"; - -/* CrowdNode */ -"Deposit sent" = "入金額が送金されました"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "導出パス"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "破棄しています…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "CrowdNodeの利用規約により、ユーザーはこれ以上出金できません。"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "規定上の制約により、お客様が英国にいないことを確認する必要があります。 Coinbaseの機能を入力する際にのみ、お客様の所在地を確認します。"; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "投票プロセスにより、Dashネットワークは「%@」というユーザー名を他のユーザーに割り当てることに決定しました。別のユーザー名をリクエストしてもう一度お試しください。"; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "例:johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "招待状はこの金額で提供され、受取人はDashネットワーク上で速やかにユーザー名を作成できます。"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "以前"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "簡単にDashをステークし、数回のクリックでパッシブ収入を得ます。"; - /* SPV diagnostics */ "Edit birth height" = "開始ブロック高を編集"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "例: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Eメール"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "初回入金額は、%@以上必要です。"; - -/* CrowdNode */ -"First minimum deposit" = "初回最低入金額"; - /* DashSpend */ "Fixed amounts" = "固定金額"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "CrowdNodeから"; - -/* from Dash Wallet */ -"from Dash Wallet" = "Dash Walletから"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "資金を移動しました"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "0.5DashからDashのマスターノードに入金して報酬を得ることができます。"; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "DashPay に参加する準備をしましょう"; -/* CrowdNode */ -"Get Rewards Instantly" = "すぐに報酬を獲得する"; - /* No comment provided by engineer. */ "Get Started" = "始める"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "ユーザー名を取得する"; -/* CrowdNode */ -"Getting started with CrowdNode" = "CrowdNodeではじめる"; - /* No comment provided by engineer. */ "Gift card" = "ギフトカード"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "ギフトカード · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "CrowdNodeのウェブサイトへ移動"; - /* No comment provided by engineer. */ "Go to Website" = "ウェブサイトへ行く"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "ブロック高 %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "こちらが、この端末のDashウォレットでCrowdNodeアカウントに指定されたDashアドレスです。"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "上記のいずれかのボタンを長押しすると、そのボタンを必要な機能に置き換えることができます"; -/* CrowdNode */ -"How CrowdNode staking works" = "CrowdNodeのステーキングの仕組み"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "テストDashを取得するには"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay のプライバシーはどの程度ですか?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "APIのDashアドレスの確認方法"; - /* No comment provided by engineer. */ "How to use your gift card" = "ギフトカードの使用方法"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "もし復元フレーズを無くしたら、自分のコインが失われることに同意します"; -/* CrowdNode */ -"I agree to CrowdNode" = "CrowdNodeに同意します"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "お客様が後日に許可するを選択し、英国にいらっしゃらない場合は、Coinbaseをご利用いただけます。"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "パスフレーズを紛失した場合、他の方法で本人確認を行うことで、再びCrowdNodeの資金にアクセスできるようになります。"; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "このウォレットのパスフレーズを紛失したり、このデバイスをなくしたり、Dash Walletをアンインストールすると、CrowdNode上の資金とこのウォレット内の資金にアクセスできなくなります。"; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "もしまだ消去したければ、次の文をご入力ください: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "多額の出金の場合、CrowdNodeは2週間以内に出金を行います。これはセキュリティプロトコルによるもので、通常はもっと早く処理されます。"; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "パスフレーズを紛失した場合、お客様が請求したユーザー名を使用する権利を失います。"; -/* CrowdNode Portal */ -"In process…" = "処理中"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "オンラインアカウントに関する情報"; - /* Buy Sell Portal */ "Initializing" = "初期化中"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "内部で移転"; -/* CrowdNode */ -"Introducing Staking" = "ステーキングの導入"; - /* Invalid transaction */ "Invalid" = "無効"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "無効なDashアドレス"; -/* CrowdNode Online */ -"Invalid Email" = "無効なEメール"; - /* No comment provided by engineer. */ "Invalid email or password." = "無効なEメールかパスワードです。"; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOSのDashウォレット: %@件の報告済みの問題"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "お客様の残高が更新されるまで、1分ほどかかる場合があります。"; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "お客様の資金が着金するまで、1分ほどかかることがあります。"; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "今すぐ参加する"; -/* CrowdNode */ -"Joining the pool" = "プールの参加"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "これらのコインをプライベートに保ちます。ネットワーク手数料とプライバシー手数料がかかります。"; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "プールの退会"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "別の Dash Wallet ユーザーにこのコードをスキャンしてもらうと、あなたを連絡先に追加できます。"; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Coinbaseアカウントをリンク"; -/* CrowdNode */ -"Link Existing Account" = "既存アカウントへのリンク"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "既存のCrowdNodeアカウントへのリンク"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Upholdアカウントをリンクさせる"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "CrowdNodeにログイン"; - /* DashSpend */ "Log in to your account" = "アカウントにログインする"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "お客様のDash Walletに資金がありません"; - /* adjective, security level */ "Low" = "低"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "中間"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "会員は自由にプールを退出することができ、ほとんどの場合すぐに退出できます。"; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "破棄する未確認の取引はありません。"; -/* CrowdNode */ -"New CrowdNode Account" = "CrowdNodeの新規アカウント"; - /* Voting */ "New to old" = "新しい順"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "オンライン"; -/* CrowdNode Portal */ -"Online Account" = "オンラインアカウント"; - /* Online Merchant */ "Online Merchant" = "オンライン加盟店"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "各連絡先との支払いが 1 か所にまとまり、生の取引ではなく名前とプロフィールで表示されます。"; -/* CrowdNode */ /* Masternodes */ "Payout address" = "支払い先アドレス"; -/* CrowdNode */ -"Payout Options" = "支払い方法"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "24時間あたり"; - -/* CrowdNode */ -"per hour" = "1時間あたり"; - -/* CrowdNode */ -"per transaction" = "1取引あたり"; - /* Usernames */ "Personalise profile" = "プロフィールをカスタマイズする"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Upholdのアカウントにアクセスし、本人確認を行ってください。"; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "メールはDashウォレットには保存されず、CrowdNodeにのみ送信されることにご留意ください。"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "ユーザー名は一度登録すると変更できませんのでご注意ください。"; /* Usernames */ "Please note that you will not be able to change it in future" = "今後変更することはできませんのでご注意ください。"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "残高を%@Dashに増加させない限り、CrowdNodeからこのウォレットに資金を引き出すことはできませんので、ご注意ください。"; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "あなたの携帯電話をNFCデバイスに近づけてください"; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "お待ちください"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "次の出金を開始する前に少々お待ちください"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "取引履歴をエクスポートする前に、ウォレットが完全に同期されるまでお待ちください"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "価格を取得できませんでした。フィアットの値が正しくない可能性があります。"; -/* CrowdNode */ -"Primary Dash address" = "メインのDashアドレス"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "メリット"; -/* CrowdNode Portal */ -"Protect your savings" = "貯蓄の保護"; - /* Usernames */ "Prove your identity" = "お客様の身元を証明する"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "出金ポリシーを読む"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "読み取り専用"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Dashウォレットに直接入金する"; -/* CrowdNode */ -"Receive your share of rewards daily." = "毎日、報酬の分配金を受け取れます。"; - /* Received transaction */ "Received" = "受取済み"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "%@ さんから受け取りました"; -/* CrowdNode */ -"Receiving rewards" = "報酬の受取"; - "Records your masternodes as having voted, without taking a side." = "どちらにもつかずに、あなたのマスターノードが投票したものとして記録します。"; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "現在CrowdNodeアカウントで使用しているメインのDashアドレスから%@を送金します。"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "招待状を送る"; -/* Coinbase - CrowdNode */ -"Send Report" = "レポートを送信"; - /* No comment provided by engineer. */ "Send to" = "に送信する"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "送金先"; -/* CrowdNode */ -"Sending to CrowdNode account" = "CrowdNodeアカウントへの送金"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "このデバイスでDash Walletに送金する"; - /* Buy Dash */ "Sending to:" = "送金先:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "ウォレットをセットアップする"; -/* CrowdNode */ +/* Receive screen */ "Share" = "シェアする"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "マスターノードキーを表示する"; -/* CrowdNode */ -"Show QR" = "QRを表示する"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "復元フレーズを表示する"; /* Alert title */ "Sign in required" = "サインインが必要です"; -/* CrowdNode */ -"Sign up error" = "サインアップエラー"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "CrowdNodeにサインアップ"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "サインアップしてアカウント設定を完了する"; - /* ZenLedger */ "Simplify your crypto taxes" = "暗号資産の税金を簡素化する"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "ステーキング"; - /* Usernames */ "Starts after you add funds" = "資金を追加すると開始します"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "現在使用しているDash Walletと同期"; - /* No comment provided by engineer. */ "Syncing" = "同期中"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Dashネットワークでは、ユーザー名が作成される前に、そのユーザー名に対して投票で承認する必要があります"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Dashネットワークは多くのマスターノードで駆動され、決済を促進するのに不可欠な役割を担っています。"; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "このDashはお客様のCoinbaseアカウントに正常に入金されました。しかし、この端末でDashウォレットに送金する際に問題が発生しました。"; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "このアドレスには %@ 残高から支払えません"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "このアプリをアンロックして使用するときは必ずこのPINが必要となります"; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "このQRには、すでに%@の支払い請求が含まれています。"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "これは、現在のフル・マスターノードの年間利回りから15%のCrowdNode手数料を差し引いたものです。これは保証された還元率ではなく、CrowdNodeプールの規模やDashの価格によって上下する可能性があります。"; - "This still counts as your masternodes having voted in this contest." = "これでもこの争奪であなたのマスターノードが投票したものとして扱われます。"; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "この端末のDashウォレットに"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "ステーキングを開始するには、CrowdNodeにアカウントを作成するか、既存のアカウントに接続します。"; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "このデバイスのDashウォレットでCrowdNodeのアカウントに指定したDashアドレスに送金します"; - /* No comment provided by engineer. */ "Today" = "今日"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "取引履歴"; - /* Balance info sheet */ "Transaction history isn't available" = "取引履歴は利用できません"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "送金エラー"; - /* Coinbase */ "Transfer Failed" = "取引に失敗しました"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "有効な招待状"; -/* CrowdNode Portal */ -"Validating address…" = "アドレスを有効化中"; - /* No comment provided by engineer. */ "Validating username failed" = "ユーザー名の有効化失敗"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "認証が必要です"; - /* Usernames */ "Verified during registration" = "登録時に確認済み"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "検証する"; -/* CrowdNode */ -"Verify your API Dash address" = "APIのDashアドレスの認証"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "新しい PIN を設定するには復元フレーズを確認してください。"; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = " 非常に高い"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "このウォレットのアドレスの所有者であることを認証するために、極めて少額のDashがCrowdNodeで行き来することになります。"; - /* No comment provided by engineer. */ "View All" = "すべて表示"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "「%@」の投票はすでに終了しています。更新して結果をご確認ください。"; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "チェーンが完全に同期されるまでお待ちください。同期が完了すると、取引履歴を確認できます。"; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "チェーンが完全に同期されるまで待ち、お客様の取引履歴を確認できるようにします。CrowdNodeのウェブサイトにアクセスし、ログインまたはサインアップしてください。"; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "ウォレットが同期されるまで待ち、取引を完了させます。"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "お客様のCrowdNodeアカウントを作成できませんでした。"; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "お客様のCrowdNodeアカウントに入金できませんでした。"; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "お客様のCrowdNodeアカウントから出金できませんでした。"; - /* Explore */ "We have two types of merchants" = "加盟店が2つあります"; /* No comment provided by engineer. */ "We Upgraded" = "アップグレード済み"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "この取引を自動的に検出し、同額をお客様のCrowdNodeアカウントに送金します。その後、このデバイスでDash Walletに入出金することができるようになります。"; - /* Website */ "Website" = "ウェブサイト"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "投票が進行中の間、あなたにはユーザー名がありません。今すぐ争いのないユーザー名を登録してください。その名前はあなたのものとして残り、投票で「%@」を獲得した場合は両方のユーザー名で連絡を受けられます。"; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "なぜこのような取引があるのですか。"; -/* CrowdNode */ -"Why do you need an online account?" = "なぜオンラインアカウントが必要なのですか。"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "なぜスクリーンショットを撮ってはいけませんか。"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "Dashのブロックチェーンで"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "出金"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "CrowdNodeのウェブサイトからオンラインアカウントで無制限に出金することができます。"; - -/* CrowdNode */ -"Withdrawal requested" = "出金がリクエストされました"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "残高の全額を出金します"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "お客様は、報酬の支払い方法や支払い時期を変更できます。"; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "お支払いには引き続きDashPayをご利用いただけますが、残高をチャージしていただけるまでは、プロフィールの更新や連絡先の追加はできません"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "レジでDashでお支払いできます。"; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "お客様の入出金や報酬の獲得に関する詳細な情報を確認できます。"; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "インターネット上で公開されている任意のURLを指定して、他のユーザーがDashネットワーク上で見られるようにすることができます。"; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "このユーザー名には、すでに%ld回投票しています。このユーザー名には、あと1回のみ投票できます。"; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "無効なキーが入力されています"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "手続きするのに資金が不足しています"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Dash Walletにパスフレーズをバックアップしておく必要があります"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "招待状を作成するには、%@Dash以上が必要です。"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "CrowdNodeの認証を進めるには、%@以上必要です。"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "このユーザー名を作成するには、%@Dash以上が必要です。"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "ギフトカードを購入するには、DashSpendにサインインする必要があります。"; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "5分間待ってから次の出金を開始しましょう"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "%@だけでプールに参加できます。"; - /* DashSpend confirmation */ "You pay" = "お客様の支払額"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "%@ さんに連絡先リクエストを送信しました"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Dash Walletに残高が残っている状態にする必要があります。"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "CrowdNodeの認証を進めるには、%@以上必要です。 "; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "この端末のDashウォレットで%@Dashを受け取ります。送金完了まで最長2-3分かかることがあります。 "; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "端数の支払いは自動的に受け取れ、デフォルトでは再投資されますが、定期的な支払いを受け取るための自動出金の設定も簡単に行うことができます。"; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Dashの残高が不足しています"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "お客様のCrowdNodeアカウントを作成中..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "お客様のCrowdNodeアカウントが設定され、ご利用いただけるようになりました。"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "お客様のCrowdNodeアカウントは、これらの取引を利用して作成されました。"; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "お客様のCrowdNodeアドレスが確認されました。"; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "お客様のCrowdNodeアドレスが有効化されていますが、認証が必要です。"; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "あなたのDashPayのユーザー名は使用可能です"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "お客様のCrowdNodeへの入金が完了しました。"; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "お客様のデバイスの時刻は%2$d秒で%1$@の誤差があります。この誤差があるため、CoinJoinはご利用いただけません。\n\nお客様のデバイスの時刻設定を「自動時刻設定」に変更していただいてから、CoinJoinをご利用ください。"; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "お客様のCrowdNodeアカウントで使用中のメインのDashアドレス"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "プライベートな残高です。金額とアドレスはオンチェーンで暗号化されるため、保有額と履歴は非公開のままです。"; diff --git a/DashWallet/ko.lproj/Localizable.strings b/DashWallet/ko.lproj/Localizable.strings index 2af641e222..646465c295 100644 --- a/DashWallet/ko.lproj/Localizable.strings +++ b/DashWallet/ko.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " 또는 "; -/* CrowdNode */ -" Privacy Policy " = "개인정보 보호정책"; - -/* CrowdNode */ -" Terms of Use " = "이용약관"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ 을(를) %2$@ DASH에 등록했습니다"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "지갑을 보호하기 위해 비밀번호가 필요합니다. 설정에서 비밀번호를 활성화해주세요."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "마스터노드는 1000 대시의 보증이 필요하며 각 마스터노드는 현재 연간 약 %@ 의 보상을 받습니다."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "이용 약관\n동의"; -/* CrowdNode */ -"Accept Terms Of Use" = "이용약관 수락하기"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "이용 약관에 동의하는 중..."; - -/* CrowdNode */ -"Account Recovery" = "계정 복구"; - /* Masternode status */ "Active" = "활성"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "이 기기의 크라우드노드에서/로부터 발생하는 모든 거래는 이 기기의 아래 대시 주소로 이루어집니다."; - /* ZenLedger */ "Allow" = "허용"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "알 수 없는 오류가 발생했습니다. 나중에 다시 시도하십시오."; -/* CrowdNode */ -"and" = "또한"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "2-9사이의 숫자가 포함되고, 20글자 이상이거나 하이픈 기호를 포함한 사용자 이름은 자동으로 승인됩니다"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "마스터노드 소유자는 사용자가 사용자 이름을 생성하기 이전에 이를 위한 요청에 대해 투표할 수 있습니다.\n부적절하다고 느껴지는 사용자이름의 생성은 차단할 수 있습니다."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "대부분의 사람들이 당장 1000대시를 지니고 있지 않은 만큼, 크라우드노드는 구성원들의 보증금을 모아 마스터노드 소유의 장점을 누릴 수 있도록 하는 서비스를 개설하였습니다."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "백업"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "암호 문구 백업하기"; - /* A noun. Used as a title. */ "Backup Wallet" = "지갑 백업"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "크라우드노드 계정을 생성하려면 암호 문구를 백업하세요"; - /* Back up wallet */ "Backup your recovery phrase" = "복구 문구를 백업하세요"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "잔액"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "이후 잔액"; -/* CrowdNode */ -"Balance On CrowdNode" = "크라우드노드 잔고"; - -/* CrowdNode */ -"Balance: " = "잔고:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "잔액과 전송은 공개되지 않습니다"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "은행 송금"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "크라우드노드를 통해 대시 마스터노드의 일원이 되세요"; - /* TimeSkew */ "behind" = "뒤"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "완료되면 종료하고 알림받기"; - /* No comment provided by engineer. */ "Close App" = "앱 닫기"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "연결됨"; -/* CrowdNode */ -"Connected Dash address" = "연결된 대시 주소"; - /* SPV sync */ "Connected peers" = "연결된 피어"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "사용자이름 생성하기"; -/* CrowdNode */ -"Create Account" = "계정 생성하기"; - /* Create DashSpend account */ "Create account" = "계정 생성하기"; /* DashSpend account title */ "Create an account or log into an existing one" = "계정을 생성하거나 기존 계정에 로그인하세요"; -/* CrowdNode */ -"Create an online CrowdNode account" = "온라인 크라우드노드 계정 생성하기"; - /* No comment provided by engineer. */ "Create invitation" = "초대 생성하기"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "온라인 계정 생성하기"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "크레딧"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "크라우드노드의 이점"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "크라우드노드 지원"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "크라우드노가 이 주소를 당신의 계정 ID로 사용합니다. 이 주소에 연결된 암호 문구를 잃게되는 경우, 이 지갑 안의 자금 및 크라우드노드 계정에 대한 액세스를 잃게 됩니다. "; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "크라우드노드 출금 한도"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "크라우드노드 · 계정"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "크라우드노드 ➝ 대시지갑"; - /* No comment provided by engineer. */ "CSV Export" = "CSV 내보내기"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX 기프트 카드"; -/* Crowdnode */ -"Current APY = %@" = "현재 APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "현재 APY는 %@ 입니다"; - /* Explore Dash: Filters */ "Current location" = "현재 위치"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "대시 주소"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "이 기기의 대시 지갑 내 크라우드노드 계정에 지정한 대시 주소"; - /* No comment provided by engineer. */ "Dash balance" = "대시 잔고"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "대시지갑 ➝ 크라우드노드"; - /* No comment provided by engineer. */ "Date" = "날짜"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "거절됨"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "입금"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "%@를 입금하고 소득 얻기를 시작하세요 "; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "당신의 대시 지갑에 최소 금액 %@ 를 입금하여 출금을 완료합니다"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "소득 얻기를 시작하려면 최소 %@ 를 입금해야 합니다"; - -/* CrowdNode */ -"Deposit sent" = "입금 완료"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "파생 경로"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "버리는 중…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "크라우드노드의 서비스 이용 약관에 따라, 사용자들은 다음의 금액 이상을 출금할 수 없습니다:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "규제적 제약으로 인하여, 귀하가 영국에 있지 않음을 확인해야 합니다. 코인베이스 기능 시작시 위치 확인이 필요합니다."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "투표 과정을 통해, 대시 네트워크는 사용자 이름 '%@'을 다른 사용자에게 할당하기로 결정하였습니다. 다른 사용자 이름으로 다시 시도해주십시오."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "예시 johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "각 초대는 이 금액을 통해 지원되며, 이로써 받는 이가 재빨리 대시 네트워크에 사용자 이름을 생성할 수 있습니다"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "이전"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "간단한 클릭만으로 대시를 손쉽게 스테이킹하고 소극적 소득을 얻으세요."; - /* SPV diagnostics */ "Edit birth height" = "시작 블록 높이 편집"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "예시: 홍길동"; -/* CrowdNode */ +/* DashSpend */ "Email" = "이메일"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "첫 입금은 %@ 이상이어야 합니다"; - -/* CrowdNode */ -"First minimum deposit" = "첫 번째 최소 입금"; - /* DashSpend */ "Fixed amounts" = "고정된 금액"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "크라우드노드에서"; - -/* from Dash Wallet */ -"from Dash Wallet" = "대시 지갑에서"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "자금 이동 완료"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "대시 마스터노드에 최소 보증금 0.5대시로 리워드를 받아보세요."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "DashPay에 참여할 준비를 하세요"; -/* CrowdNode */ -"Get Rewards Instantly" = "지금 리워드 받기"; - /* No comment provided by engineer. */ "Get Started" = "시작하기"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "사용자 이름을 설정하세요"; -/* CrowdNode */ -"Getting started with CrowdNode" = "크라우드노드 시작하기"; - /* No comment provided by engineer. */ "Gift card" = "기프트 카드"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "기프트 카드 · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "크라우드노드 웹사이트 방문하기"; - /* No comment provided by engineer. */ "Go to Website" = "웹사이트로 가기"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "블록 높이 %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "다음은 이 기기의 대시 지갑 내 크라우드노드 계정에 지정된 대시 주소입니다"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "위의 버튼을 길게 눌러 필요한 기능으로 변경하세요"; -/* CrowdNode */ -"How CrowdNode staking works" = "크라우드노드 스테이킹이 이루어지는 방식"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "테스트 대시는 어떻게 얻나요?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay의 프라이버시 수준은 어느 정도인가요?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "당신의 API 대시 주소를 확인하는 방법"; - /* No comment provided by engineer. */ "How to use your gift card" = "기프트 카드 사용 방법"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "복구 문구를 보유하고 있지 않은 경우 코인을 분실하는 것에 동의합니다."; -/* CrowdNode */ -"I agree to CrowdNode" = "크라우드노드에 동의합니다"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "나중에 허락하기를 선택하고 영국에 위치하지 않으면, 코인베이스를 사용할 수 있습니다"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "암호 문구를 잃어버리게 되면 크라우드노드 자금에 다시 액세스하기 위해 다른 방법으로 본인 인증을 해야 합니다."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "이 지갑의 암호 문구를 잃어버리고 기기를 잃는 경우 혹은 대시 지갑을 삭제하는 경우에는 크라우드노드의 자금 및 이 지갑 내 자금에 대한 액세스를 잃게 됩니다."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "그래도 삭제하려면 다음과 같이 입력하십시오: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "출금 금액이 큰 경우 크라우드노드는 2주 이내에 출금 금액을 지불합니다. 이는 보안 프로토콜로 인한 것으로, 대부분의 경우 이보다 훨씬 빠르게 처리됩니다."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "복구 문구를 잃어버리는 경우 요청된 사용자이름에 대한 권리 역시 잃게 됩니다."; -/* CrowdNode Portal */ -"In process…" = "처리중..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "당신의 온라인 계정에 대한 정보"; - /* Buy Sell Portal */ "Initializing" = "초기값 설정"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "다음에 내부적으로 이동"; -/* CrowdNode */ -"Introducing Staking" = "스테이킹 소개"; - /* Invalid transaction */ "Invalid" = "유효하지 않음"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "유효하지 않은 대시 주소"; -/* CrowdNode Online */ -"Invalid Email" = "유효하지 않은 이메일"; - /* No comment provided by engineer. */ "Invalid email or password." = "이메일 혹은 비밀번호가 유효하지 않습니다."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS 대시 지갑: %@ 이슈 보고됨"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "잔고가 업데이트되는 데에는 잠시 시간이 소요될 수 있습니다."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "당신의 자금이 도착하는 데에는 잠시 시간이 소요될 수 있습니다."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "지금 가입하세요"; -/* CrowdNode */ -"Joining the pool" = "풀 가입하기"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "이 코인을 비공개로 유지합니다. 네트워크 및 프라이버시 수수료가 적용됩니다."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "풀 떠나기"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "다른 Dash Wallet 사용자가 이 코드를 스캔하면 회원님을 연락처로 추가할 수 있습니다."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "코인베이스 계정 연결하기"; -/* CrowdNode */ -"Link Existing Account" = "기존 계정 연결"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "기존의 크라우드노드 계정 연결"; - /* No comment provided by engineer. */ "Link Uphold Account" = "업홀드 계정 연결"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "크라우드노드에 로그인"; - /* DashSpend */ "Log in to your account" = "당신의 계정에 로그인하세요"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "대시 지갑을 비우고 있는 것 같군요"; - /* adjective, security level */ "Low" = "낮음"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "중간"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "멤버들은 풀을 자유롭게 떠날 수 있으며, 즉시 떠날 수도 있습니다."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "버릴 미확인 트랜잭션이 없습니다."; -/* CrowdNode */ -"New CrowdNode Account" = "새로운 크라우드노드 계정"; - /* Voting */ "New to old" = "현재부터 과거"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "온라인"; -/* CrowdNode Portal */ -"Online Account" = "온라인 계정"; - /* Online Merchant */ "Online Merchant" = "온라인 판매자"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "연락처별 결제가 한곳에 묶여, 원시 거래 대신 이름과 프로필로 표시됩니다."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "지급 주소"; -/* CrowdNode */ -"Payout Options" = "지불 옵션"; - /* Coinbase/Payment Methods */ "PayPal" = "페이팔"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "24시간당"; - -/* CrowdNode */ -"per hour" = "시간당"; - -/* CrowdNode */ -"per transaction" = "거래당"; - /* Usernames */ "Personalise profile" = "개인화된 프로필"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "업홀드 계정으로 가서 본인 확인 절차를 진행해주십시오."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "이 이메일은 대시 지갑에 의해 저장되지 않으며 크라우드노드로만 보내진다는 점에 주의하십시오"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "사용자 이름의 등록이 완료되면 변경할 수 없다는 점에 유의하세요."; /* Usernames */ "Please note that you will not be able to change it in future" = "이후에 다시 변경할 수 없음에 주의하세요"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "당신의 잔고를 %@ 대시로 올리지 않으면 크라우드노드에서 이 지갑으로 자금을 출금할 수 없다는 점에 주의하세요."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "휴대 전화를 NFC 기기 가까이에 두십시오."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "기다려주십시오"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "다음 출금을 요청하기 전 기다려 주십시오"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "당신의 거래 내역을 내보내기 전 지갑이 완전히 동기화될 때까지 기다려주세요"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "가격을 불러오지 않았습니다. 금액이 정확하지 않을 수 있습니다."; -/* CrowdNode */ -"Primary Dash address" = "주요 대시 주소"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "장점"; -/* CrowdNode Portal */ -"Protect your savings" = "계좌 보호하기"; - /* Usernames */ "Prove your identity" = "당신의 신원을 증명하세요"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "출금 약관 읽어보기"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "읽기 전용"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "대시 지갑으로 직접 받기"; -/* CrowdNode */ -"Receive your share of rewards daily." = "매일 당신의 리워드를 받아보세요."; - /* Received transaction */ "Received" = "받음"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "%@ 님에게서 받음"; -/* CrowdNode */ -"Receiving rewards" = "보상 받기"; - "Records your masternodes as having voted, without taking a side." = "어느 편도 들지 않고, 회원님의 마스터노드가 투표한 것으로 기록합니다."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "현재 당신의 크라우드노드 계정에 사용하고 있는 주요 대시 주소에서 %@ 를 송금합니다"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "초대 전송하기"; -/* Coinbase - CrowdNode */ -"Send Report" = "보고 전송하기"; - /* No comment provided by engineer. */ "Send to" = "다음에 전송합니다"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "받는 사람"; -/* CrowdNode */ -"Sending to CrowdNode account" = "크라우드노드 계정에 보내는 중"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "이 기기의 대시 지갑에 보내는 중"; - /* Buy Dash */ "Sending to:" = "다음으로 보내기:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "지갑 설정하기"; -/* CrowdNode */ +/* Receive screen */ "Share" = "공유하기"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "마스터노드 키 확인하기"; -/* CrowdNode */ -"Show QR" = "QR 코드 보기"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "복원 문구 확인하기"; /* Alert title */ "Sign in required" = "가입이 필요합니다"; -/* CrowdNode */ -"Sign up error" = "가입 오류"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "크라우드노드 가입하기"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "가입하여 계정 설정을 완료하세요"; - /* ZenLedger */ "Simplify your crypto taxes" = "당신의 암호화폐 세금을 간소화하세요"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "스테이킹"; - /* Usernames */ "Starts after you add funds" = "자금을 추가하면 시작됩니다"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "현재 대시 지갑과 동기화됨"; - /* No comment provided by engineer. */ "Syncing" = "동기화 중"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "일부 사용자 이름이 생성되기 전, 대시 네트워크가 투표를 통해 승인해야 합니다."; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "대시 네트워크는 지불이 이루어지는 데 중요한 역할을 하는 다수의 마스터노드에 의해 운영됩니다."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "대시가 당신의 코인베이스 계정에 성공적으로 입금되었습니다. 그러나 이 기기의 대시 지갑으로 옮기는 데에 문제가 발생했습니다."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "이 주소는 %@ 잔액으로 결제할 수 없습니다"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "당신이 어플을 언락하실 때마다 이 PIN이 필요합니다."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "이 QR은 이미 %@ 에 대한 지불 요청을 포함합니다"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "이것은 전체 마스터노드의 현재 연간 수익률에서 15% 크라우드노드 수수료를 뺀 값을 나타냅니다. 이는 보장된 수익률은 아니며, 크라우드노드 풀의 크기와 대시 가격에 따라 증가하거나 감소할 수 있습니다."; - "This still counts as your masternodes having voted in this contest." = "이 경우에도 회원님의 마스터노드가 이 경합에서 투표한 것으로 처리됩니다."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "이 기기의 대시 지갑으로"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "스테이킹을 시작하려면 크라우드노드에 계정을 만들거나 기존 계정에 연결하세요."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "이 기기의 대시 지갑 내 크라우드노드 계정에 지정한 대시 주소로 송금합니다."; - /* No comment provided by engineer. */ "Today" = "오늘"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "거래 내역"; - /* Balance info sheet */ "Transaction history isn't available" = "거래 내역을 사용할 수 없습니다"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "송금 오류"; - /* Coinbase */ "Transfer Failed" = "송금에 실패하였습니다"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "유효한 초대장"; -/* CrowdNode Portal */ -"Validating address…" = "주소 확인중..."; - /* No comment provided by engineer. */ "Validating username failed" = "사용자 이름 인증 실패"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "인증이 필요함"; - /* Usernames */ "Verified during registration" = "등록 시 확인됨"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "인증하기"; -/* CrowdNode */ -"Verify your API Dash address" = "API 대시 주소 인증하기"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "새 PIN을 설정하려면 복원 문구를 확인하세요."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "매우 높음"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "이 지갑의 소유 여부를 검증하기 위해 아주 적은 금액의 대시가 크라우드노드에/로부터 전송됩니다."; - /* No comment provided by engineer. */ "View All" = "전체 보기"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "“%@”에 대한 투표가 이미 마감되었습니다. 새로 고쳐 결과를 확인하세요."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "블록체인이 완전히 동기화될 때까지 기다리셔야 거래 내역을 확인할 수 있습니다."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "우리가 당신의 거래 내역을 리뷰할 수 있도록 체인이 완전히 동기화될 때까지 기다려 주세요. 크라우드노드 웹사이트에 방문하셔서 로그인하거나 가입하세요."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "거래를 완료하기 위해서는 지갑의 동기화가 끝날 때까지 기다려 주십시오"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "당신의 크라우드노드 계정을 생성하지 못했습니다."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "당신의 크라우드노드 계정에 입금하지 못했습니다."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "당신의 크라우드노드 계정에서 출금하지 못했습니다."; - /* Explore */ "We have two types of merchants" = "두 가지 유형의 판매자가 있습니다."; /* No comment provided by engineer. */ "We Upgraded" = "다음을 업그레이드 하였습니다"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "이와 같은 거래는 자동으로 감지되어, 동일한 금액이 당신의 크라우드노드 계정으로 송금됩니다. 이후부터 이 기기의 대시 지갑에서 입금 및 출금을 할 수 있게 됩니다."; - /* Website */ "Website" = "웹사이트"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "투표가 진행되는 동안에는 사용자 이름이 없습니다. 지금 경쟁이 없는 사용자 이름을 등록하세요 — 계속 회원님의 것이며, 투표에서 ‘%@’ 을(를) 얻으면 두 사용자 이름 모두로 연락받을 수 있습니다."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "왜 모든 거래 내역을 보게 되나요?"; -/* CrowdNode */ -"Why do you need an online account?" = "왜 온라인 계정이 필요한가요?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "왜 스크린샷을 찍으면 안되나요?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "대시 블록체인을 통해"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "출금"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "제한 없이 출금하려면 크라우드노드 웹사이트의 온라인 계정을 활용하십시오."; - -/* CrowdNode */ -"Withdrawal requested" = "출금이 요청됨"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "전체 잔액을 출금합니다"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "당신의 리워드 수익을 어떻게 / 언제 받을 것인지 변경할 수 있습니다."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "계속해서 지불을 위해 대시페이를 사용할 수 있지만, 크레딧 잔고를 충전하기 전까지는 프로필을 업데이트하거나 더 많은 연락처를 추가할 수 없습니다"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "점원에게 대시로 지불할 수 있습니다."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "입금, 출금 및 리워드 수익에 대한 자세한 정보를 확인할 수 있습니다."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "인터넷에서 공개적으로 이용 가능한 모든 URL을 지정함으로써, 대시 네트워크 상에서 다른 사용자들이 이를 볼 수 있습니다."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "이 사용자 이름에 대해 이미 %ld회 투표하였습니다. 이 사용자 이름에 대해 한 번의 투표만이 남았습니다."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "유효하지 않은 키를 입력하셨습니다"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "계속하기 위한 자금이 부족합니다"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "대시 지갑에 암호 문구를 백업해야 합니다"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "초대장을 생성하기 위해서는 최소 %@ 대시가 필요합니다"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "당신의 대시 지갑에 최소 %@ 가 필요합니다"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "이 사용자 이름을 생성하기 위해서는 %@ 대시가 더 필요합니다."; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "기프트 카드를 구매하기 위해서는 DashSpend에 로그인해야 합니다."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "다음 출금을 요청하시기 전 5분을 대기하여야 합니다"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "%@만 있으면 풀에 가입할 수 있습니다."; - /* DashSpend confirmation */ "You pay" = "금액"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "%@ 님에게 연락처 요청을 보냈습니다"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "대시 지갑에 잔고가 있어야 합니다."; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "크라우드노드 인증을 계속하기 위해서는 최소 %@가 필요합니다."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "이 기기의 대시 지갑에 %@ 대시를 받게 됩니다. 거래를 완료하는 데에는 2-3분 가량 소요될 수 있다는 점에 주의 해주십시오."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "당신은 분할된 지불금을 자동적으로 받게 되며, 이 금액은 디폴트로 다시 투자됩니다. 그러나, 쉬운 설정을 통해 지속적으로 이 수익금을 받아 자동 출금할 수도 있습니다."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "당신의 크레딧 잔고가 적습니다"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "당신의 크라우드노드 계정을 생성하는 중입니다..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "크라우드노드 계정 설정이 완료되어 지금 사용할 수 있습니다!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "당신의 크라우드노드 계정은 이들 거래를 사용해 생성되었습니다."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "당신의 크라우드노드 주소가 확인되었습니다."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "당신의 크라우드노드 주소가 확인되었으나, 인증이 필요합니다."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "당신의 대시페이 사용자 이름을 사용할 수 있습니다"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "크라우드노드 입금이 완료되었습니다."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "당신의 기기에 설정된 시간이 %2$d 초 차이로 %1$@ 입니다. 이 차이로 인하여 코인조인을 사용할 수 없습니다.\n\n기기의 설정을 \"자동으로 시간 설정\"으로 변경하여 코인조인을 사용하세요."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "당신이 현재 크라우드노드 계정을 위해 사용하고 있는 주요 대시 주소"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "비공개 잔액입니다. 금액과 주소가 온체인에서 암호화되어 보유액과 내역이 비밀로 유지됩니다."; diff --git a/DashWallet/mk.lproj/Localizable.strings b/DashWallet/mk.lproj/Localizable.strings index 6495f400a6..51387dfd9b 100644 --- a/DashWallet/mk.lproj/Localizable.strings +++ b/DashWallet/mk.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " или "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ е огласено за %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Активен"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Салдо потоа"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Салдата и преносите не се јавно видливи"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Поврзани врсници"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Кредити"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Патека на изведување"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Отфрламе…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Уреди ја почетната височина"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Средствата се преместени"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Подгответе се да се приклучите на DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Височина %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Колку е приватен DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Задржи ги овие монети приватни. Се применуваат мрежни такси и такси за приватност."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Дозволете друг корисник на Dash Wallet да го скенира овој код за да ве додаде како контакт."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Нема непотврдени трансакции за отфрлање."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Плаќањата со секој контакт се групирани на едно место, со имиња и профили наместо сурови трансакции."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Адреса за исплата"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Предности"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Само за читање"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Примено од %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Ги запишува вашите мастерноди како да гласале, без да застанат на ничија страна."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Се испраќа на"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Сподели"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Започнува откако ќе додадете средства"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Оваа адреса не може да се плати од вашето салдо %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Ова сепак се смета дека вашите мастерноди гласале во овој спор."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Историјата на трансакции не е достапна"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Важечка покана"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Потврдено при регистрацијата"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Потврдете ја вашата фраза за обновување за да поставите нов PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Прикажи ги сите"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Гласањето за „%@“ веќе е затворено. Освежете за да го видите резултатот."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Немате корисничко име додека трае гласањето. Регистрирајте сега неоспорено корисничко име — тоа останува ваше, а ако гласањето ви го додели „%@“, ќе бидете достапни под двете кориснички имиња."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Го повлекува целото салдо"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Го испративте барањето за контакт до %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Вашето приватно салдо. Износите и адресите се шифрирани на синџирот, па вашите средства и историја остануваат доверливи."; diff --git a/DashWallet/ms.lproj/Localizable.strings b/DashWallet/ms.lproj/Localizable.strings index 7b30eae9a6..4328bd65f0 100644 --- a/DashWallet/ms.lproj/Localizable.strings +++ b/DashWallet/ms.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " atau "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ disenaraikan untuk dijual pada %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktif"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Baki selepas itu"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Baki dan pemindahan tidak kelihatan secara awam"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Rakan yang disambungkan"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kredit"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Alamat Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Laluan terbitan"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Membuang…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Edit ketinggian mula"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Dana dipindahkan"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Bersedia untuk menyertai DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Ketinggian %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Sejauh mana DashPay bersifat peribadi?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Kekalkan syiling ini peribadi. Yuran rangkaian dan privasi dikenakan."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Biarkan pengguna Dash Wallet lain mengimbas kod ini untuk menambah anda sebagai kenalan."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Tiada transaksi belum disahkan untuk dibuang."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Pembayaran dengan setiap kenalan dikumpulkan di satu tempat, dengan nama dan profil, bukan transaksi mentah."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Alamat pembayaran"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Kelebihan"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Baca sahaja"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Diterima daripada %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Merekodkan masternode anda sebagai telah mengundi, tanpa memihak."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Menghantar kepada"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Share"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Bermula selepas anda menambah dana"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Alamat ini tidak boleh dibayar daripada baki %@ anda"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Ini tetap dikira sebagai masternode anda telah mengundi dalam pertandingan ini."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Sejarah transaksi tidak tersedia"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Jemputan sah"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Disahkan semasa pendaftaran"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Sahkan frasa pemulihan anda untuk menetapkan PIN baharu."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Lihat Semua"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Pengundian bagi “%@” sudah ditutup. Segar semula untuk melihat keputusan."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Anda tiada nama pengguna selagi pengundian berjalan. Daftarkan nama pengguna yang tidak dipertandingkan sekarang — ia kekal milik anda, dan jika pengundian menganugerahkan “%@” kepada anda, anda boleh dihubungi melalui kedua-dua nama pengguna."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Mengeluarkan keseluruhan baki"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Anda menghantar permintaan kenalan kepada %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Baki peribadi anda. Jumlah dan alamat disulitkan pada rantaian, jadi pegangan dan sejarah anda kekal sulit."; diff --git a/DashWallet/nb.lproj/Localizable.strings b/DashWallet/nb.lproj/Localizable.strings index 2c81dca957..4145cb2a83 100644 --- a/DashWallet/nb.lproj/Localizable.strings +++ b/DashWallet/nb.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " eller "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ er lagt ut for %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiv"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo etterpå"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldoer og overføringer er ikke offentlig synlige"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Tilkoblede noder"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kreditter"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash-adresse"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Avledningsbane"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Forkaster…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Rediger starthøyde"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Midlene er flyttet"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Gjør deg klar til å bli med i DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Høyde %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Hvor privat er DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Hold disse myntene private. Nettverks- og personverngebyrer påløper."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "La en annen Dash Wallet-bruker skanne denne koden for å legge deg til som kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Ingen ubekreftede transaksjoner å forkaste."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Betalingene med hver kontakt er samlet på ett sted, med navn og profiler i stedet for rå transaksjoner."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Utbetalingsadresse"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Fordeler"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Skrivebeskyttet"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Mottatt fra %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Registrerer at masternodene dine har stemt, uten å ta stilling."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Sender til"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Del"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Starter når du legger inn midler"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Denne adressen kan ikke betales fra %@-saldoen din"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Dette teller fortsatt som at masternodene dine har stemt i denne tvisten."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Transaksjonshistorikken er ikke tilgjengelig"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Gyldig invitasjon"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Bekreftet under registreringen"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Bekreft gjenopprettingsfrasen din for å angi en ny PIN-kode."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Vis alle"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Avstemningen om «%@» er allerede stengt. Oppdater for å se resultatet."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Du har ikke noe brukernavn mens avstemningen pågår. Registrer nå et ubestridt brukernavn — det forblir ditt, og hvis avstemningen tildeler deg «%@», kan du nås på begge brukernavnene."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Tar ut hele saldoen"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Du sendte kontaktforespørselen til %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Den private saldoen din. Beløp og adresser er kryptert på kjeden, så beholdningen og historikken din forblir konfidensielle."; diff --git a/DashWallet/nl.lproj/Localizable.strings b/DashWallet/nl.lproj/Localizable.strings index 75a383bc7a..f9e7b1c924 100644 --- a/DashWallet/nl.lproj/Localizable.strings +++ b/DashWallet/nl.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " of "; -/* CrowdNode */ -" Privacy Policy " = "Privacybeleid"; - -/* CrowdNode */ -" Terms of Use " = "Gebruiksvoorwaarden"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ te koop gezet voor %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Een toegangscode is nog om je portemonnee te beschermen. Ga naar de instellingen en zet de toegangscode aan om door te gaan."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Een Masternode benodigd 1000 Dash als onderpanden wordt momenteel met ongeveer %@ per jaar beloond."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accepteer voorwaarden"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accepteer gebruiksvoorwaarden"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Gebruiksvoorwaarden accepteren..."; - -/* CrowdNode */ -"Account Recovery" = "Accountherstel"; - /* Masternode status */ "Active" = "Actief"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Alle overboekingen van en naar CrowdNode vanaf dit apparaat worden uitgevoerd met het onderstaande Dash adres."; - /* ZenLedger */ "Allow" = "Sta toe"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Er is een onbekende fout opgetreden. Probeer het later opnieuw."; -/* CrowdNode */ -"and" = " en "; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Elke gebruikersnaam met een cijfer 2-9, meer dan 20 tekens of met een koppelteken wordt automatisch goedgekeurd"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Als masternode eigenaar kun je stemmen om aangevraagde gebruikersnamen goed te keuren voordat gebruikers deze kunnen aanmaken.\nJe kan gebruikersnamen blokkeren die je ongepast vindt."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Omdat de meeste mensen geen 1000 Dash bezitten, biedt CrowdNode een service waarbij de stortingen van leden worden gebundeld tot masternodes, om zo de voordelen van het bezitten hiervan te kunnen bereiken."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Back-up"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Back-up wachtwoordzin"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup portemonnee"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Maak een back-up van je wachtwoordzin om een CrowdNode account aan te maken"; - /* Back up wallet */ "Backup your recovery phrase" = "Maak een back-up van je herstelzin"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Saldo"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo daarna"; -/* CrowdNode */ -"Balance On CrowdNode" = "Saldo bij CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Saldo:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldi en overboekingen zijn niet openbaar zichtbaar"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bankoverschrijving"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Word onderdeel van een Dash Masternode met CrowdNode"; - /* TimeSkew */ "behind" = "achter"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Sluiten en melden wanneer het klaar is"; - /* No comment provided by engineer. */ "Close App" = "Sluit app af"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Verbonden"; -/* CrowdNode */ -"Connected Dash address" = "Verbonden Dash adres"; - /* SPV sync */ "Connected peers" = "Verbonden peers"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Maak een gebruikersnaam"; -/* CrowdNode */ -"Create Account" = "Maak account aan"; - /* Create DashSpend account */ "Create account" = "Maak account aan"; /* DashSpend account title */ "Create an account or log into an existing one" = " Maak een account aan of log in op een bestaande."; -/* CrowdNode */ -"Create an online CrowdNode account" = "Maak een online CrowdNode account aan"; - /* No comment provided by engineer. */ "Create invitation" = "Uitnodiging maken"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Maak online account aan"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediet"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode voordelen"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode ondersteuning"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode gebruikt dit adres als account-ID. Je verliest de toegang tot je geld in deze portemonnee alsmode je CrowdNode account als je de wachtwoordzin verliest die aan dit adres is gekoppeld."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode opname limiet"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV exporteren"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX cadeaukaarten"; -/* Crowdnode */ -"Current APY = %@" = "Huidige jaarlijks rendement = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Huidig jaarlijks rendement is %@"; - /* Explore Dash: Filters */ "Current location" = "Huidige locatie"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash-adres"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Het Dash adres op dit apparaat dat is toegewezen aan je CrowdNode account "; - /* No comment provided by engineer. */ "Dash balance" = "Dashsaldo"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "Dashportemonnee ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Datum"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Geweigerd"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Stort"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Stort %@ om te beginnen met verdienen"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Stort minimaal %@ Dash in je Dash portemonnee om een opname te voltooien"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Stort ten minste %@ om te beginnen met verdienen"; - -/* CrowdNode */ -"Deposit sent" = "Storting is verzonden"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Afleidingspad"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Weggooien…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Vanwege de servicevoorwaarden van CrowdNode kunnen gebruikers niet meer opnemen dan:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Vanwege wettelijke beperkingen moeten we verifiëren dat je niet in het Verenigd Koninkrijk bent. We controleren je locatie alleen wanneer je Coinbase onderdelen gebruikt."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "In de stemmingronde heeft het Dash Netwerk besloten om de gebruikersnaam '%@' aan iemand anders toe te wijzen. Probeer opnieuw door een andere gebruikersnaam aan te vragen."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "bijvoorbeeld jan@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Elke uitnodiging wordt met dit bedrag gefinancierd, zodat de ontvanger snel zijn gebruikersnaam op het Dash Network kan aanmaken"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Eerder"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Stake makkelijk Dash en verdien passief inkomen met een paar eenvoudige kliks."; - /* SPV diagnostics */ "Edit birth height" = "Starthoogte bewerken"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "bv: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "E-mail"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Eerste storting moet meer zijn dan %@"; - -/* CrowdNode */ -"First minimum deposit" = "Eerste minimale storting"; - /* DashSpend */ "Fixed amounts" = "Vaste bedragen"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "van CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "van Dash portemonnee"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Tegoed verplaatst"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Ontvang beloningen van deposito's in Dash Masternodes vanaf slechts 0,5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Maak je klaar om lid te worden van DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Ontvang direct beloningen"; - /* No comment provided by engineer. */ "Get Started" = "Ga aan de slag"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Verkrijg je gebruikersnaam"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Aan de slag met CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Geschenkbon"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Cadeaukaart · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Ga naar de website van CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Ga naar website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Hoogte %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Dit is het Dash adres op dit apparaat dat is toegewezen aan je CrowdNode account"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Houd hier boven een willekeurige knop ingedrukt om deze te vervangen door de functie die je nodig hebt."; -/* CrowdNode */ -"How CrowdNode staking works" = "Hoe staking bij CrowdNode werkt"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Hoe verkrijg ik test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Hoe privé is DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Hoe je het API Dash adres kunt bevestigen"; - /* No comment provided by engineer. */ "How to use your gift card" = "Hoe een cadeaukaart te gebruiken"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Ik ga akkoord dat ik mijn munten kwijt raak als ik de herstelzin niet meer bezit"; -/* CrowdNode */ -"I agree to CrowdNode" = "Ik ga akkoord met CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Als je ervoor kiest om op een later tijdstip toestemming te geven kan je Coinbase gebruiken zodra je niet meer in het Verenigd Koninkrijk bent."; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Als je ooit de wachtwoordzin kwijtraakt, kan je op andere manieren verifiëren om weer toegang te krijgen tot CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Als je de wachtwoordzin voor deze portemonnee verliest, dit apparaat verliest of de Dash portemonnee app verwijdert, verliest je de toegang tot je geld op CrowdNode en ook het geld in deze portemonnee."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Als je het nog steeds wilt wissen, voer a.u.b. in: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In het geval van grotere opnames betaalt CrowdNode opnames binnen twee weken. Dit komt door de beveiligingsprotocollen, maar het zal meestal veel sneller worden afgehandeld."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Als je de wachtwoordzin verliest, verlies je het recht op de door jou aangevraagde gebruikersnaam."; -/* CrowdNode Portal */ -"In process…" = "Bezig...."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informatie over je online account"; - /* Buy Sell Portal */ "Initializing" = "Initialiseren"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Intern verplaatst naar"; -/* CrowdNode */ -"Introducing Staking" = "Introductie van staking"; - /* Invalid transaction */ "Invalid" = "Ongeldig"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "ongeldig Dash adres"; -/* CrowdNode Online */ -"Invalid Email" = "Ongeldig emailadres"; - /* No comment provided by engineer. */ "Invalid email or password." = "Ongeldig e-mailadres of wachtwoord."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash portemonnee: %@ Gemeld probleem"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Het kan even duren voordat je saldo is bijgewerkt."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Het kan even duren voordat de fondsen binnen komen."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Word nu lid"; -/* CrowdNode */ -"Joining the pool" = "Deelnemen aan de pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Houd deze munten privé. Netwerk- en privacykosten zijn van toepassing."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "De pool verlaten"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Laat een andere Dash Wallet-gebruiker deze code scannen om je als contact toe te voegen."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Koppel Coinbase account"; -/* CrowdNode */ -"Link Existing Account" = "Link bestaand account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link bestaand account CrowdNode"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Koppel Uphold account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in op CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in op je account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Het ziet er naar uit dat je je Dashportemonee leeg aan het maken bent"; - /* adjective, security level */ "Low" = "Laag"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Leden zijn vrij om de pool te verlaten en kunnen meestal meteen vertrekken."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Geen onbevestigde transacties om weg te gooien."; -/* CrowdNode */ -"New CrowdNode Account" = "Nieuw account CrowdNode"; - /* Voting */ "New to old" = "Nieuw naar oud"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online account"; - /* Online Merchant */ "Online Merchant" = "Online winkelier"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Betalingen met elk contact staan op één plek bij elkaar, met namen en profielen in plaats van ruwe transacties."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Uitbetalingsadres"; -/* CrowdNode */ -"Payout Options" = "Uitbetaalopties"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 uur"; - -/* CrowdNode */ -"per hour" = "per uur"; - -/* CrowdNode */ -"per transaction" = "per transactie"; - /* Usernames */ "Personalise profile" = "Personaliseer profiel"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Ga a.u.b. naar je Uphold-rekening om je identiteit te verifiëren."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Houd er rekening mee dat de e-mail niet wordt opgeslagen door de Dash Portemonnee en alleen maar wordt verzonden naar Crowdnode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Let op dat de gebruikersnaam NIET kan worden gewijzigd zodra deze is geregistreerd."; /* Usernames */ "Please note that you will not be able to change it in future" = "Let op dat je dit in de toekomst niet meer kunt wijzigen"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Let op, je zal geen geld kunnen opnemen van CrowdNode naar deze portemonnee totdat je je saldo verhoogt naar %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Houd a.u.b. je telefoon bij een NFC-apparaat"; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Even wachten a.u.b."; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Wacht voordat je de volgende opname uitvoert"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Wacht tot de portemonnee volledig is gesynchroniseerd alvorens je transactiegeschiedenis je exporteren."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prijzen zijn niet opgehaald. Fiat waarden kunnen onjuist zijn."; -/* CrowdNode */ -"Primary Dash address" = "Primair Dashadres"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Voordelen"; -/* CrowdNode Portal */ -"Protect your savings" = "Bescherm uw spaargeld"; - /* Usernames */ "Prove your identity" = "Bewijs je identiteit"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Lees het uitbetalingsbeleid"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Alleen-lezen"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Ontvang het direct in de Dash portemonnee."; -/* CrowdNode */ -"Receive your share of rewards daily." = "Ontvang dagelijks jouw deel van de beloning."; - /* Received transaction */ "Received" = "Ontvangen"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Ontvangen van %@"; -/* CrowdNode */ -"Receiving rewards" = "Beloningen ontvangen"; - "Records your masternodes as having voted, without taking a side." = "Legt vast dat je masternodes hebben gestemd, zonder partij te kiezen."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Stuur %@ vanaf het primaire Dash adres dat je momenteel gebruikt voor je CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Verstuur uitnodiging"; -/* Coinbase - CrowdNode */ -"Send Report" = "Verstuur rapport"; - /* No comment provided by engineer. */ "Send to" = "Verstuur naar"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Versturen naar"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Wordt verzonden naar CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Verzenden naar Dash portemonnee op dit apparaat"; - /* Buy Dash */ "Sending to:" = "Verzenden naar:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Portemonnee instellen"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Deel"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Toon sleutels masternode"; -/* CrowdNode */ -"Show QR" = "Toon QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Toon herstelzin"; /* Alert title */ "Sign in required" = "Inloggen vereist"; -/* CrowdNode */ -"Sign up error" = "Fout bij aanmelden"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Aanmelden bij CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Meld je aan om het instellen van je account te voltooien"; - /* ZenLedger */ "Simplify your crypto taxes" = "Vereenvoudig je crypto belastingen"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Start nadat je tegoed toevoegt"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Gesynchroniseerd met huidige Dash portemonnee"; - /* No comment provided by engineer. */ "Syncing" = "synchroniseren"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Het Dash netwerk moet stemmen om sommige gebruikersnamen goed te keuren voordat ze worden aangemaakt"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Het Dash netwerk wordt aangedreven door een aantal Masternodes, welke een essentieel onderdeel zijn voor het faciliteren van betalingen."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "De Dash is succesvol gestort op je Coinbase account. Maar er was een probleem bij het overzetten hiervan naar de Dash portemonnee op dit apparaat."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Dit adres kan niet worden betaald vanuit je %@-saldo"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Deze PIN is vereist om uw app elke keer te ontgrendelen wanneer u deze gebruikt."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Deze QR bevat al het betalingsverzoek voor %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Dit vertegenwoordigt het huidig jaarlijkse procentuele rendement van een volledige Masternode minus de 15% vergoeding voor CrowdNode. Het is geen gegarandeerd rendement en kan stijgen of dalen op basis van de grootte van de CrowdNode pools en de prijs van Dash."; - "This still counts as your masternodes having voted in this contest." = "Dit telt nog steeds als een stem van je masternodes in dit geschil."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "naar Dash portemonnee op dit apparaat"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Om te beginnen met staking, maak een account aan op CrowdNode of maak verbinding met een bestaande."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "naar het Dash adres dat is toegewezen aan je CrowdNode account in de Dash portemonnee op dit apparaat"; - /* No comment provided by engineer. */ "Today" = "Vandaag"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transactiegeschiedenis"; - /* Balance info sheet */ "Transaction history isn't available" = "Transactiegeschiedenis is niet beschikbaar"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Overdrachtsfout"; - /* Coinbase */ "Transfer Failed" = "Overdracht mislukt"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Geldige uitnodiging"; -/* CrowdNode Portal */ -"Validating address…" = "Adres valideren…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validatie van gebruikersnaam is mislukt"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verificatie vereist"; - /* Usernames */ "Verified during registration" = "Geverifieerd tijdens registratie"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Verifiëren"; -/* CrowdNode */ -"Verify your API Dash address" = "Verifieer je API Dash adres"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifieer je herstelzin om een nieuwe pincode in te stellen."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Heel hoog"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Er worden zeer kleine hoeveelheden Dash van en naar CrowdNode verzonden om te verifiëren dat je de eigenaar bent van dit adres in de portemonnee."; - /* No comment provided by engineer. */ "View All" = "Alles bekijken"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "De stemming over “%@” is al gesloten. Vernieuw om het resultaat te zien."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wacht tot de blockchain volledig is gesynchroniseerd, zodat we je transactiegeschiedenis kunnen bekijken."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wacht tot de blockchain volledig is gesynchroniseerd, zodat we de transactiegeschiedenis kunnen bekijken. Bezoek de CrowdNode website om in te loggen of aan te melden."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wacht tot de portemonnee is gesynchroniseerd om de transactie te voltooien"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We kunnen je CrowdNode account niet aanmaken."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We konden geen storting doen op je CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We konden niet opnemen uit je CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We hebben twee soorten winkels"; /* No comment provided by engineer. */ "We Upgraded" = "We hebben een upgrade uitgevoerd"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We zullen deze transactie automatisch detecteren en hetzelfde bedrag overboeken naar je CrowdNode account. Daarna kan je op dit apparaat geld storten en opnemen in de Dash portemonnee."; - /* Website */ "Website" = "Website"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Je hebt geen gebruikersnaam zolang de stemming loopt. Registreer nu een onbetwiste gebruikersnaam — die blijft van jou, en als de stemming je “%@” toekent, ben je op beide gebruikersnamen bereikbaar."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Waarom zie ik al deze transacties?"; -/* CrowdNode */ -"Why do you need an online account?" = "Waarom heb je een online account nodig?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Waarom moet ik geen screenshot maken?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "met Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Neem op"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Neem onbeperkt geld op met een online account via de CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Opname is aangevraagd"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Neemt het volledige saldo op"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Je kunt wijzigen hoe en wanneer inkomsten aan worden uitbetaald."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Je kan DashPay blijven gebruiken voor betalingen, maar je kunt je profiel niet bijwerken of meer contacten toevoegen totdat je je krediet saldo opwaardeert"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Je kunt met Dash betalen bij de kassa."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Je kunt gedetailleerde informatie zien over uw stortingen, opnames en inkomsten."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Je kan elke URL opgeven die openbaar online beschikbaar, zodat andere gebruikers deze op het Dash netwerk kunnen zien."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Je hebt al %ld keer gestemd op deze gebruikersnaam. Je kan nog maar één stem uitbrengen op deze gebruikersnaam."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Je hebt een verkeerde sleutel ingevoerd"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Je hebt onvoldoende saldo om door te gaan"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "U moet een back-up maken van uw wachtwoordzin in de Dash portemonnee"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Je hebt minimaal %@ Dash nodig om een uitnodiging te maken"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Je hebt minimaal %@ nodig in je Dash portemonnee"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Je hebt meer %@ Dash nodig om deze gebruikersnaam aan te maken"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Je moet inloggen op DashSpend om cadeaukaarten te kopen."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Je moet 5 minuten wachten voordat je een nieuwe opname kunt uitvoeren"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Je hebt maar %@ nodig om deel te nemen aan een pool."; - /* DashSpend confirmation */ "You pay" = "Je betaalt"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Je hebt het contactverzoek naar %@ gestuurd"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Je zou een positief saldo moeten hebben in de Dash portemonnee"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "je hebt minimaal %@ nodig om door te gaan met de CrowdNode verificatie."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Je ontvangt %@ Dash in je Dash portemonnee op dit apparaat. Houd er rekening mee dat het tot 2-3 minuten kan duren om een overdracht te voltooien."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "U ontvangt automatisch fractionele betalingen en deze worden standaard opnieuw geïnvesteerd. Het is ook mogelijk om automatische opnames in te stellen om terugkerende uitbetalingen te ontvangen."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "je krediet saldo is laag"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Je CrowdNode account wordt aanmaakt..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Je CrowdNode account is ingesteld en klaar voor gebruik!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Je CrowdNode account is gemaakt met behulp van deze transacties."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Je CrowdNode adres is bevestigd."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Je CrowdNode adres is gevalideerd, maar verificatie is vereist."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Uw DashPay gebruikersnaam is klaar voor gebruik"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Je storting op CrowdNode is ontvangen."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "De tijd op dit apparaat loopt %2$d seconden %1$@. Je kan CoinJoin niet gebruiken vanwege dit verschil.\n\nOm CoinJoin te kunnen gebruiken, moeten de tijdinstellingen op dit apparaat worden gewijzigd naar 'Tijd automatisch instellen'."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Het primaire Dash adres dat je momenteel gebruikt voor je CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Je privésaldo. Bedragen en adressen zijn versleuteld op de keten, zodat je bezit en geschiedenis vertrouwelijk blijven."; diff --git a/DashWallet/pl.lproj/Localizable.strings b/DashWallet/pl.lproj/Localizable.strings index af09cd0d74..70bc045a3b 100644 --- a/DashWallet/pl.lproj/Localizable.strings +++ b/DashWallet/pl.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " lub "; -/* CrowdNode */ -" Privacy Policy " = "Polityka Prywatności"; - -/* CrowdNode */ -" Terms of Use " = "Warunki Użytkowania"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ wystawiona za %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Do zabezpieczenia portfela potrzebny jest kod dostępu do urządzenia. Przejdź do ustawień i włącz hasło, aby kontynuować."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Masternode potrzebuje 1000 Dash jako zabezpieczenie. Każdy Masternode jest wynagradzany około %@ na rok."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Zaakceptuj warunki i \nzasady"; -/* CrowdNode */ -"Accept Terms Of Use" = "Akceputję Warunki Użytkowania"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Akceptowanie warunków korzystania...."; - -/* CrowdNode */ -"Account Recovery" = "Odzyskiwanie Konta"; - /* Masternode status */ "Active" = "Aktywny"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Wszystkie transfery z i do CrowdNode z tego urządzenia zostaną wykonane przez podany poniżej address Dash. "; - /* ZenLedger */ "Allow" = "Pozwól"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Wystąpił nieznany błąd. Spróbuj ponownie później."; -/* CrowdNode */ -"and" = "i"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Każda nazwa użytkownika, która zawiera cyfrę od 2-9, ma więcej niż 20 znaków lub zawiera myślnik, zostanie automatycznie zatwierdzona."; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Jako właściciel masternoda możesz głosować za zatwierdzeniem zgłoszonych nazw użytkowników, zanim użytkownicy będą mogli je utworzyć.\nMożesz zablokować tworzenie nazw użytkowników, które uważasz za nieodpowiednie."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Ponieważ większość ludzi nie ma pod ręką dokładnie 1000 Dash, CrowdNode stworzył usługę, w której wszyscy mogą czerpać korzyści z posiadania Masternode poprzez kumulacje mniejszych kwot od wielu użytkowników. "; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Kopia zapasowa"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Stwórz kopię zapasową hasła"; - /* A noun. Used as a title. */ "Backup Wallet" = "Kopia zapasowa portfela"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Stwórz kopię zapsową hasła aby utworzyć konto na CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Zrób kopię zapasową słów do odzysku portfela"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Saldo"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo po"; -/* CrowdNode */ -"Balance On CrowdNode" = "Saldo na CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Saldo:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Salda i transfery nie są publicznie widoczne"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Transfer Bankowy"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Zostań współwłaścicielem Masternoda dzięki CrwodNode"; - /* TimeSkew */ "behind" = "za"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Zamknij i powiadom, kiedy konto będzie gotowe"; - /* No comment provided by engineer. */ "Close App" = "Zamknij Aplikacje"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Połączony"; -/* CrowdNode */ -"Connected Dash address" = "Połączony adres Dash"; - /* SPV sync */ "Connected peers" = "Połączone peery"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Stwórz nazwę użytkownika"; -/* CrowdNode */ -"Create Account" = "Stwórz Konto"; - /* Create DashSpend account */ "Create account" = "Stwórz konto"; /* DashSpend account title */ "Create an account or log into an existing one" = "Utwórz konto lub zaloguj się na istniejące."; -/* CrowdNode */ -"Create an online CrowdNode account" = "Stwórz konto CrowdNode online"; - /* No comment provided by engineer. */ "Create invitation" = "Stwórz zaproszenie"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Stwórz Konto Online"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kredyty"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Korzyści CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Wsparcie CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode będzie używał ten adres jako identyfikator twojego konta. Jeśli stracisz kontrolę nad tym adresem, stracisz również dostęp do swoich środków na koncie CrowdNode."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Limit wypłat na CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "Konto CrowdNode"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ Portfel Dash"; - /* No comment provided by engineer. */ "CSV Export" = "Eksportuj CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Karty podarunkowe CTX"; -/* Crowdnode */ -"Current APY = %@" = "Obecne oprocentowanie w skali roku = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Obecne oprocentowanie w skali roku jest %@"; - /* Explore Dash: Filters */ "Current location" = "Obecna lokalizacja"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Adres dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Adres Dash wyznaczony dla twojego konta CrowdNode w porfelu Dash na tym urządzeniu. "; - /* No comment provided by engineer. */ "Dash balance" = "Saldo Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "Portfel Dash ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Data"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Zabroniony"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Wpłata"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Wpłać %@ aby zacząć zarabiać"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Przelej co najmniej %@ Dash do swojego portfela Dash, aby dokończyć wypłatę"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Wpłać co najmniej %@ aby zacząć zarabiać"; - -/* CrowdNode */ -"Deposit sent" = "Wpłata została wysłana"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Ścieżka derywacji"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Odrzucanie…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Zgodnie z warunkami korzystania z usługi CrowdNode użytkownicy mogą wypłacić nie więcej niż:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Ze względu na ograniczenia prawne musimy sprawdzić, czy nie przebywasz w Wielkiej Brytanii. Sprawdzamy Twoją lokalizację tylko wtedy, gdy łączysz się z Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Z powodu procesu głosowania sieć Dash zdecydowała się przydzielić nazwę użytkownika '%@' innej osobie. Proszę spróbować ponownie, żądając innej nazwy użytkownika."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Każde zaproszenie będzie opłacone tą sumą, aby odbiorca mógł szybko stworzyć swój własny profil na Sieci Dash"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Wcześniej"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Z łatwością ulokuj swoje monety Dash i zarabiaj pasywny dochód za pomocą kilku prostych kliknięć. "; - /* SPV diagnostics */ "Edit birth height" = "Edytuj wysokość początkową"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "np. jankowalski"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Pierwszy przelew powinien być większy niż %@"; - -/* CrowdNode */ -"First minimum deposit" = "Pierwszy minimalny depozyt"; - /* DashSpend */ "Fixed amounts" = "Stałe ilości"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "Od CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "Od Portfela Dash"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Środki przeniesione"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Pozwól aby twoje monety Dash pracowały na siebie jako zabezpieczenie Masternoda. Możesz zacząć z 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Przygotuj się na dołączenie do DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Otrzymuj Zarobki Natychmiastowo"; - /* No comment provided by engineer. */ "Get Started" = "Zacznij"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Dostań swoją nazwę użytkownika"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Pierwsze kroki z CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Karta Podarunkowa"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Karta podarunkowa · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Przejdź do strony CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Przejdź do strony internetowej"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Wysokość %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Tutaj jest adres Dash wyznaczony dla tojego konta CrowdNode w Porfelu Dash na tym urządzeniu. "; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Przytrzymaj dowolny powyższy przycisk, aby zastąpić go potrzebną funkcją"; -/* CrowdNode */ -"How CrowdNode staking works" = "Jak działa lokata procentowa na CrowdNode"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Jak mogę otrzymać Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Jak prywatne jest DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Jak potwierdzić adres API Dash"; - /* No comment provided by engineer. */ "How to use your gift card" = "Jak używać twojej karty podarunkowej"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Akceptuję to, że stracę wszystkie moje monety jeśli nie będę miał frazy do odzyskiwania porfela"; -/* CrowdNode */ -"I agree to CrowdNode" = "Zgadzam się z warunkami CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Jeśli zdecydujesz się przyznać uprawnienia w późniejszym czasie i jeśli nie będziesz przybwać w Wielkiej Brytanii w tym czasie, to Coinbase będzie dostępny do użytku."; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "W przypadku utraty hasła, możesz zweryfikować się za pomocą innych metod aby odzyskać dostęp do funduszy na CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Jeśli stracisz hasło do tego portfela oraz stracisz dostęp do tego urządzenia lub odinstalujesz Portfel Dash, stracisz również dostęp do konta CrowdNode oraz przechowywanych tam funduszy."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Jeś dalej nalegasz na wymazanie, proszę o wpisanie: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "W przypadku zlecenia większych wypłat, CrowdNode dokona wypłaty w ciągu dwóch tygodni. Wynika to z ich protokołów bezpieczeństwa, ale prawdpodobnie środki będą wypłacone znacznie szybciej."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "W przypadku utraty hasła utracisz również całkowity dostęp do żądanej nazwy użytkownika."; -/* CrowdNode Portal */ -"In process…" = "W trakcie..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informacje na temat Twojego konta online"; - /* Buy Sell Portal */ "Initializing" = "Rozpoczynanie"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Wewnętrznie przeniesiony do"; -/* CrowdNode */ -"Introducing Staking" = "Zapoznaj się z lokatami"; - /* Invalid transaction */ "Invalid" = "Niewłaściwy"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Nieprawidłowy adres Dash"; -/* CrowdNode Online */ -"Invalid Email" = "Email jest niepoprawny"; - /* No comment provided by engineer. */ "Invalid email or password." = "Niewłaściwy email lub hasło"; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Zgłoszono problem"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Zaktualizowanie salda może potrwać chwilę."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Dostarczenie funduszy może zająć kilka chwil."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Dołącz Teraz"; -/* CrowdNode */ -"Joining the pool" = "Dołączanie do Puli CrowdNode"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Zachowaj te monety prywatne. Obowiązują opłaty sieciowe i za prywatność."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Opuszczanie CrowdNode"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Pozwól innemu użytkownikowi Dash Wallet zeskanować ten kod, aby dodać Cię do kontaktów."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Połącz Konto Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Połącz się z już istniejącym kontem"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Połącz się z istniejącym kontem CrowdNode"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Podlinkuj konto Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Zaloguj się do CrowdNode"; - /* DashSpend */ "Log in to your account" = "Zaloguj się do twojego konta"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Wygląda na to że opróżniasz swój portfel Dash"; - /* adjective, security level */ "Low" = "Niski"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Średni"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Członkowie mogą swobodnie wyccofać się z CrowdNode i w znaczniej większośći przypadków mogą to zrobić natychmiastowo."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Brak niepotwierdzonych transakcji do odrzucenia."; -/* CrowdNode */ -"New CrowdNode Account" = "Nowe Konto CrowdNode"; - /* Voting */ "New to old" = "Od nowego do starego"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Konto Online"; - /* Online Merchant */ "Online Merchant" = "Handlowiec online"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Płatności z każdym kontaktem są zebrane w jednym miejscu, z nazwami i profilami zamiast surowych transakcji."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Adres wypłaty"; -/* CrowdNode */ -"Payout Options" = "Opcje Wypłaty"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "na 24 godzin"; - -/* CrowdNode */ -"per hour" = "na godzinę"; - -/* CrowdNode */ -"per transaction" = "w jednej transakcji"; - /* Usernames */ "Personalise profile" = "Spersonalizuj swój profil"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Przejdź na stronę internetową Uphold aby zweryfikować swoją tożsamość"; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Email nie jest przchowywany w portfelu Dash i zostaje on wysłany jedynie do CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Proszę pamiętać, że nazwa użytkownika NIE może być zmieniona po jej zarejestrowaniu."; /* Usernames */ "Please note that you will not be able to change it in future" = "Proszę zauważyć, że nie będziesz mógł tego później zmienić."; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Pamiętaj, nie będziesz mógł wypłacić środków z CrowdNode do tego portfela, dopóki nie zwiększysz salda do %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Przyłóż telefon do urządzenia NFC "; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Jedna chwila "; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Proszę poczekać przed rozpoczęciem kolejnej wypłaty"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Poczekaj, aż portfel będzie w pełni zsynchronizowany zanim wyeksportujesz historię transakcji."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Nie pobrano cen. Kursy papierowego pieniądza mogą być nieprawidłowe."; -/* CrowdNode */ -"Primary Dash address" = "Główny adres Dash"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Zalety"; -/* CrowdNode Portal */ -"Protect your savings" = "Chroń Swoje Oszczędnosci"; - /* Usernames */ "Prove your identity" = "Udowodnij swoją tożsamość"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Przeczytaj zasady wypłat"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Tylko do odczytu"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Otrzymaj bezpośrednio do portfela Dash"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Otrzymuj swój udział w wynagrodzeniu codziennie."; - /* Received transaction */ "Received" = "Otrzymano"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Otrzymano od %@"; -/* CrowdNode */ -"Receiving rewards" = "Otrzymywanie wynagrodzenia"; - "Records your masternodes as having voted, without taking a side." = "Zapisuje Twoje masternody jako głosujące, bez opowiadania się za żadną stroną."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Wyślij %@ Dash z głównego adresu Dash, który jest obecnie połączony z twoim kontem CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Wyślij zaproszenie"; -/* Coinbase - CrowdNode */ -"Send Report" = "Wyślij Raport"; - /* No comment provided by engineer. */ "Send to" = "Wyślij do"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Wysyłanie do"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Wpłacanie na konto CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Wysyłanie do Portfela Dash na tym urządzeniu"; - /* Buy Dash */ "Sending to:" = "Wysyłanie do"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Ustaw Portfel"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Udostępnij"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Pokaż Klucze Masternoda"; -/* CrowdNode */ -"Show QR" = "Pokaż QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Pokaż Frazy Odzyskiwania Portfela"; /* Alert title */ "Sign in required" = "Wymagane jest zalogowanie"; -/* CrowdNode */ -"Sign up error" = "Błąd w rejestracji"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Zapisz Się Do CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Zarejestruj się, aby dokończyć zakładanie konta"; - /* ZenLedger */ "Simplify your crypto taxes" = "Uprość swoje podatki od kryptowalut"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Lokata"; - /* Usernames */ "Starts after you add funds" = "Zacznie się po dodaniu środków"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Zsynchronizowane z obecnym portfelem Dash"; - /* No comment provided by engineer. */ "Syncing" = "Synchronizowanie"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Sieć Dash musi głosować nad zatwierdzeniem Twojej nazwy użytkownika zanim zostanie ona stworzona."; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Sieć Dash jest kierowana przez Masternody które są niezbędną częscią infrastruktury przeznaczonej do dokonywania transakcji. "; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash został pomyślnie przelany na twoje konto Coinbase, ale wystąpił błąd podczas transferu monet do twojego portfela Dash."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Tego adresu nie można opłacić z Twojego salda %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Ten kod PIN będzie wymagany do odblokowania Twojej aplikacji za każdym razem, gdy z niej korzystasz."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Ten QR już zawiera żądanie płatności %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Odpowiada to aktualnemu rocznemu oprocentowania pełnego Masternode pomniejszonemu o 15% jako opłata dla CrowdNode. Nie jest to gwarantowana stopa zwrotu i może wzrosnąć lub spaść w zależności od wielkości pul na CrowdNode i ceny Dash."; - "This still counts as your masternodes having voted in this contest." = "To nadal liczy się jako oddanie głosu przez Twoje masternody w tym sporze."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "Do portfela Dash na tym urządzeniu"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Aby otworzyć lokatę, stwórz konto na CrowdNode lub zaloguj się do już istniejącego konta."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "na adres z portfela na tym urządzania, który jest podłączony do twojego konta CrowdNode."; - /* No comment provided by engineer. */ "Today" = "Dzisiaj"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Historia Transakcji"; - /* Balance info sheet */ "Transaction history isn't available" = "Historia transakcji jest niedostępna"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Błąd Przelewu"; - /* Coinbase */ "Transfer Failed" = "Transfer nie zoastała wysłana"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Prawidłowe zaproszenie"; -/* CrowdNode Portal */ -"Validating address…" = "Walidacja adresu..."; - /* No comment provided by engineer. */ "Validating username failed" = "Walidacja nazwy użytkownika nie powiodła się"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Wymagana jest Weryfikacja"; - /* Usernames */ "Verified during registration" = "Zweryfikowano podczas rejestracji"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Zweryfikuj"; -/* CrowdNode */ -"Verify your API Dash address" = "Zweryfikuj swój adres API Dash"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Potwierdź frazę odzyskiwania, aby ustawić nowy PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Bardzo Wysoki"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Mała kwota Dash zostanie wysłana z i do CrowdNode aby zweryfikować że jesteś właścicielem tego adresu. "; - /* No comment provided by engineer. */ "View All" = "Zobacz wszystko"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Głosowanie nad „%@” zostało już zamknięte. Odśwież, aby zobaczyć wynik."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Poczekaj, aż łańcuch zostanie w pełni zsynchronizowany, abyśmy mogli sprawdzić Twoją historię transakcji."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Poczekaj aż łańcuch będzie w pełni zsynchronizowany abyśmy mogli przejrzeć Twoją historię transakcji. Odwiedź stronę CrowdNode aby się zalogować lub zarejestrować."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Poczekaj aż portfel będzie zsynchronizowany z siecią, aby dokończyć transakcję."; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Nie mogliśmy stworzyć Twojego konta CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Nie mogliśmy dokonać przelewu na Twoje konto CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Nie mogliśmy wypłacić środków z Twojego konta CrowdNode."; - /* Explore */ "We have two types of merchants" = "Mamy dwa rodzaje sprzedawców"; /* No comment provided by engineer. */ "We Upgraded" = "My zaktualizowaliśmy"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Automatycznie wykryjemy tę transakcję i wyślemy tę samą kwotę na Twoje konto CrowdNode. Następnie będziesz mógł wykonywać wpłaty i wypłaty z portfela Dash na tym urządzeniu."; - /* Website */ "Website" = "Strona internetowa"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Dopóki trwa głosowanie, nie masz nazwy użytkownika. Zarejestruj teraz niesporną nazwę — pozostanie Twoja, a jeśli głosowanie przyzna Ci „%@”, będziesz osiągalny pod obiema nazwami użytkownika."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Dlaczego widzę te wszystkie transakcje?"; -/* CrowdNode */ -"Why do you need an online account?" = "Dlaczego potrzebujesz konto online?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Dlaczego mam nie robić zrzutu ekranu?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "z łańcuchem bloków Dash"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Wypłata"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Wypłacaj bez ograniczeń za pomocą konta online na stronie CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Żądanie wypłaty"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Wypłaca całe saldo"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Możesz zmienić sposób, w jaki lub kiedy twoje zarobki są wypłacane."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Możesz nadal używać DashPay do płatności, ale nie możesz aktualizować swojego profilu ani dodawać nowych kontaktów, dopóki nie uzupełnisz salda kredytowego"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Możesz zapłacić używajc Dash w kasie."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Możesz zobaczyć szczegółowe informacje na temat swoich depozytów, wypłat oraz zarobków."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Możesz wybrać jakikolwiek URL jeśli jest publicznie dostępny na internecie i inni użytkownicy mogą go widzieć na sieci Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Oddałeś już %ld głosów na tę nazwę użytkownika. Możesz oddać jeszcze tylko jeden głos na tę nazwę."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Wpisałeś nieprawidłowy klucz"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Nie masz wystarczających środków aby kontynować"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Musisz zapisać hasło w Portfelu Dash"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Potrzebujesz co najmniej %@ Dashy aby stworzyć zaproszenie"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Potrzebujesz co najmniej %@ w swoim portfelu Dash"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Aby utworzyć nazwę użytkownika, musisz mieć więcej %@ Dash."; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Aby kupić karty podarunkowe, musisz się zalogować do DashSpend."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Musisz odczekać 5 minut przed rozpoczęciem kolejnej wypłaty"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Potrzebujesz tylko %@ aby dołączyć do puli stakowania."; - /* DashSpend confirmation */ "You pay" = "Płacisz"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Wysłałeś(-aś) zaproszenie do kontaktów do %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Powinieneś mieć dodatnie saldo na portfelu Dash"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Musisz mieć co najmniej %@ aby kontynuować weryfikację z CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Otrzymasz %@ do portfela Dash na tym urządzeniu. Transfer może zająć 2-3 minuty. "; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Będziesz otrzymywać częściowe płatności automatycznie i domyślnie będą one reinwestowane, jednak jęsli chcesz możesz też ustawić automatyczne wypłaty."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Twoje saldo kredytowe jest niskie"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Otwieramy twoje konto CrowNode..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Twoje konto CrowdNode jest skonfigurowane i gotowe do użycia!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Twoje konto CrowdNode zostało utworzone przy użyciu tych transakcji."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Twój adres CrowdNode został potwierdzony."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Twój adres CrowdNode został potwierdzony, ale wymagana jest dalsza weryfikacja."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Twoja nazwa użytkownika na DashPay jest gotowa"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Otrzymaliśmy twój depozyt."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Czas na twoim urządzeniu jest %1$@ na %2$d sekund. Nie możesz użyć Coinjoin z powodu tej różnicy.\n\nUstawienia czasu na tym urządzeniu muszą zostać zmienione na „Automatycznie ustawiaj czas”, aby użyć Coinjoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Twój główny adres Dash które jest obecnie połączone z kontem CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Twoje prywatne saldo. Kwoty i adresy są zaszyfrowane w łańcuchu, więc Twoje środki i historia pozostają poufne."; diff --git a/DashWallet/pt.lproj/Localizable.strings b/DashWallet/pt.lproj/Localizable.strings index 1ef0dd84c1..fa0b8a7ded 100644 --- a/DashWallet/pt.lproj/Localizable.strings +++ b/DashWallet/pt.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ou "; -/* CrowdNode */ -" Privacy Policy " = "Política de Privacidade"; - -/* CrowdNode */ -" Terms of Use " = "Termos de uso"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ anunciado por %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Uma senha de dispositivo é necessária para proteger a sua carteira. Vá para ajustes e ative a senha para continuar."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Um Masternode precisa de 1000 Dash como garantia e cada Masternode é atualmente recompensado aproximadamente %@ por ano."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Aceitar termos e \ncondições"; -/* CrowdNode */ -"Accept Terms Of Use" = "Aceitar termos de uso"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Aceitando os termos de uso…"; - -/* CrowdNode */ -"Account Recovery" = "Recuperação de Conta"; - /* Masternode status */ "Active" = "Ativo"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Todas as transferências de/para CrowdNode deste dispositivo serão realizadas com o endereço Dash abaixo."; - /* ZenLedger */ "Allow" = "Permitir"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Ocorreu um erro desconhecido. Por favor, tente novamente mais tarde."; -/* CrowdNode */ -"and" = "e"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Qualquer nome de usuário que contenha um número de 2 a 9, tenha mais de 20 caracteres ou que possua um hífen será automaticamente aprovado"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Como proprietário de um masternode, você pode votar para aprovar nomes de usuário solicitados antes que os usuários possam criá-los.\nVocê pode bloquear a criação de nomes de usuário que considerar inadequados."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Como a maioria das pessoas não possui exatamente 1000 Dash em mãos, o CrowdNode criou um serviço no qual, reunindo os depósitos dos membros, eles podem obter os benefícios de possuir um Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup da frase de recuperação"; - /* A noun. Used as a title. */ "Backup Wallet" = "Fazer Backup"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Faça backup da sua frase de recuperação para criar uma conta CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Faça backup da sua frase de recuperação."; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Saldo"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo depois"; -/* CrowdNode */ -"Balance On CrowdNode" = "Saldo no CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Saldo:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldos e transferências não são visíveis publicamente"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Transferência bancária"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Torne-se parte de um Masternode Dash com CrowdNode"; - /* TimeSkew */ "behind" = "atrás"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Fechar e notificar quando finalizar"; - /* No comment provided by engineer. */ "Close App" = "Fechar App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Conectado"; -/* CrowdNode */ -"Connected Dash address" = "Endereço Dash conectado"; - /* SPV sync */ "Connected peers" = "Pares conectados"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Criar um nome de usuário"; -/* CrowdNode */ -"Create Account" = "Criar Conta"; - /* Create DashSpend account */ "Create account" = "Criar conta"; /* DashSpend account title */ "Create an account or log into an existing one" = "Crie uma conta ou faça login em uma existente"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Crie uma conta online do CrowdNode"; - /* No comment provided by engineer. */ "Create invitation" = "Criar Convite"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Criar conta online"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Créditos"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Benefícios CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Suporte CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode usa este endereço como seu ID da conta. Você perderá o acesso aos seus fundos nesta carteira e à sua conta CrowdNode se perder a frase de recuperação associada a este endereço."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Limites de retirada do CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "Conta · CrowdNode"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ Carteira Dash"; - /* No comment provided by engineer. */ "CSV Export" = "Exportar CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Cartões presente CTX"; -/* Crowdnode */ -"Current APY = %@" = "APY atual = %@"; - -/* CrowdNode */ -"Current APY is %@" = "APY atual é %@"; - /* Explore Dash: Filters */ "Current location" = "Localização atual"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Endereço Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Endereço Dash designado para sua conta CrowdNode na Carteira Dash neste dispositivo"; - /* No comment provided by engineer. */ "Dash balance" = "Saldo Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "Carteira Dash ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Data"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Negado"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Depósito"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposite %@ para começar a ganhar"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposite pelo menos %@ Dash na sua carteira para concluir um saque"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposite pelo menos %@ para começar a ganhar"; - -/* CrowdNode */ -"Deposit sent" = "Depósito enviado"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Caminho de derivação"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Descartando…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Devido aos termos de serviço do CrowdNode, os usuários não podem retirar mais do que:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Devido a restrições regulatórias, precisamos verificar se você não está no Reino Unido. Verificamos sua localização apenas quando você acessa as funcionalidades do Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Devido ao processo de votação, a Rede Dash decidiu atribuir o nome de usuário '%@' a outra pessoa. Por favor, tente novamente solicitando outro nome de usuário."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "por exemplo: johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Cada convite será financiado com esse valor para que o destinatário possa criar rapidamente seu nome de usuário na Rede Dash"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Recentes"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Realize facilmente operações de stake no Dash e ganhe renda passiva com apenas alguns cliques."; - /* SPV diagnostics */ "Edit birth height" = "Editar a altura de origem"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "ex: joaosilva"; -/* CrowdNode */ +/* DashSpend */ "Email" = "E-mail"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "O primeiro depósito deve ser superior a %@"; - -/* CrowdNode */ -"First minimum deposit" = "Primeiro depósito mínimo"; - /* DashSpend */ "Fixed amounts" = "Valores fixos"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "do CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "da Carteira Dash"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fundos movidos"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Ganhe recompensas de depósitos em Dash Masternodes com apenas 0,5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Prepare-se para entrar no DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Receba Recompensas Instantaneamente"; - /* No comment provided by engineer. */ "Get Started" = "Começar"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Obtenha seu nome de usuário"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Introdução ao CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Vale-presente"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Cartão-presente · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Acesse o site do CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Ir para o site"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Altura %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Aqui está um endereço Dash designado para sua conta CrowdNode na Carteira Dash neste dispositivo"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Mantenha pressionado qualquer botão acima para substituí-lo pela função que você deseja"; -/* CrowdNode */ -"How CrowdNode staking works" = "Como funciona o staking no CrowdNode"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Como eu consigo Dash de teste?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Quão privado é o DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Como confirmar seu endereço de API Dash"; - /* No comment provided by engineer. */ "How to use your gift card" = "Como usar seu cartão-presente"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Eu aceito que perderei minhas moedas se eu não mais possuir a frase de recuperação"; -/* CrowdNode */ -"I agree to CrowdNode" = "Eu concordo com o CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Se você optar por conceder permissões posteriormente e não estiver no Reino Unido, poderá usar o Coinbase."; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Se você perder sua frase de recuperação, poderá ser verificado por outros meios para recuperar o acesso aos seus fundos do CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Se você perder sua frase de recuperação para esta carteira, perder este dispositivo ou desinstalar a Carteira Dash, você perderá o acesso aos seus fundos no CrowdNode e aos fundos desta carteira."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Se você ainda gostaria de limpá-lo por favor insira: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "No caso de saques maiores, a CrowdNode efetuará os saques em até duas semanas. Isso se deve aos seus protocolos de segurança e, na maioria das vezes, será processado muito mais rapidamente."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Caso você perca sua frase de recuperação, perderá o direito ao nome de usuário solicitado."; -/* CrowdNode Portal */ -"In process…" = "Processando..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informações sobre sua conta online"; - /* Buy Sell Portal */ "Initializing" = "Inicializando"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Movido internamente para"; -/* CrowdNode */ -"Introducing Staking" = "Introdução ao Staking"; - /* Invalid transaction */ "Invalid" = "Inválido"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Endereço Dash inválido"; -/* CrowdNode Online */ -"Invalid Email" = "E-mail inválido"; - /* No comment provided by engineer. */ "Invalid email or password." = "E-mail ou senha inválidos."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "Carteira Dash iOS: %@ Problema reportado"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Pode levar um minuto para que seu saldo seja atualizado."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Pode levar um minuto para que os valores cheguem."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Entre Agora"; -/* CrowdNode */ -"Joining the pool" = "Entrando no \"pool\""; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Mantenha estas moedas privadas. Aplicam-se taxas de rede e de privacidade."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Saindo do \"pool\""; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Deixe outro usuário do Dash Wallet escanear este código para adicionar você como contato."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Conectar Conta Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Vincular Conta Existente"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Vincular Conta Existente no CrowdNode"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Conectar Conta Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Faça login no CrowdNode"; - /* DashSpend */ "Log in to your account" = "Entrar na sua conta"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Parece que você está esvaziando sua Carteira Dash"; - /* adjective, security level */ "Low" = "Baixo"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Média"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Os membros são livres para sair do pool e na maioria das vezes podem sair imediatamente."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Não há transações não confirmadas para descartar."; -/* CrowdNode */ -"New CrowdNode Account" = "Nova conta CrowdNode"; - /* Voting */ "New to old" = "Do mais recente para o mais antigo"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Conta on-line"; - /* Online Merchant */ "Online Merchant" = "Comércio Online"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Os pagamentos com cada contato ficam agrupados em um só lugar, com nomes e perfis em vez de transações brutas."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Endereço de pagamento"; -/* CrowdNode */ -"Payout Options" = "Opções de Pagamento"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "por 24 horas"; - -/* CrowdNode */ -"per hour" = "por hora"; - -/* CrowdNode */ -"per transaction" = "por transação"; - /* Usernames */ "Personalise profile" = "Personalizar perfil"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Por favor, acesse sua conta Uphold para verificar sua identidade."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Por favor, observe que o e-mail não é salvo pela Carteira Dash e é enviado apenas para o CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Por favor, note que o nome de usuário NÃO pode ser alterado após o registro."; /* Usernames */ "Please note that you will not be able to change it in future" = "Por favor, observe que você não poderá alterar isso no futuro"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Por favor, observe que você não poderá retirar seus fundos do CrowdNode para esta carteira até que aumente seu saldo para %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Por favor coloque seu telefone perto do dispositivo NFC"; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Espere por favor"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Por favor, aguarde antes de iniciar o próximo saque"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Por favor, aguarde até que a carteira esteja totalmente sincronizada antes de exportar seu histórico de transações."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Os preços não foram recuperados. Os valores em fiat podem estar incorretos."; -/* CrowdNode */ -"Primary Dash address" = "Endereço Dash Primário"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Prós"; -/* CrowdNode Portal */ -"Protect your savings" = "Proteja suas economias"; - /* Usernames */ "Prove your identity" = "Prove sua identidade"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Ler a Política de Retirada"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Somente leitura"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receba diretamente na sua Carteira Dash"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receba sua parte de recompensas diariamente."; - /* Received transaction */ "Received" = "Recebido"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Recebido de %@"; -/* CrowdNode */ -"Receiving rewards" = "Recebendo recompensas"; - "Records your masternodes as having voted, without taking a side." = "Registra seus masternodes como tendo votado, sem tomar partido."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Envie %@ do seu endereço primário Dash utilizado atualmente para sua conta CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Enviar Convite"; -/* Coinbase - CrowdNode */ -"Send Report" = "Enviar Relatório"; - /* No comment provided by engineer. */ "Send to" = "Enviar para"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Enviando para"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Enviando para a conta CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Enviando para a Dash Wallet neste dispositivo"; - /* Buy Dash */ "Sending to:" = "Enviando para:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Configurar Carteira"; -/* CrowdNode */ +/* Receive screen */ "Share" = "compartilhe"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Mostrar Chaves de Masternode"; -/* CrowdNode */ -"Show QR" = "Mostrar QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Mostrar Frase de Recuperação"; /* Alert title */ "Sign in required" = "Autenticação necessária"; -/* CrowdNode */ -"Sign up error" = "Erro de inscrição"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Inscreva-se no CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Inscreva-se para concluir a configuração da conta"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplifique seus impostos de criptomoedas"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Começa depois que você adicionar fundos"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Sincronizado com a Carteira Dash atual"; - /* No comment provided by engineer. */ "Syncing" = "Sincronizando"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "A rede Dash precisa votar para aprovar alguns nomes de usuário antes que eles sejam criados"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "A Rede Dash é impulsionada por vários Masternodes, que são uma parte essencial para facilitar os pagamentos."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "O Dash foi depositado com sucesso na sua conta Coinbase. Mas houve um problema ao transferi-lo para a Carteira Dash neste dispositivo."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Este endereço não pode ser pago com o seu saldo %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Este PIN será requerido para desbloquear o seu app toda vez que o utilize"; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Este QR já contém a solicitação de pagamento de %@ Dash"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Isso representa o Rendimento Percentual Anual (Annual Percentage Yield - APY) atual de um Masternode completo menos a taxa de 15% do CrowdNode. Não é uma taxa de retorno garantida e pode aumentar ou diminuir com base no tamanho dos pools do CrowdNode e no preço do Dash."; - "This still counts as your masternodes having voted in this contest." = "Isso ainda conta como seus masternodes tendo votado nesta disputa."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "para a Carteira Dash neste dispositivo"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Para iniciar as operações de staking, crie uma conta no CrowdNode ou conecte-se a uma existente."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "para o endereço Dash designado para sua conta CrowdNode na Carteira Dash neste dispositivo"; - /* No comment provided by engineer. */ "Today" = "Hoje"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Histórico de Transações"; - /* Balance info sheet */ "Transaction history isn't available" = "O histórico de transações não está disponível"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Erro de transferência"; - /* Coinbase */ "Transfer Failed" = "A transferência falhou"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Convite válido"; -/* CrowdNode Portal */ -"Validating address…" = "Validando endereço…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validação de nome de usuário falhou"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verificação Necessária"; - /* Usernames */ "Verified during registration" = "Verificado durante o registro"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Verificar"; -/* CrowdNode */ -"Verify your API Dash address" = "Verifique seu endereço de API Dash"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifique sua frase de recuperação para definir um novo PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Muito Alto"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Quantidades muito pequenas de Dash serão enviadas de/para CrowdNode para verificar se você é o proprietário desta carteira."; - /* No comment provided by engineer. */ "View All" = "Ver tudo"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "A votação em “%@” já foi encerrada. Atualize para ver o resultado."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Aguarde até que a cadeira esteja completamente sincronizada para que possamos revisar seu histórico de transações."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Aguarde até que a cadeia esteja totalmente sincronizada para que possamos revisar seu histórico de transações. Visite o site do CrowdNode para fazer login ou se inscrever."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Aguarde até que a carteira seja sincronizada para concluir a transação"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Não foi possível criar sua conta CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Não foi possível fazer um depósito na sua conta CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Não foi possível realizar um saque da sua conta CrowdNode."; - /* Explore */ "We have two types of merchants" = "Nós temos 2 tipos de comércios"; /* No comment provided by engineer. */ "We Upgraded" = "Nós Atualizamos"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Iremos detectar automaticamente esta transação para transferir o mesmo valor para sua conta CrowdNode. Depois disso, você poderá fazer depósitos e saques na Dash Wallet neste dispositivo."; - /* Website */ "Website" = "Website"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Você não tem nome de usuário enquanto a votação está em andamento. Registre agora um nome de usuário não disputado — ele fica sendo seu e, se a votação lhe conceder “%@”, você poderá ser encontrado pelos dois nomes de usuário."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Por que vejo todas essas transações?"; -/* CrowdNode */ -"Why do you need an online account?" = "Por que você precisa de uma conta online?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Por que não devo fazer uma captura de tela?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "com a blockchain de Dash"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Saque"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Saque sem limites com uma conta online no site do CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Saque solicitado"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Saca todo o saldo"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Você pode alterar como / quando seus ganhos de recompensa serão pagos."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Você pode continuar a usar o DashPay para pagamentos, mas não pode atualizar seu perfil ou adicionar mais contatos até recarregar seu saldo de crédito"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Você pode pagar com Dash no caixa."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Você pode ver informações detalhadas sobre seus depósitos, saques e ganhos de recompensa."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Você pode especificar qualquer URL que esteja disponível publicamente na Internet para que outros usuários possam vê-lo na rede Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Você já votou para este nome de usuário %ld vezes. Você pode votar apenas mais uma vez. "; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Você inseriu uma chave inválida"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Você não tem fundos suficientes para prosseguir."; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Você precisa fazer backup da sua frase de recuperação na Dash Wallet"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Você precisa de pelo menos %@ Dash para criar um convite"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Você precisa de pelo menos %@ Dash em sua carteira"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Você precisa ter mais %@ Dash para criar este nome de usuário"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Você precisa entrar no DashSpend para comprar cartões-presente."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Você precisa aguardar 5 minutos antes de iniciar outro saque"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Você só precisa de %@ para entrar no pool."; - /* DashSpend confirmation */ "You pay" = "Você paga"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Você enviou a solicitação de contato para %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Você deve ter um saldo positivo na Carteira Dash"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Você deve ter pelo menos %@ Dash para prosseguir com a verificação do CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Você receberá %@ Dash em sua Carteira Dash neste dispositivo. Por favor, observe que pode levar de 2 a 3 minutos para completar a transferência. "; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Você receberá pagamentos fracionados automaticamente e eles serão reinvestidos por padrão, no entanto, também é fácil configurar saques automáticos para receber pagamentos recorrentes."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Seu saldo de crédito está baixo"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Sua conta CrowdNode está sendo criada…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Sua conta CrowdNode está configurada e pronta para uso!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Sua conta CrowdNode foi criada usando estas transações."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Seu endereço CrowdNode foi confirmado."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Seu endereço CrowdNode foi validado, mas a verificação é necessária."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Seu Nome de Usuário no DashPay está pronto para uso"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Seu depósito no CrowdNode foi recebido."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "A hora do seu dispositivo está %1$@ em %2$d segundos. Você não pode usar o CoinJoin devido a essa diferença.\n\nAs configurações de hora no seu dispositivo precisam ser alteradas para 'Definir hora automaticamente' para usar o CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Seu endereço primário Dash que você usa atualmente para sua conta CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Seu saldo privado. Os valores e endereços são criptografados on-chain, então seus fundos e seu histórico permanecem confidenciais."; diff --git a/DashWallet/ro.lproj/Localizable.strings b/DashWallet/ro.lproj/Localizable.strings index 3db1315258..030f742b25 100644 --- a/DashWallet/ro.lproj/Localizable.strings +++ b/DashWallet/ro.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " sau "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ a fost listat la %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Este necesar un cod de acces pentru a-ți proteja portofelul. Accesează setările și activează codul de acces pentru a continua."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Activ"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Sold"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Soldul după aceea"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Soldurile și transferurile nu sunt vizibile public"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Noduri conectate"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Credite"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Adresa Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Sold Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Cale de derivare"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Se renunță…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Editează înălțimea de start"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fonduri mutate"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Pregătește-te să te alături DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Mergi la Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Înălțime %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Cât de privat este DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Accept că voi pierde monedele dacă nu mai am fraza de recuperare"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Dacă dorești într-adevăr să o ștergi, introdu: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Păstrează aceste monede private. Se aplică taxe de rețea și de confidențialitate."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Lasă un alt utilizator Dash Wallet să scaneze acest cod pentru a te adăuga ca persoană de contact."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Contul Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nu există tranzacții neconfirmate la care să se renunțe."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Plățile cu fiecare contact sunt grupate într-un singur loc, cu nume și profiluri în loc de tranzacții brute."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Adresă de plată"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Plasează telefonul în apropierea dispozitivului NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Avantaje"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Doar citire"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Primiţi"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Primit de la %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Înregistrează masternode-urile tale ca având votat, fără a lua vreo parte."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Se trimite către"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Configurează Portofelul"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Distribuie"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Începe după ce adaugi fonduri"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Această adresă nu poate fi plătită din soldul tău %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Asta contează în continuare drept vot al masternode-urilor tale în această dispută."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Istoricul tranzacțiilor nu este disponibil"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Invitație validă"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Verificat în timpul înregistrării"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifică-ți fraza de recuperare pentru a seta un PIN nou."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Vezi toate"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Votul pentru „%@” s-a închis deja. Împrospătează pentru a vedea rezultatul."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Nu ai un nume de utilizator cât timp votul este în desfășurare. Înregistrează acum un nume de utilizator necontestat — rămâne al tău, iar dacă votul îți acordă „%@”, vei putea fi găsit sub ambele nume de utilizator."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Retrage întregul sold"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Ai trimis cererea de contact către %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Soldul tău privat. Sumele și adresele sunt criptate pe lanț, așa că deținerile și istoricul tău rămân confidențiale."; diff --git a/DashWallet/ru.lproj/Localizable.strings b/DashWallet/ru.lproj/Localizable.strings index f858dd79c1..cfcfea43fb 100644 --- a/DashWallet/ru.lproj/Localizable.strings +++ b/DashWallet/ru.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " или "; -/* CrowdNode */ -" Privacy Policy " = "Политика конфиденциальности"; - -/* CrowdNode */ -" Terms of Use " = "Условия использования"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ выставлено за %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Код-пароль необходим для защиты Вашего кошелька. Перейдите в Настройки и включите код-пароль, чтобы продолжить."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Для создания мастерноды необходимо 1000 Dash в качестве залогового обеспечения. На данный момент каждая мастернода получает примерно %@вознаграждения в год. "; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Принять положения и\nусловия"; -/* CrowdNode */ -"Accept Terms Of Use" = "Принять условия использования"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Принимаются условия использования..."; - -/* CrowdNode */ -"Account Recovery" = "Восстановление аккаунта"; - /* Masternode status */ "Active" = "Активна"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Все входящие и исходящие переводы CrowdNode на этом устройстве будут производиться с адреса Dash, указанного ниже."; - /* ZenLedger */ "Allow" = "Разрешить"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Возникла неизвестная ошибка. Пожалуйста, попробуйте ещё раз чуть позже."; -/* CrowdNode */ -"and" = " и "; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Любое имя пользователя, содержащее цифры от 2-9, больше 20 символов или дефис, будет автоматически одобрено"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Как владелец мастерноды, вы можете голосовать за утверждение запросов на имя пользователя, которые пользователи посылают до его создания. \nВы можете предотвратить создание тех имён пользователей, которые сочтёте неуместными. "; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Часто у людей нет на руках суммы в 1000 Dash, и CrowdNode создал сервис, где можно получить преимущества владения мастернодой за счёт вкладов участников в общий пул."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Сохранить"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Создать резервную копию кодовой фразы"; - /* A noun. Used as a title. */ "Backup Wallet" = "Резервное копирование кошелька"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Чтобы создать аккаунт CrowdNode, сделайте резервную копию кодовой фразы"; - /* Back up wallet */ "Backup your recovery phrase" = "Сохранить фразу восстановления"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Баланс"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Баланс после"; -/* CrowdNode */ -"Balance On CrowdNode" = "Баланс CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Баланс:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Балансы и переводы не видны публично"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Банковский перевод"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Станьте частью мастерноды Dash вместе с CrowdNode"; - /* TimeSkew */ "behind" = "отстаёт"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Закрыть и уведомить о завершении"; - /* No comment provided by engineer. */ "Close App" = "Закрыть приложение"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Подключено"; -/* CrowdNode */ -"Connected Dash address" = "Связанный адрес Dash "; - /* SPV sync */ "Connected peers" = "Подключённые пиры"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Создать имя пользователя"; -/* CrowdNode */ -"Create Account" = "Создать аккаунт"; - /* Create DashSpend account */ "Create account" = "Создать учетную запись"; /* DashSpend account title */ "Create an account or log into an existing one" = "Создайте аккаунт или войдите в уже существующий"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Создать онлайн-аккаунт CrowdNode"; - /* No comment provided by engineer. */ "Create invitation" = "Создать приглашение"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Создать онлайн аккаунт"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Кредиты"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Как присоединиться к пулу"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Поддержка CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "Этот адрес используется в CrowdNode как ваш ID. Если вы потеряете кодовую фразу, связанную с этим аккаунтом, то вы потеряете доступ к средствам внутри этого кошелька и этот аккаунт на CrowdNode."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Лимит CrowdNode на вывод"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Аккаунт"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Экспортировать CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Подарочные карты CTX"; -/* Crowdnode */ -"Current APY = %@" = "Текущий APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Текущий APY %@"; - /* Explore Dash: Filters */ "Current location" = "Текущее местоположение"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Адрес Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash адрес, созданный для вашего аккаунта CrowdNode в Dash Wallet на этом устройстве"; - /* No comment provided by engineer. */ "Dash balance" = "Баланс"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Дата"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Запрещено"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Пополнение"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Внести %@, чтобы начать зарабатывать"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Внесите не менее %@ Dash в Dash Wallet, чтобы завершить вывод средств"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Чтобы начать зарабатывать, внесите не менее %@"; - -/* CrowdNode */ -"Deposit sent" = "Средства отправлены"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Путь деривации"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Отбрасываем…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Из-за условий использования CrowdNode пользователи не могут вывести больше, чем:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Из-за регуляторных ограничений нам необходимо убедиться, что вы сейчас не находитесь на территории Великобритании. Мы проверяем ваше местоположение, только когда вы открываете настройки Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "В результате голосования сеть Dash решила присвоить имя пользователя '%@' кому-то другому. Попробуйте запросить другое имя пользователя."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "например, johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Каждое приглашение сопровождается этой суммой, чтобы получатель мог тут же создать своё имя пользователя в сети Dash"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Ранее"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Отправьте Dash в стейкинг и получите пассивный доход всего за несколько кликов."; - /* SPV diagnostics */ "Edit birth height" = "Изменить начальную высоту"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "напр.: ИванИванов"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Почта"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Первый депозит должен быть не менее %@"; - -/* CrowdNode */ -"First minimum deposit" = "Первый минимальный депозит"; - /* DashSpend */ "Fixed amounts" = "Фиксированная сумма"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "из CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "из Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Средства перемещены"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Получайте вознаграждение за инвестирование в мастерноды Dash, начиная с 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Приготовьтесь присоединиться к DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Получайте мгновенные вознаграждения"; - /* No comment provided by engineer. */ "Get Started" = "Начать"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Получить имя пользователя"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Начало работы с CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Подарочная карта"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Подарочная карта · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Перейти на сайт CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Перейти на сайт"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Высота %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Это Dash адрес, созданный для вашего аккаунта CrowdNode в Dash Wallet на этом устройстве"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Зажмите любую кнопку, чтобы заменить её нужной вам функцией"; -/* CrowdNode */ -"How CrowdNode staking works" = "Как работает стейкинг CrowdNode "; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Как получить тестовый Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Насколько приватен DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Как подтвердить свой API Dash адрес"; - /* No comment provided by engineer. */ "How to use your gift card" = "Как использовать подарочную карту"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Я понимаю, что потеряю свои средства, если у меня не будет фразы восстановления"; -/* CrowdNode */ -"I agree to CrowdNode" = "Согласен на CrowdNode "; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Если вы выберете \"дать разрешения позже\" и при этом вы не находитесь на территории Великобритании, вы можете пользоваться Coinbase."; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "В случае, если вы потеряете кодовую фразу, для восстановления доступа к средствам на CrowdNode можно воспользоваться другими методами."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "В случае, если вы потеряете кодовую фразу от этого кошелька, потеряете устройство или удалите Dash Wallet, вы потеряете доступ к средствам на CrowdNode и средствам внутри этого кошелька."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Если Вы всё ещё хотите удалить кошелёк, пожалуйста, введите: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "В случае вывода крупных сумм, CrowdNode выплатит эти суммы в течение двух недель. Это зависит от их протоколов безопасности, но часто платежи проводятся намного быстрее."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "При потере кодовой фразы вы потеряете доступ к запрошенному имени пользователя"; -/* CrowdNode Portal */ -"In process…" = "В процессе..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Информация о вашем онлайн аккаунте"; - /* Buy Sell Portal */ "Initializing" = "Инициализация"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Внутренний перевод на"; -/* CrowdNode */ -"Introducing Staking" = "Введение в стейкинг"; - /* Invalid transaction */ "Invalid" = "Некорректная"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Некорректный адрес Dash"; -/* CrowdNode Online */ -"Invalid Email" = "Неверный Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Неправильный электронный адрес или пароль."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Сообщений о проблеме"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Баланс обновляется в течение минуты."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Средства будут переведены в течение минуты."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Войти сейчас"; -/* CrowdNode */ -"Joining the pool" = "Как присоединиться к пулу"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Сохранить эти монеты приватными. Взимаются комиссии сети и за приватность."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Выход из пула"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Дайте другому пользователю Dash Wallet отсканировать этот код, чтобы добавить вас в контакты."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Привязать аккаунт Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Привязать уже существующий аккаунт"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Привязать уже существующий аккаунт CrowdNode"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Привязать Uphold аккаунт "; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Войти в CrowdNode"; - /* DashSpend */ "Log in to your account" = "Войти в ваш аккаунт"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Похоже, вы выводите средства из Dash Wallet"; - /* adjective, security level */ "Low" = "Низкий"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Средний"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Участники могут свободно выходить из пула и чаще всего могут сделать это мгновенно."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Нет неподтверждённых транзакций для отбрасывания."; -/* CrowdNode */ -"New CrowdNode Account" = "Новый аккаунт CrowdNode"; - /* Voting */ "New to old" = "Сначала новые"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Онлайн"; -/* CrowdNode Portal */ -"Online Account" = "Онлайн аккаунт"; - /* Online Merchant */ "Online Merchant" = "Интернет-магазин"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Платежи с каждым контактом собраны в одном месте — с именами и профилями вместо необработанных транзакций."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Адрес выплаты"; -/* CrowdNode */ -"Payout Options" = "Варианты выплат"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "в 24 часа"; - -/* CrowdNode */ -"per hour" = "в час"; - -/* CrowdNode */ -"per transaction" = "за транзакцию"; - /* Usernames */ "Personalise profile" = "Персонализировать профиль"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Пожалуйста, зайдите в свой аккаунт Uphold для подтверждения личности. "; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Обратите внимание! Этот email не сохраняется в Dash Wallet, он всего лишь пересылается в Crowdnode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Обратите внимания, что после регистрации имени пользователя его НЕЛЬЗЯ изменить."; /* Usernames */ "Please note that you will not be able to change it in future" = "Пожалуйста, обратите внимание, что в дальнейшем его нельзя будет изменить. "; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Помните, что вы не сможете вывести средства из CrowdNode на этот кошелёк, пока на балансе не будет хотя бы %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Пожалуйста, поместите Ваш телефон рядом с NFC устройством."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Пожалуйста, подождите"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Пожалуйста, подождите, прежде чем запустить следующий вывод средств"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Перед экспортированием истории транзакций дождитесь полной синхронизации кошелька "; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Данные о курсе не были получены. Курс валют может быть неточным."; -/* CrowdNode */ -"Primary Dash address" = "Основной адрес Dash"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Плюсы"; -/* CrowdNode Portal */ -"Protect your savings" = "Защитите свои сбережения"; - /* Usernames */ "Prove your identity" = "Подтвердите вашу личность"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Прочитать Правила вывода средств"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Только для чтения"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Получать напрямую на Dash Wallet."; -/* CrowdNode */ -"Receive your share of rewards daily." = "Получайте свою долю вознаграждения ежедневно."; - /* Received transaction */ "Received" = "Получено"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Получено от %@"; -/* CrowdNode */ -"Receiving rewards" = "Получение вознаграждений"; - "Records your masternodes as having voted, without taking a side." = "Отмечает ваши мастерноды как проголосовавшие, не занимая сторону."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Отправьте %@ Dash с основного Dash адреса, который вы сейчас используете с аккаунтом CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Отправить приглашение"; -/* Coinbase - CrowdNode */ -"Send Report" = "Отправить отчёт"; - /* No comment provided by engineer. */ "Send to" = "Отправить"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Отправка на"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Отправляется на аккаунт CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Отправляется на Dash Wallet на этом устройстве"; - /* Buy Dash */ "Sending to:" = "Отправка:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Настроить кошелек"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Поделиться"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Показать masternode ключи"; -/* CrowdNode */ -"Show QR" = "Показать QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Показать фразу восстановления"; /* Alert title */ "Sign in required" = "Необходимо войти в аккаунт"; -/* CrowdNode */ -"Sign up error" = "Ошибка при регистрации"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Создать CrowdNode аккаунт"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Зарегистрируйтесь, чтобы завершить настройку аккаунта"; - /* ZenLedger */ "Simplify your crypto taxes" = "Упростите уплату налогов с криптовалюты"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Стейкинг"; - /* Usernames */ "Starts after you add funds" = "Начнётся после пополнения"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Синхронизирован с активным Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Синхронизация"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Сеть Dash должна проголосовать за утверждение некоторых имён пользователей, прежде чем они будут созданы"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Сеть Dash работает на основе мастернод, которые играют важную роль в проведении платежей"; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash был успешно зачислен на ваш аккаунт Coinbase. Но при переводе его на Dash Wallet на этом устройстве произошла проблема."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "На этот адрес нельзя платить с вашего баланса %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Этот PIN нужно будет вводить для разблокировки приложения при каждом его использовании."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Этот QR уже содержит запрос на оплату в размере %@Dash"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Это текущая годовая процентная доходность полной мастерноды за минусом 15% комиссии CrowdNode. Эта сумма не является точной и может колебаться в зависимости от размера пулов CrowdNode и курса Dash."; - "This still counts as your masternodes having voted in this contest." = "Это всё равно засчитывается как участие ваших мастернод в голосовании по этому спору."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "на Dash Wallet на этом устройстве"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Чтобы приступить к стейкингу, создайте аккаунт на CrowdNode или подключитесь к уже существующему"; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "на адрес Dash, созданный для вашего CrowdNode аккаунта в Dash Wallet на этом устройстве"; - /* No comment provided by engineer. */ "Today" = "Сегодня"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "История транзакций"; - /* Balance info sheet */ "Transaction history isn't available" = "История транзакций недоступна"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Ошибка при переводе"; - /* Coinbase */ "Transfer Failed" = "Ошибка при переводе"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Действительное приглашение"; -/* CrowdNode Portal */ -"Validating address…" = "Подтверждение адреса..."; - /* No comment provided by engineer. */ "Validating username failed" = "Имя пользователя не подтверждено"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Требуется верификация"; - /* Usernames */ "Verified during registration" = "Проверено при регистрации"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Подтвердить"; -/* CrowdNode */ -"Verify your API Dash address" = "Подтвердить свой API Dash адрес"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Подтвердите фразу восстановления, чтобы задать новый PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Очень высокий"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Чтобы удостовериться, что вы действительно являетесь владельцем этого кошелька, на счёт CrowdNode будут зачислены и списаны небольшие суммы Dash."; - /* No comment provided by engineer. */ "View All" = "Показать все"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Голосование по «%@» уже закрыто. Обновите, чтобы увидеть результат."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Дождитесь полной синхронизации сети, чтобы мы могли увидеть вашу историю транзакций."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Дождитесь, пока блокчейн полностью синхронизируется, чтобы посмотреть историю транзакций. Для входа или регистрации посетите сайт CrowdNode."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Для завершения транзакции дождитесь синхронизации кошелька"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Мы не смогли создать вам аккаунт на CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Мы не смогли внести средства на ваш аккаунт на CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Мы не смогли вывести средства с вашего аккаунта на CrowdNode."; - /* Explore */ "We have two types of merchants" = "Существуют два типа продавцов"; /* No comment provided by engineer. */ "We Upgraded" = "Мы обновились"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Мы автоматически увидим эту транзакцию и переведём ту же сумму на ваш аккаунт на CrowdNode. После этого вы сможете вносить и выводить средства в Dash Wallet на этом устройстве."; - /* Website */ "Website" = "Вебсайт"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Пока идёт голосование, у вас нет имени пользователя. Зарегистрируйте сейчас неоспариваемое имя — оно останется за вами, и если голосование присудит вам «%@», вы будете доступны по обоим именам пользователя."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Почему я вижу все эти транзакции?"; -/* CrowdNode */ -"Why do you need an online account?" = "Зачем нужен онлайн аккаунт?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Почему я не могу сделать скриншот?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "с Dash блокчейн"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Вывод"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Вывести без ограничений в онлайн аккаунте на сайте CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Запрос на вывод средств отправлен"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Выводит весь баланс"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Вы можете настроить, когда и каким образом получите своё вознаграждение."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Вы можете и дальше пользоваться DashPay для платежей, но вам недоступно обновление профиля или добавление новых контактов до тех пор, пока вы не пополните баланс кредитов"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Вы можете расплатиться Dash на кассе."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Здесь можно найти подробную информацию о внесении и выводе средств, а также о вознаграждениях."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Можно задать любую публично доступную ссылку, чтобы её смогли видеть другие пользователи сети Dash"; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Вы уже проголосовали за это имя пользователя %ld раз. За него можно проголосовать ещё один раз. "; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Вы ввели неверный ключ"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Недостаточно средств для продолжения."; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Необходимо создать резервную копию кодовой фразы Dash Wallet"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Чтобы создать приглашение, у вас должно быть не менее %@Dash"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "В вашем Dash Wallet должно быть не менее %@ Dash"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Чтобы создать это имя пользователя, нужно на %@ Dash больше."; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Чтобы заказать эти подарочные карты, нужно войти в DashSpend."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Вы должны подождать 5 минут, прежде чем вывести средства ещё раз"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Чтобы присоединиться к пулу, нужно всего лишь %@"; - /* DashSpend confirmation */ "You pay" = "Вы оплачиваете"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Вы отправили запрос на добавление в контакты %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Для этого в вашем Dash Wallet должен быть положительный баланс"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Для продолжения процесса верификации на CrowdNode у вас на счету должно быть не менее %@Dash."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Вы получите %@Dash на Dash Wallet на этом устройстве. Пожалуйста, обратите внимание, что перевод займёт 2-3 минуты."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Вы будете автоматически получать свою долю выплат, и они по умолчанию будут реинвестированы. Однако, для повторяющихся выплат можно легко настроить автоматический вывод средств."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "У вас осталось мало кредитов"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Создаётся аккаунт на CrowdNode..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Ваш аккаунт на CrowdNode настроен и готов к использованию!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Ваш аккаунт на CrowdNode был создан с помощью этих транзакций."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Ваш адрес CrowdNode был подтверждён."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Ваш аккаунт на CrowdNode был подтверждён, но необходимо пройти верификацию."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Имя пользователя DashPay готово к работе"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Ваши средства зачислены на CrowdNode."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Время на вашем устройстве %1$@ на %2$d секунды. Поэтому вы не можете использовать CoinJoin.\n\nЧтобы воспользоваться CoinJoin, выставьте в настройках своего устройства \"Задать время автоматически\". "; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Основной адрес Dash, который сейчас используется для аккаунта CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Ваш приватный баланс. Суммы и адреса зашифрованы в блокчейне, поэтому ваши средства и история остаются конфиденциальными."; diff --git a/DashWallet/sk.lproj/Localizable.strings b/DashWallet/sk.lproj/Localizable.strings index 0ba24d340d..81af208732 100644 --- a/DashWallet/sk.lproj/Localizable.strings +++ b/DashWallet/sk.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " alebo "; -/* CrowdNode */ -" Privacy Policy " = " Zásady ochrany osobných údajov"; - -/* CrowdNode */ -" Terms of Use " = " Podmienky používania"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ ponúknuté za %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Na zabezpečenie vašej peňaženky je potrebný prístupový kód zariadenia. Ak chcete pokračovať, prejdite na nastavenia a zapnite prístupový kód."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Masternód potrebuje 1000 Dashov ako záruku a každý Masternód je v súčasnosti odmeňovaný približne %@ ročne."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Prijať zmluvné\npodmienky"; -/* CrowdNode */ -"Accept Terms Of Use" = "Prijať podmienky používania"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Prijímam podmienky používania…"; - -/* CrowdNode */ -"Account Recovery" = "Obnovenie účtu"; - /* Masternode status */ "Active" = "Aktívny"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Všetky prenosy do a z CrowdNode z tohto zariadenia sa budú vykonávať s nižšie uvedenou Dash adresou z tohto zariadenia."; - /* ZenLedger */ "Allow" = "Povoliť"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Vyskytla sa neznáma chyba. Skúste to znova neskôr."; -/* CrowdNode */ -"and" = "a"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Akékoľvek používateľské meno, ktoré má číslice 2-9, je dlhšie ako 20 znakov alebo obsahuje pomlčku, bude automaticky schválené."; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Ako vlastník masternodu môžete hlasovať o schválení požadovaných používateľských mien predtým, ako si ich používatelia budú môcť vytvoriť.\nMôžete zablokovať vytváranie používateľských mien, ktoré považujete za nevhodné."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Keďže väčšina ľudí nemá po ruke presne 1000 Dash, Crowdnode vytvoril službu, kde združovaním vkladov od členov môžu dosiahnuť výhody vlastníctva Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Záloha"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Zálohovať prístupovú frázu"; - /* A noun. Used as a title. */ "Backup Wallet" = "Zálohovať peňaženku"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Zálohujte si svoju prístupovú frázu a vytvorte si účet CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Zálohujte si frázu na obnovenie"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Zostatok"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Zostatok potom"; -/* CrowdNode */ -"Balance On CrowdNode" = "Zostatok na CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Zostatok: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Zostatky a prevody nie sú verejne viditeľné"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bankový prevod"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Staňte sa súčasťou Dash Masternode s CrowdNode"; - /* TimeSkew */ "behind" = "pozadu"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Zatvoriť a upozorniť, keď to bude hotové"; - /* No comment provided by engineer. */ "Close App" = "Zatvoriť Aplikáciu"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Pripojené"; -/* CrowdNode */ -"Connected Dash address" = "Pripojená Dash adresa"; - /* SPV sync */ "Connected peers" = "Pripojení rovesníci"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Vytvoriť používateľské meno"; -/* CrowdNode */ -"Create Account" = "Vytvoriť účet"; - /* Create DashSpend account */ "Create account" = "Vytvoriť účet"; /* DashSpend account title */ "Create an account or log into an existing one" = "Vytvorte si účet alebo sa prihláste do existujúceho"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Vytvorte si online CrowdNode účet"; - /* No comment provided by engineer. */ "Create invitation" = "Vytvoriť pozvánku"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Vytvoriť online účet"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kredity"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Výhody CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "Podpora CrowdNode"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode používa túto adresu ako ID vášho účtu. Ak stratíte prístupovú frázu priradenú k tejto adrese, stratíte prístup k svojim finančným prostriedkom v tejto peňaženke a k účtu CrowdNode."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Limity výberu CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Účet"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Export CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Darčekové karty CTX"; -/* Crowdnode */ -"Current APY = %@" = "Aktuálne zhodnotenie = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Aktuálne zhodnotenie je %@"; - /* Explore Dash: Filters */ "Current location" = "Súčasná poloha"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash adresa"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash adresa určená pre váš CrowdNode účet v Dash Wallet na tomto zariadení"; - /* No comment provided by engineer. */ "Dash balance" = "Bilancia Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Dátum"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Odmietnuté"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Vklad"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Aby ste začali zarábať, vložte %@"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Ak chcete dokončiť výber, vložte do svojej Dash peňaženky aspoň %@ Dash"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Aby ste začali zarábať, vložte aspoň %@"; - -/* CrowdNode */ -"Deposit sent" = "Vklad odoslaný"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Odvodzovacia cesta"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Zahadzujeme…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Vzhľadom na zmluvné podmienky CrowdNode môžu používatelia vybrať maximálne:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Kvôli regulačným obmedzeniam musíme overiť, že sa nenachádzate v Spojenom kráľovstve. Vašu polohu skontrolujeme iba vtedy, keď použijete funkcie Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Kvôli procesu hlasovania sa Dash Network rozhodla prideliť používateľské meno '%@' niekomu inému. Skúste to znova požiadaním o iné používateľské meno."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "napr. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Každá pozvánka bude financovaná touto sumou, aby si príjemca mohol rýchlo vytvoriť svoje používateľské meno v sieti Dash"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "pred"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Jednoducho stávkujte Dash a získajte pasívny príjem niekoľkými jednoduchými kliknutiami."; - /* SPV diagnostics */ "Edit birth height" = "Upraviť počiatočnú výšku"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "napr.: mario"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Prvý vklad by mal byť vyšší ako %@"; - -/* CrowdNode */ -"First minimum deposit" = "Prvý minimálny vklad"; - /* DashSpend */ "Fixed amounts" = "Fixné sumy"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "z CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "z Dash peňaženky"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Prostriedky presunuté"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Získajte odmeny z vkladov v Dash Masternodes už za 0,5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Pripravte sa vstúpiť do DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Získajte odmeny okamžite"; - /* No comment provided by engineer. */ "Get Started" = "Začať"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Získajte svoje používateľské meno"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Začíname s CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Darčeková karta"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Darčeková karta · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Prejdite na webovú stránku CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Prejsť na webovú stránku"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Výška %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Tu je Dash adresa určená pre váš CrowdNode účet v Dash peňaženke na tomto zariadení."; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Pre nahradenie požadovanou funkciou, podržte ľubovoľné vyššie umiestnené tlačidlo"; -/* CrowdNode */ -"How CrowdNode staking works" = "Ako funguje stávkovanie na CrowdNode"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Ako získať testovací Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Aké súkromné je DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Ako potvrdiť svoju API Dash adresu "; - /* No comment provided by engineer. */ "How to use your gift card" = "Ako používať vašu darčekovú poukážku"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Akceptujem, že stratím svoje mince v prípade, že už nedržím frázu pre obnovenie"; -/* CrowdNode */ -"I agree to CrowdNode" = "Súhlasím s CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Ak sa rozhodnete udeliť povolenia neskôr a nie ste v Spojenom kráľovstve, môžete použiť Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Ak niekedy stratíte svoju prístupovú frázu, môžete sa overiť inými spôsobmi, aby ste znova získali prístup k svojim prostriedkom na CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Ak stratíte prístupovú frázu pre túto peňaženku a stratíte toto zariadenie alebo odinštalujete Dash peňaženku, stratíte prístup k svojim finančným prostriedkom v CrowdNode a k prostriedkom v tejto peňaženke."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Ak si ju stále prajete zmazať, prosím zadajte: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "V prípade väčších výberov, CrowdNode vyplatí výbery do dvoch týždňov. Toto je spôsobené ich bezpečnostnými protokolmi ale najčastejšie to bude oveľa skôr."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "V prípade, že stratíte svoju prístupovú frázu, stratíte právo na požadované používateľské meno."; -/* CrowdNode Portal */ -"In process…" = "V procese…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Informácie o vašom online účte"; - /* Buy Sell Portal */ "Initializing" = "Inicializuje sa"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Interne presunuté do"; -/* CrowdNode */ -"Introducing Staking" = "Predstavujeme stávkovanie"; - /* Invalid transaction */ "Invalid" = "Neplatná"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Neplatná Dash adresa"; -/* CrowdNode Online */ -"Invalid Email" = "Neplatný email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Neplatný e‑mail alebo heslo."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "Peňaženka iOS Dash: %@ Nahlásený problém"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Aktualizácia zostatku môže chvíľu trvať."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Doručenie prostriedkov môže chvíľu trvať."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Pridať sa teraz"; -/* CrowdNode */ -"Joining the pool" = "Pripojenie k členstvu"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Ponechať tieto mince súkromné. Účtujú sa sieťové poplatky a poplatky za súkromie."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Ukončiť členstvo"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Nechajte iného používateľa Dash Wallet naskenovať tento kód, aby si vás pridal ako kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Prepojiť účet na Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Prepojiť existujúci účet"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Prepojiť existujúci CrowdNode účet"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Pripojiť Uphold účet"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Prihláste sa do CrowdNode"; - /* DashSpend */ "Log in to your account" = "Prihlásiť sa do svojho účtu"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Zdá sa, že vyprázdňujete svoju Dash peňaženku"; - /* adjective, security level */ "Low" = "Nízke"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Stredné"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Členovia môžu voľne ukončiť členstvo, a zvyčajne môžu odísť okamžite."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nie sú žiadne nepotvrdené transakcie na zahodenie."; -/* CrowdNode */ -"New CrowdNode Account" = "Nový CrowdNode účet"; - /* Voting */ "New to old" = "Od najnovších"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online účet"; - /* Online Merchant */ "Online Merchant" = "Online obchodník"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Platby s každým kontaktom sú zoskupené na jednom mieste, s menami a profilmi namiesto surových transakcií."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Výplatná adresa"; -/* CrowdNode */ -"Payout Options" = "Možnosti výplaty"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "za 24 hodín"; - -/* CrowdNode */ -"per hour" = "za hodinu"; - -/* CrowdNode */ -"per transaction" = "za transakciu"; - /* Usernames */ "Personalise profile" = "Prispôsobiť profil"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Prejdite do svojho Uphold účtu a overte svoju identitu."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Upozorňujeme, že e-mail nie je uložený v Dash peňaženke a je odoslaný iba do CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Upozorňujeme, že používateľské meno sa po registrácii NEDÁ zmeniť."; /* Usernames */ "Please note that you will not be able to change it in future" = "Upozorňujeme, že si ho v budúcnosti nebudete môcť zmeniť."; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Upozorňujeme, že nebudete môcť vybrať svoje prostriedky z CrowdNode do tejto peňaženky, kým nezvýšite svoj zostatok na %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Umiestnite váš telefón blízko NFC zariadenia."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Prosím čakajte"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Pred spustením ďalšieho výberu prosím počkajte"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Pred exportovaním histórie transakcií počkajte, kým sa peňaženka úplne zosynchronizuje"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Nepodarilo sa získať ceny. Hotovostné ceny môžu byť nesprávne."; -/* CrowdNode */ -"Primary Dash address" = "Primárna Dash adresa"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Výhody"; -/* CrowdNode Portal */ -"Protect your savings" = "Chráňte svoje úspory"; - /* Usernames */ "Prove your identity" = "Preukážte svoju identitu"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Prečítajte si zásady výberu"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Iba na čítanie"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Obdržať priamo do Dash peňaženky"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Denne získajte svoj podiel na odmenách."; - /* Received transaction */ "Received" = "Prijaté"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Prijaté od %@"; -/* CrowdNode */ -"Receiving rewards" = "Prijímané odmeny"; - "Records your masternodes as having voted, without taking a side." = "Zaznamená vaše masternódy ako hlasujúce bez toho, aby sa pridali na niektorú stranu."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Pošlite %@ zo svojej primárnej Dash adresy, ktorú momentálne používate pre svoj účet CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Poslať pozvánku"; -/* Coinbase - CrowdNode */ -"Send Report" = "Poslať správu"; - /* No comment provided by engineer. */ "Send to" = "Poslať ku"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Odosiela sa na"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Odošle sa na účet CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Odošle sa do Dash peňaženky na tomto zariadení"; - /* Buy Dash */ "Sending to:" = "Odosiela sa na:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Nastaviť peňaženku"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Zdieľať"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Zobraziť kľúče masternódu"; -/* CrowdNode */ -"Show QR" = "Zobraziť QR kód"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Zobraziť frázu obnovenia"; /* Alert title */ "Sign in required" = "Vyžaduje sa prihlásenie"; -/* CrowdNode */ -"Sign up error" = "Chyba registrácie"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Zaregistrovať sa do CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Prihláste sa pre dokončenie nastavenia účtu"; - /* ZenLedger */ "Simplify your crypto taxes" = "Zjednodušte si dane z kryptomien"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Stávkovanie"; - /* Usernames */ "Starts after you add funds" = "Začne po pridaní prostriedkov"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synchronizované s aktuálnou Dash peňaženkou "; - /* No comment provided by engineer. */ "Syncing" = "Synchronizácia"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Sieť Dash musí hlasovať o schválení niektorých používateľských mien pred ich vytvorením"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Sieť Dash je riadená množstvom Masternodov, ktoré sú nevyhnutnou súčasťou uskutočnenia platieb."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash bol úspešne vložený na váš Coinbase účet. Pri prenose do Dash peňaženky na tomto zariadení sa však vyskytol problém."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Túto adresu nemožno zaplatiť z vášho zostatku %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Tento PIN bude potrebný na odomknutie aplikácie pri každom použití."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Tento QR kód už obsahuje žiadosť k platbe pre %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "To predstavuje to aktuálny ročný percentuálny výnos celého Masternódu mínus 15 % poplatok CrowdNode. Nie je to zaručená miera návratnosti a môže stúpať alebo klesať v závislosti od veľkosti fondov CrowdNode a ceny Dash."; - "This still counts as your masternodes having voted in this contest." = "Stále sa to počíta ako hlasovanie vašich masternódov v tomto spore."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "do Dash peňaženky na tomto zariadení"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Ak chcete začať stávkovať, vytvorte si účet na CrowdNode alebo sa pripojte k existujúcemu účtu."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "na Dash adresu určenú pre váš účet CrowdNode v Dash peňaženke na tomto zariadení"; - /* No comment provided by engineer. */ "Today" = "Dnes"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "História transakcií"; - /* Balance info sheet */ "Transaction history isn't available" = "História transakcií nie je k dispozícii"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Chyba prenosu"; - /* Coinbase */ "Transfer Failed" = "Prenos zlyhal"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Platná pozvánka"; -/* CrowdNode Portal */ -"Validating address…" = "Overuje sa adresa…"; - /* No comment provided by engineer. */ "Validating username failed" = "Overenie používateľského mena zlyhalo"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Vyžaduje sa overenie"; - /* Usernames */ "Verified during registration" = "Overené počas registrácie"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Overiť"; -/* CrowdNode */ -"Verify your API Dash address" = "Overte svoju API Dash adresu"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Overte frázu pre obnovenie a nastavte nový PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Veľmi vysoké"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Do a z CrowdNode budú odoslané veľmi malé množstvá Dash, aby sme overili, že ste vlastníkom tejto adresy peňaženky."; - /* No comment provided by engineer. */ "View All" = "Zobraziť všetko"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Hlasovanie o „%@“ už bolo uzavreté. Obnovte, aby ste videli výsledok."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Počkajte, kým sa reťazec úplne zosynchronizuje, aby sme mohli skontrolovať vašu históriu transakcií."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Počkajte, kým sa reťazec úplne zosynchronizuje, aby sme mohli skontrolovať vašu históriu transakcií. Pre prihlásenie alebo registráciu navštívte webovú stránku CrowdNode."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Na dokončenie transakcie počkajte, kým sa peňaženka zosynchronizuje"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Nepodarilo sa nám vytvoriť váš CrowdNode účet."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Nepodarilo sa nám uskutočniť vklad na váš CrowdNode účet."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Nepodarilo sa nám vybrať z vášho CrowdNode účtu."; - /* Explore */ "We have two types of merchants" = "Máme dva typy obchodníkov"; /* No comment provided by engineer. */ "We Upgraded" = "Aktualizovali sme"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Túto transakciu automaticky zistíme a prevedieme rovnakú sumu na váš účet CrowdNode. Potom budete môcť na tomto zariadení vykonávať vklady a výbery v Dash peňaženke."; - /* Website */ "Website" = "Webová stránka"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Kým prebieha hlasovanie, nemáte používateľské meno. Zaregistrujte si teraz nesporné používateľské meno — zostane vám, a ak vám hlasovanie prizná „%@“, budete dostupní pod oboma používateľskými menami."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Prečo sa mi zobrazujú všetky tieto transakcie?"; -/* CrowdNode */ -"Why do you need an online account?" = "Prečo potrebujete online účet?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Prečo by som nemal robiť snímku obrazovky?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "s Dash blockchainom"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Výber"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Výber bez obmedzení s online účtom na webe CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Žiadosť o výber podaná"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Vyberie celý zostatok"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Môžete zmeniť spôsob alebo kedy sa vám budú vyplácať vaše zárobky."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Na platby môžete naďalej používať DashPay, ale nemôžete aktualizovať svoj profil ani pridať ďalšie kontakty, kým nedobijete svoj kredit"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Pri pokladni môžete platiť kartou Dash."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Môžete vidieť podrobné informácie o svojich vkladoch, výberoch a zárobkoch z odmien."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Môžete zadať ľubovoľnú adresu URL, ktorá je verejne dostupná na internete, aby ju ostatní používatelia mohli vidieť v sieti Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Za toto používateľské meno ste už hlasovali %ld krát. Pre toto používateľské meno môžete odovzdať už len jeden hlas."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Zadali ste neplatný kľúč"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Na pokračovanie nemáte dostatok finančných prostriedkov"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "V Dash peňaženke si musíte zálohovať svoju prístupovú frázu "; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Na vytvorenie pozvánky potrebujete aspoň %@Dash"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "V Dash peňaženke potrebujete aspoň %@"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Na vytvorenie tohto používateľského mena potrebujete o %@ viac Dashov"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Na zakúpenie darčekových kariet sa musíte prihlásiť do DashSpend."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Pred ďalším výberom musíte počkať 5 minút"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "K členstvu potrebujete iba %@."; - /* DashSpend confirmation */ "You pay" = "Platíte"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Odoslali ste žiadosť o kontakt používateľovi %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "V Dash peňaženke by ste mali mať kladný zostatok"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Pre pokračovanie s overením na CrowdNode, by ste mali mať aspoň %@."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Na tomto zariadení dostanete %@ Dash do svojej Dash peňaženky . Upozorňujeme, že dokončenie prevodu môže trvať 2 až 3 minúty."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Čiastkové platby budete dostávať automaticky a štandardne budú reinvestované, ale je tiež jednoduché nastaviť automatické výbery pre prijímanie opakujúcich sa platieb."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Váš kreditný zostatok je nízky"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Váš CrowdNode účet sa vytvára…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Váš účet CrowdNode je nastavený a pripravený na použitie!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Váš účet CrowdNode bol vytvorený pomocou týchto transakcií."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Vaša CrowdNode adresa bola potvrdená."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Vaša CrowdNode adresa bola overená, ale vyžaduje sa overenie."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Vaše používateľské DashPay meno je pripravené"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Váš vklad do CrowdNode je prijatý."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Čas vášho zariadenia je %1$@ po %2$d sekundách. Kvôli tomuto rozdielu nemôžete používať CoinJoin.\n\nAby ste mohli používať CoinJoin, nastavenia času na vašom zariadení je potrebné zmeniť na „Nastaviť čas automaticky“."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Vaša primárna Dash adresa, ktorú momentálne používate pre váš CrowdNode účet"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Váš súkromný zostatok. Sumy a adresy sú v reťazci zašifrované, takže vaše prostriedky aj história zostávajú dôverné."; diff --git a/DashWallet/sl.lproj/Localizable.strings b/DashWallet/sl.lproj/Localizable.strings index 636a942fa7..27a3f246b7 100644 --- a/DashWallet/sl.lproj/Localizable.strings +++ b/DashWallet/sl.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ali "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ je oglašeno za %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiven"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Stanje"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Stanje po tem"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Stanja in prenosi niso javno vidni"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Povezana vozlišča"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediti"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash stanje"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Pot izpeljave"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Zavračamo…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Uredi začetno višino"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Sredstva premaknjena"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Pripravite se na pridružitev DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Višina %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Kako zaseben je DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Ohranite te kovance zasebne. Veljajo omrežne provizije in provizije za zasebnost."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Naj drug uporabnik Dash Wallet skenira to kodo, da vas doda med stike."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Ni nepotrjenih transakcij za zavrženje."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Plačila z vsakim stikom so združena na enem mestu, z imeni in profili namesto surovih transakcij."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Naslov za izplačilo"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Prednosti"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Samo za branje"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Prejeto od %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Zabeleži vaše masternode kot da so glasovali, ne da bi se opredelili."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Pošiljanje na"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Deli"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Začne se, ko dodate sredstva"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Tega naslova ni mogoče plačati iz vašega stanja %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "To se še vedno šteje, kot da so vaši masternode glasovali v tem sporu."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Zgodovina transakcij ni na voljo"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Veljavno povabilo"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Preverjeno med registracijo"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Potrdite frazo za obnovitev, da nastavite nov PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Prikaži vse"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Glasovanje o »%@« je že zaprto. Osvežite, da vidite rezultat."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Dokler traja glasovanje, nimate uporabniškega imena. Zdaj registrirajte neizpodbijano uporabniško ime — ostane vaše, in če vam glasovanje dodeli „%@“, boste dosegljivi pod obema uporabniškima imenoma."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Izplača celotno stanje"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Poslali ste zahtevo za stik uporabniku %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Vaše zasebno stanje. Zneski in naslovi so v verigi šifrirani, zato vaša sredstva in zgodovina ostanejo zaupni."; diff --git a/DashWallet/sl_SI.lproj/Localizable.strings b/DashWallet/sl_SI.lproj/Localizable.strings index 0869779a74..ebe3406a28 100644 --- a/DashWallet/sl_SI.lproj/Localizable.strings +++ b/DashWallet/sl_SI.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ali "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ je oglašeno za %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiven"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Stanje po tem"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Stanja in prenosi niso javno vidni"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Povezana vozlišča"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediti"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Pot izpeljave"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Zavračamo…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Uredi začetno višino"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Sredstva premaknjena"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Pripravite se na pridružitev DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Višina %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Kako zaseben je DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Ohranite te kovance zasebne. Veljajo omrežne provizije in provizije za zasebnost."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Naj drug uporabnik Dash Wallet skenira to kodo, da vas doda med stike."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Ni nepotrjenih transakcij za zavrženje."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Plačila z vsakim stikom so združena na enem mestu, z imeni in profili namesto surovih transakcij."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Naslov za izplačilo"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Prednosti"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Samo za branje"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Prejeto od %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Zabeleži vaše masternode kot da so glasovali, ne da bi se opredelili."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Pošiljanje na"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Share"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Začne se, ko dodate sredstva"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Tega naslova ni mogoče plačati iz vašega stanja %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "To se še vedno šteje, kot da so vaši masternode glasovali v tem sporu."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Zgodovina transakcij ni na voljo"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Veljavno povabilo"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Preverjeno med registracijo"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Potrdite frazo za obnovitev, da nastavite nov PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Prikaži vse"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Glasovanje o »%@« je že zaprto. Osvežite, da vidite rezultat."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Dokler traja glasovanje, nimate uporabniškega imena. Zdaj registrirajte neizpodbijano uporabniško ime — ostane vaše, in če vam glasovanje dodeli „%@“, boste dosegljivi pod obema uporabniškima imenoma."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Izplača celotno stanje"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Poslali ste zahtevo za stik uporabniku %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Vaše zasebno stanje. Zneski in naslovi so v verigi šifrirani, zato vaša sredstva in zgodovina ostanejo zaupni."; diff --git a/DashWallet/sq.lproj/Localizable.strings b/DashWallet/sq.lproj/Localizable.strings index e5396277de..86ee8bf77e 100644 --- a/DashWallet/sq.lproj/Localizable.strings +++ b/DashWallet/sq.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ose "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ u vu në shitje për %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Një kodkalim është i nevojshëm për sigurinë e kuletës suaj. Shko në konfigurimet dhe aktivizo kodkalimin dhe vazhdo."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiv"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balanca"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Balanca më pas"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Balancat dhe transferimet nuk janë publikisht të dukshme"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Nyjet e lidhura"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Kredite"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash adresa"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Shtegu i derivimit"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Po hedhim poshtë…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Ndrysho lartësinë fillestare"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fondet u zhvendosën"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Përgatituni t'i bashkoheni DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Lartësia %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Sa privat është DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Mbaji këto monedha private. Zbatohen tarifa rrjeti dhe privatësie."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Lëre një përdorues tjetër të Dash Wallet ta skanojë këtë kod për të të shtuar si kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nuk ka transaksione të pakonfirmuara për t'u hedhur poshtë."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Pagesat me çdo kontakt grupohen në një vend, me emra dhe profile në vend të transaksioneve të papërpunuara."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Adresa e pagesës"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Përparësitë"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Vetëm për lexim"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Marrë nga %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "I regjistron masternode-t tuaj si të votuar, pa mbajtur anë."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Po dërgohet te"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Shpërndaje"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Fillon pasi të shtoni fonde"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Kjo adresë nuk mund të paguhet nga balanca juaj %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Kjo prapë llogaritet sikur masternode-t tuaj kanë votuar në këtë kontest."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Historiku i transaksioneve nuk është i disponueshëm"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Ftesë e vlefshme"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Verifikuar gjatë regjistrimit"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifiko frazën tënde të rikuperimit për të vendosur një PIN të ri."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Shiko të gjitha"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Votimi për „%@“ tashmë është mbyllur. Rifreskoni për të parë rezultatin."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Nuk ke emër përdoruesi ndërsa votimi është në vazhdim. Regjistro tani një emër përdoruesi pa garë — ai mbetet i yti, dhe nëse votimi ta jep „%@“, do të jesh i arritshëm me të dy emrat e përdoruesit."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Tërheq të gjithë balancën"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Dërguat kërkesën për kontakt te %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Balanca juaj private. Shumat dhe adresat janë të fshehtëzuara në zinxhir, kështu që zotërimet dhe historiku juaj mbeten konfidenciale."; diff --git a/DashWallet/sr.lproj/Localizable.strings b/DashWallet/sr.lproj/Localizable.strings index 24126ee8bb..1cca07f944 100644 --- a/DashWallet/sr.lproj/Localizable.strings +++ b/DashWallet/sr.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " ili "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ je oglašeno za %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktivan"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Stanje"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Stanje nakon toga"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Stanja i prenosi nisu javno vidljivi"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Povezani čvorovi"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediti"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash adresa"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash stanje"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Putanja izvođenja"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Odbacujemo…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Izmeni početnu visinu"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Sredstva premeštena"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Pripremite se da se pridružite DashPay-u"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Visina %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Koliko je DashPay privatan?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Prihvatam činjenicu da ću izgubiti novčiće ukoliko više ne posedujem frazu za obnovu"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Ukoliko i dalje želite da izvršite brisanje molimo vas da unesete: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Zadržite ove novčiće privatnim. Primenjuju se mrežne naknade i naknade za privatnost."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Neka drugi korisnik Dash Wallet-a skenira ovaj kod da bi vas dodao kao kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Nema nepotvrđenih transakcija za odbacivanje."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Plaćanja sa svakim kontaktom grupisana su na jednom mestu, sa imenima i profilima umesto sirovih transakcija."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Adresa isplate"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Molimo vas da postavite vaš telefon blizu NFC uređaja."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Prednosti"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Samo za čitanje"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Primljeno"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Primljeno od %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Beleži vaše masternodove kao da su glasali, bez zauzimanja strane."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Slanje na"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Podeli"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Počinje nakon što dodate sredstva"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Ova adresa ne može da se plati iz vašeg stanja %@"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Ovo se i dalje računa kao da su vaši masternodovi glasali u ovom sporu."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Istorija transakcija nije dostupna"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Važeća pozivnica"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Provereno tokom registracije"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Potvrdite frazu za oporavak da biste postavili novi PIN."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Prikaži sve"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Glasanje o „%@“ je već zatvoreno. Osvežite da biste videli rezultat."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Dok traje glasanje, nemate korisničko ime. Registrujte sada korisničko ime bez nadmetanja — ostaje vaše, a ako vam glasanje dodeli „%@“, bićete dostupni pod oba korisnička imena."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Isplaćuje celokupno stanje"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Poslali ste zahtev za kontakt korisniku %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Vaše privatno stanje. Iznosi i adrese su šifrovani na lancu, pa vaša sredstva i istorija ostaju poverljivi."; diff --git a/DashWallet/sv.lproj/Localizable.strings b/DashWallet/sv.lproj/Localizable.strings index 2af1ab50e5..0114abfa27 100644 --- a/DashWallet/sv.lproj/Localizable.strings +++ b/DashWallet/sv.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " eller "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ har lagts ut för %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Aktiv"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Saldo"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Saldo efteråt"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Saldon och överföringar syns inte offentligt"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Anslutna noder"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediter"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash-adress"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Datum"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Härledningsväg"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Slänger…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Redigera starthöjd"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Medlen har flyttats"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Gör dig redo att gå med i DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Gå till Hemsida"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Höjd %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Hur privat är DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "I accept that I will lose my coins if I no longer possess the recovery phrase"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "If you still would like to wipe it please input: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Håll de här mynten privata. Nätverks- och integritetsavgifter tillkommer."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Låt en annan Dash Wallet-användare skanna den här koden för att lägga till dig som kontakt."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Låg"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Inga obekräftade transaktioner att slänga."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Betalningarna med varje kontakt samlas på ett ställe, med namn och profiler i stället för råa transaktioner."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Utbetalningsadress"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Please place your phone near NFC device."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Fördelar"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Skrivskyddad"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Received"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Mottaget från %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Registrerar att dina masternoder har röstat, utan att ta ställning."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Skickar till"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Dela"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Startar när du lägger till medel"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Den här adressen kan inte betalas från ditt %@-saldo"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Detta räknas ändå som att dina masternoder har röstat i den här tvisten."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Transaktionshistoriken är inte tillgänglig"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Giltig inbjudan"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Verifierad vid registreringen"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Verifiera din återställningsfras för att ange en ny PIN-kod."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Visa alla"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Röstningen om ”%@” är redan stängd. Uppdatera för att se resultatet."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Du har inget användarnamn så länge röstningen pågår. Registrera nu ett obestritt användarnamn — det förblir ditt, och om röstningen tilldelar dig ”%@” nås du på båda användarnamnen."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Tar ut hela saldot"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Du skickade kontaktförfrågan till %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Ditt privata saldo. Belopp och adresser är krypterade på kedjan, så ditt innehav och din historik förblir konfidentiella."; diff --git a/DashWallet/th.lproj/Localizable.strings b/DashWallet/th.lproj/Localizable.strings index 79400caf18..de0e45c42c 100644 --- a/DashWallet/th.lproj/Localizable.strings +++ b/DashWallet/th.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " หรือ "; -/* CrowdNode */ -" Privacy Policy " = "นโยบายความเป็นส่วนตัว"; - -/* CrowdNode */ -" Terms of Use " = "ข้อกำหนดการใช้งาน"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "ประกาศขาย %1$@ ในราคา %2$@ DASH แล้ว"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "รหัสผ่านอุปกรณ์นั้นจำเป็นในการปกป้องกระเป๋าสตางค์ของคุณ ไปที่การตั้งค่าและเปิดรหัสผ่านเพื่อดำเนินการต่อ"; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Masternode ต้องการ 1000 Dash เป็นหลักประกัน และแต่ละ Masternode จะได้รับรางวัลโดยประมาณ %@ ต่อปี"; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "ยอมรับข้อกำหนดการใช้งาน"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "ยอมรับข้อกำหนดการใช้งาน ..."; - -/* CrowdNode */ -"Account Recovery" = "การกู้คืนบัญชี"; - /* Masternode status */ "Active" = "ใช้งานอยู่"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "การถ่ายโอนทั้งหมดไปและกลับจาก CrowdNode จากอุปกรณ์นี้จะดำเนินการด้วยที่อยู่ DASH ด้านล่างจากอุปกรณ์นี้"; - /* ZenLedger */ "Allow" = "อนุญาติ"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "และ"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "เนื่องจากคนส่วนใหญ่ไม่มี 1000 Dash อยู่ในมืออย่างแน่นอน Crowdnode จึงได้ให้บริการโดยรวบรวมเงินฝากจากสมาชิก พวกเขาสามารถบรรลุผลประโยชน์ของการเป็นเจ้าของ Masternode"; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "การสำรองข้อมูล"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "สำรองวลีรหัสผ่าน"; - /* A noun. Used as a title. */ "Backup Wallet" = "Wallet สำรอง"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "สำรองข้อมูลรหัสผ่านของคุณเพื่อสร้างบัญชี CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "สำรองวลีการกู้คืนของคุณ"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "ยอดคงเหลือ"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "ยอดคงเหลือหลังจากนี้"; -/* CrowdNode */ -"Balance On CrowdNode" = "ยอดคงเหลือบน CrowdNode"; - -/* CrowdNode */ -"Balance: " = "ยอดคงเหลือ: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "ยอดคงเหลือและการโอนไม่ปรากฏต่อสาธารณะ"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "การโอนเงินผ่านทางธนาคาร "; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "เป็นส่วนหนึ่งของ Dash มาสเตอร์โหนด กับ CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "ปิดและแจ้งเมื่อเสร็จแล้ว"; - /* No comment provided by engineer. */ "Close App" = "ปิดแอพพลิเคชั่น"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "เชื่อมต่อแล้ว"; -/* CrowdNode */ -"Connected Dash address" = "ที่อยู่ Dash ที่เชื่อมต่อ"; - /* SPV sync */ "Connected peers" = "พีร์ที่เชื่อมต่ออยู่"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "กำหนดชื่อผู้ใช้"; -/* CrowdNode */ -"Create Account" = "สร้างบัญชี"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "สร้างบัญชี CrowdNode ออนไลน์"; - /* No comment provided by engineer. */ "Create invitation" = "สร้างคำเชิญ"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "สร้างบัญชีออนไลน์"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "เครดิต"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "ผลประโยชน์ของ CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "ฝ่ายสนับสนุน CrowdNode "; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode ใช้ที่อยู่นี้เป็นรหัสบัญชีของคุณ คุณจะสูญเสียการเข้าถึงเงินทุนของคุณภายในกระเป๋าเงินนี้และบัญชี CrowdNode ของคุณหากคุณสูญเสียวลีรหัสผ่านที่เกี่ยวข้องกับที่อยู่นี้"; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "ข้อจำกัดการถอน CrowdNode "; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "ส่งออก CSV "; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "APY ปัจจุบัน = %@"; - -/* CrowdNode */ -"Current APY is %@" = "APY ปัจจุบัน คือ %@"; - /* Explore Dash: Filters */ "Current location" = "สถานที่ปัจจุบัน"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "ที่อยู่ Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "ที่อยู่ Dash ที่กำหนดไว้สำหรับบัญชี CrowdNode ของคุณในกระเป๋าเงิน Dash บนอุปกรณ์นี้"; - /* No comment provided by engineer. */ "Dash balance" = "ยอดคงเหลือ Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "วันที่"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "ปฏิเสธแล้ว"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "เงินฝาก"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "ฝาก %@ เพื่อเริ่มรับรายได้"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "ฝากอย่างน้อย %@ Dash บนกระเป๋า Dash ของคุณเพื่อการถอน"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "ฝากอย่างน้อย %@ เพื่อเริ่มรับรายได้"; - -/* CrowdNode */ -"Deposit sent" = "ส่งเงินฝากแล้ว"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "เส้นทางการอนุพันธ์"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "กำลังทิ้ง…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "เนื่องจากเงื่อนไขการใช้บริการของ CrowdNode สามารถถอนได้ไม่เกิน:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "ตัวอย่างเช่น johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "คำเชิญแต่ละครั้งจะได้รับเงินทุนด้วยจำนวนเงินนี้เพื่อให้ผู้รับสามารถสร้างชื่อผู้ใช้ของพวกเขาได้อย่างรวดเร็วบนเครือข่าย Dash"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "ก่อน"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = " Stake Dash ได้อย่างง่ายดายและได้รับรายได้แบบ passive income ด้วยการคลิกง่ายๆ"; - /* SPV diagnostics */ "Edit birth height" = "แก้ไขความสูงเริ่มต้น"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "ตัวอย่างเช่น: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "อีเมล"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "เงินฝากครั้งแรกควรมากกว่า %@"; - -/* CrowdNode */ -"First minimum deposit" = "ฝากขั้นต่ำครั้งแรก"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "จาก CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "จากกระเป๋าเงิน Dash "; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "ย้ายเงินแล้ว"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "รับรางวัลจากเงินฝากใน Dash มาสเตอร์โหนดที่มีเพียง 0.5 Dash"; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "เตรียมพร้อมเข้าร่วม DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "รับรางวัลทันที"; - /* No comment provided by engineer. */ "Get Started" = "เริ่มต้น"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "รับชื่อผู้ใช้ของคุณ"; -/* CrowdNode */ -"Getting started with CrowdNode" = "เริ่มต้นใช้งาน CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "บัตรของขวัญ"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "ไปที่เว็บไซต์ CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "ไปยังเว็บไซต์"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "ความสูง %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "นี่คือที่อยู่ Dash ที่กำหนดไว้สำหรับบัญชี CrowdNode ของคุณในกระเป๋าเงิน Dash บนอุปกรณ์นี้"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "การ staking CrowdNode ทำงานอย่างไร"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "ฉันจะรับ Test Dash ได้อย่างไร?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay เป็นส่วนตัวแค่ไหน"; -/* CrowdNode */ -"How to confirm your API Dash address" = "วิธียืนยันที่อยู่ API Dash ของคุณ"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "ฉันยอมรับที่ฉันจะสูญเสียเหรียญของฉันถ้าฉันไม่มีวลีกู้คืน"; -/* CrowdNode */ -"I agree to CrowdNode" = "ฉันเห็นด้วยกับ CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "หากคุณสูญเสียวลีรหัสผ่านคุณสามารถยืยยันตัวตนด้วยวิธีอื่นเพื่อให้สามารถเข้าถึงเงินทุน CrowdNode ของคุณได้"; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "หากคุณสูญเสียวลีรหัสผ่านสำหรับกระเป๋าเงินนี้และสูญเสียอุปกรณ์นี้หรือถอนการติดตั้งกระเป๋าเงิน Dash คุณจะสูญเสียการเข้าถึงเงินทุนของคุณใน CrowdNode และเงินทุนภายในกระเป๋าเงินนี้"; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "ถ้าคุณยังต้องการกำจัด กรุณาใส่: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "ในกรณีที่มีการถอนเงินจำนวนมาก CrowdNode จะจ่ายเงินถอนออกภายในสองสัปดาห์ นี่เป็นเพราะโปรโตคอลความปลอดภัยและส่วนใหญ่มักจะได้รับการจัดการเร็วกว่ามาก"; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "ในกรณีที่คุณทำรหัสผ่านหาย คุณจะสูญเสียสิทธิ์ในการใช้ชื่อผู้ใช้ที่คุณร้องขอ"; -/* CrowdNode Portal */ -"In process…" = "อยู่ในระหว่างการดำเนินงาน…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "ข้อมูลเกี่ยวกับบัญชีออนไลน์ของคุณ"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "ย้ายไปภายในแล้ว"; -/* CrowdNode */ -"Introducing Staking" = "แนะนำ Staking"; - /* Invalid transaction */ "Invalid" = "ไม่ถูกต้อง"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "ที่อยู่ Dash ไม่ถูกต้อง"; -/* CrowdNode Online */ -"Invalid Email" = "อีเมลไม่ถูกต้อง"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "อาจใช้เวลาสักครู่เพื่ออัปเดตยอดคงเหลือของคุณ"; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "อาจใช้เวลาสักครู่เพื่อให้เงินทุนของคุณมาถึง"; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "เข้าร่วมตอนนี้"; -/* CrowdNode */ -"Joining the pool" = "เข้าร่วม pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "เก็บเหรียญเหล่านี้ไว้เป็นส่วนตัว มีค่าธรรมเนียมเครือข่ายและค่าธรรมเนียมความเป็นส่วนตัว"; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "ออกจาก pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "ให้ผู้ใช้ Dash Wallet คนอื่นสแกนโค้ดนี้เพื่อเพิ่มคุณเป็นผู้ติดต่อ"; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "เชื่อมต่อบัญชี Coinbase ของคุณ "; -/* CrowdNode */ -"Link Existing Account" = "ลิงก์บัญชีที่มีอยู่"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "ลิงก์บัญชี CrowdNode ที่มีอยู่"; - /* No comment provided by engineer. */ "Link Uphold Account" = "เชื่อมบัญชี Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "ลงชื่อเข้าใช้ CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "ดูเหมือนว่าคุณกำลังล้างกระเป๋าเงินของคุณ"; - /* adjective, security level */ "Low" = "ต่ำ"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "ปานกลาง"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "สมาชิกมีอิสระที่จะออกจาก pool และมักจะออกไปทันที"; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "ไม่มีธุรกรรมที่ยังไม่ยืนยันให้ทิ้ง"; -/* CrowdNode */ -"New CrowdNode Account" = "บัญชี CrowdNode ใหม่"; - /* Voting */ "New to old" = "ใหม่ไปเก่า"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "ออนไลน์"; -/* CrowdNode Portal */ -"Online Account" = "บัญชีออนไลน์"; - /* Online Merchant */ "Online Merchant" = "ร้านค้าออนไลน์"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "การชำระเงินกับผู้ติดต่อแต่ละรายจะถูกจัดรวมไว้ที่เดียว พร้อมชื่อและโปรไฟล์แทนธุรกรรมดิบ"; -/* CrowdNode */ /* Masternodes */ "Payout address" = "ที่อยู่รับเงิน"; -/* CrowdNode */ -"Payout Options" = "ตัวเลือกการจ่ายเงิน"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "ต่อ 24 ชั่วโมง"; - -/* CrowdNode */ -"per hour" = "ต่อชั่วโมง"; - -/* CrowdNode */ -"per transaction" = "ต่อธุรกรรม"; - /* Usernames */ "Personalise profile" = "ปรับแต่งโปรไฟล์"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "โปรดไปที่บัญชี Uphold ของคุณเพื่อยืนยันตัวตนของคุณ"; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "โปรดทราบว่าอีเมลที่ไม่ได้รับการบันทึกโดยกระเป๋าเงิน Dash และจะถูกส่งไปยัง CrowdNode เท่านั้น"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "โปรดทราบว่าคุณจะไม่สามารถถอนเงินจาก CowdNode ไปยังกระเป๋าเงินนี้ได้จนกว่าคุณจะเพิ่มยอดคงเหลือเป็น%@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "โปรดวางมือถือของคุณใกล้กับอุปกรณ์ NFC"; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "กรุณารอสักครู่"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "โปรดรอจนกว่ากระเป๋าเงินจะถูกซิงค์อย่างเต็มที่ก่อนที่จะส่งออกประวัติการทำธุรกรรมของคุณ"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "ที่อยู่ Dash หลัก"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "ข้อดี"; -/* CrowdNode Portal */ -"Protect your savings" = "ปกป้องเงินทุนของคุณ"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "โปรดอ่านนโยบายการถอนเงิน"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "อ่านอย่างเดียว"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "รับโดยตรงไปยังกระเป๋าเงิน Dash"; -/* CrowdNode */ -"Receive your share of rewards daily." = "รับส่วนแบ่งของรางวัลทุกวัน"; - /* Received transaction */ "Received" = "ได้รับ"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "ได้รับจาก %@"; -/* CrowdNode */ -"Receiving rewards" = "การรับรีวอร์ด"; - "Records your masternodes as having voted, without taking a side." = "บันทึกว่ามาสเตอร์โหนดของคุณได้โหวตแล้ว โดยไม่เข้าข้างฝ่ายใด"; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "ส่ง %@ จากที่อยู่หลักของ Dash ของคุณที่คุณใช้สำหรับบัญชี CrowdNode ของคุณในปัจจุบัน"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "ส่งคำเชิญ"; -/* Coinbase - CrowdNode */ -"Send Report" = "ส่งรายงาน"; - /* No comment provided by engineer. */ "Send to" = "ส่งไปยัง"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "กำลังส่งไปยัง"; -/* CrowdNode */ -"Sending to CrowdNode account" = "ส่งไปยังบัญชี CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "ส่งไปยังกระเป๋าเงิน Dash บนอุปกรณ์นี้"; - /* Buy Dash */ "Sending to:" = "ส่งไปที่:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "ตั้งค่า wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "แชร์"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "แสดง masternode keys"; -/* CrowdNode */ -"Show QR" = "แสดง QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "แสดงวลีกู้คืน"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "การลงทะเบียนผิดพลาด"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "ลงทะเบียนกับ CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "ลงทะเบียนเพื่อเสร็จสิ้นการตั้งค่าบัญชี"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "เริ่มหลังจากคุณเติมเงิน"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "ซิงค์กับกระเป๋าเงิน Dash ปัจจุบัน"; - /* No comment provided by engineer. */ "Syncing" = "กำลังซิงค์"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Dash Network ขับเคลื่อนโดย Masternodes จำนวนหนึ่งซึ่งเป็นส่วนสำคัญในการอำนวยความสะดวกในการชำระเงิน"; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash ถูกฝากเข้าบัญชี Coinbase ของคุณเรียบร้อยแล้ว แต่มีปัญหาในการโอนไปยังกระเป๋าเงิน Dash ของคุณบนอุปกรณ์นี้"; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "จ่ายไปยังที่อยู่นี้จากยอดคงเหลือ %@ ของคุณไม่ได้"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "ต้องใช้ PIN นี้เพื่อปลดล็อคแอพของคุณทุกครั้งที่ใช้"; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "QR นี้มีคำขอชำระเงินแล้ว %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "สิ่งนี้แสดงถึงอัตราผลตอบแทนร้อยละต่อปีปัจจุบันของมาสเตอรืโหนด เต็มน้อยกว่าค่าธรรมเนียม CrowdNode 15% แต่มันไม่ได้เป็นอัตราผลตอบแทนที่รับประกันได้และอาจเพิ่มขึ้นหรือลงตามขนาดของกลุ่ม CrowdNode และราคา Dash"; - "This still counts as your masternodes having voted in this contest." = "กรณีนี้ยังนับว่ามาสเตอร์โหนดของคุณได้โหวตในการชิงชื่อครั้งนี้แล้ว"; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "เพื่อกระเป๋า Dash บนอุปกรณ์นี้"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "ในการเริ่มการ stakingให้สร้างบัญชีบน CrowdNode หรือเชื่อมต่อกับบัญชีที่มีอยู่"; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "ไปยังที่อยู่ Dash ที่กำหนดไว้สำหรับบัญชี CrowdNode ของคุณในกระเป๋าเงิน Dash บนอุปกรณ์นี้"; - /* No comment provided by engineer. */ "Today" = "วันนี้"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "ประวัติการทำรายการ"; - /* Balance info sheet */ "Transaction history isn't available" = "ไม่มีประวัติธุรกรรมให้ใช้งาน"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "การโอนผิดพลาด"; - /* Coinbase */ "Transfer Failed" = "การโอนไม่สำเร็จ"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "คำเชิญถูกต้อง"; -/* CrowdNode Portal */ -"Validating address…" = "ตรวจสอบที่อยู่..."; - /* No comment provided by engineer. */ "Validating username failed" = "ตรวจสอบชื่อผู้ใช้ล้มเหลว"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "จำเป็นต้องมีการตรวจสอบ"; - /* Usernames */ "Verified during registration" = "ยืนยันแล้วระหว่างการลงทะเบียน"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "ตรวจสอบ"; -/* CrowdNode */ -"Verify your API Dash address" = "ตรวจสอบที่อยู่ API Dash ของคุณ"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "ยืนยันวลีกู้คืนของคุณเพื่อตั้ง PIN ใหม่"; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "สูงมาก"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Dash จำนวนน้อยมากจะถูกส่งไปและกลับจาก CrowdNode เพื่อตรวจสอบว่าคุณเป็นเจ้าของที่อยู่กระเป๋าเงินนี้"; - /* No comment provided by engineer. */ "View All" = "ดูทั้งหมด"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "การโหวต “%@” ปิดไปแล้ว รีเฟรชเพื่อดูผล"; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "รอจนกว่าบล็อกเชนจะถูกซิงค์อย่างเต็มที่ดังนั้นเราสามารถตรวจสอบประวัติการทำธุรกรรมของคุณ เยี่ยมชมเว็บไซต์ CrowdNode เพื่อเข้าสู่ระบบหรือลงทะเบียน"; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "รอจนกว่ากระเป๋าเงินจะถูกซิงค์เพื่อทำธุรกรรมให้เสร็จสมบูรณ์"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "เราไม่สามารถสร้างบัญชี CrowdNode ของคุณได้"; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "เราไม่สามารถฝากเงินไปยังบัญชี CrowdNode ของคุณได้"; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "เราไม่สามารถถอนตัวจากบัญชี CrowdNode ของคุณได้"; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "อัพเกรด"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "เราจะตรวจสอบการทำธุรกรรมนี้โดยอัตโนมัติและโอนจำนวนเท่ากันไปยังบัญชี CrowdNode ของคุณ หลังจากนั้นคุณจะสามารถฝากเงินและการถอนในกระเป๋าเงิน Dash บนอุปกรณ์นี้"; - /* Website */ "Website" = "เว็บไซต์"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "ระหว่างที่การโหวตดำเนินอยู่ คุณยังไม่มีชื่อผู้ใช้ ลงทะเบียนชื่อผู้ใช้ที่ไม่มีการแข่งขันตอนนี้ — ชื่อนั้นจะเป็นของคุณ และหากการโหวตมอบ “%@” ให้คุณ ผู้อื่นจะติดต่อคุณได้ทั้งสองชื่อผู้ใช้"; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "ทำไมฉันถึงเห็นธุรกรรมเหล่านี้ทั้งหมด?"; -/* CrowdNode */ -"Why do you need an online account?" = "ทำไมคุณถึงต้องการบัญชีออนไลน์?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "ทำไมฉันจึงไม่ควรใช้การบันทึกภาพหน้าจอ"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "กับ Dash Blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "ถอนเงิน"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "ถอนโดยไม่จำกัดด้วยบัญชีออนไลน์บนเว็บไซต์ CrowdNode"; - -/* CrowdNode */ -"Withdrawal requested" = "ขอถอนเงิน"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "ถอนยอดคงเหลือทั้งหมด"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "คุณสามารถเปลี่ยนวิธีการที่คุณได้รับจากรายได้จากรางวัลของคุณ"; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "คุณสามารถดูข้อมูลโดยละเอียดเกี่ยวกับเงินฝากการถอนและรางวัลของคุณ"; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "คุณสามารถระบุ URL ใด ๆ ที่เปิดเผยต่อสาธารณะบนอินเทอร์เน็ตเพื่อให้ผู้ใช้รายอื่นสามารถดูได้ในเครือข่าย Dash"; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "คุณป้อนรหัสที่ไม่ถูกต้อง"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "คุณมีเงินไม่เพียงพอที่จะดำเนินการต่อ"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "คุณต้องสำรองข้อมูลรหัสผ่านของคุณในกระเป๋าเงิน Dash"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "คุณต้องการอย่างน้อย %@ Dash เพื่อสร้างคำเชิญ"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "คุณต้องมีอย่างน้อย %@ บนกระเป๋า Dash ของคุณ"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "คุณต้องใช้เพียงแค่ %@ เพื่อเข้าร่วมใน pool"; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "คุณส่งคำขอการติดต่อไปยัง %@ แล้ว"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "คุณควรมียอดเงินคงเหลือบนกระเป๋าเงิน Dash มากกว่านี้"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "คุณต้องมีอย่างน้อย %@ เพื่อดำเนินการตรวจสอบ CrowdNode"; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "คุณจะได้รับ %@ Dash บนกระเป๋าของคุณบนอุปกรณ์นี้ โปรดทราบว่าอาจใช้เวลาสูงสุด 2-3 นาทีในการโอน"; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "คุณจะได้รับการชำระเงินแบบเศษส่วนโดยอัตโนมัติและโดยค่าเริ่มต้นจะถูกนำกลับมาลงทุนใหม่อย่างไรก็ตามมันเป็นเรื่องง่ายที่จะตั้งค่าการถอนอัตโนมัติเพื่อรับการจ่ายเงินที่เกิดขึ้นซ้ำ"; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "บัญชี CrowdNode ของคุณกำลังสร้าง ..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "บัญชี CrowdNode ของคุณถูกตั้งค่าและพร้อมใช้งาน!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "บัญชี CrowdNode ของคุณถูกสร้างขึ้นโดยใช้ธุรกรรมเหล่านี้"; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "ที่อยู่ CrowdNode ของคุณได้รับการยืนยันแล้ว"; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "ที่อยู่ CrowdNode ของคุณได้รับการตรวจสอบแล้ว แต่ยังจำเป็นต้องมีการตรวจสอบ"; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = " ชื่อผู้ใช้ DashPay ของคุณคือพร้อมใช้งาน"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "ได้รับเงินฝากของคุณไปยัง CrowdNode"; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "ที่อยู่หลัก Dash ของคุณที่คุณใช้สำหรับบัญชี CrowdNode ของคุณในปัจจุบัน"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "ยอดคงเหลือส่วนตัวของคุณ จำนวนเงินและที่อยู่ถูกเข้ารหัสบนเชน สินทรัพย์และประวัติของคุณจึงเป็นความลับ"; diff --git a/DashWallet/tr.lproj/Localizable.strings b/DashWallet/tr.lproj/Localizable.strings index ec0e50942c..5362a5fd66 100644 --- a/DashWallet/tr.lproj/Localizable.strings +++ b/DashWallet/tr.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " veya "; -/* CrowdNode */ -" Privacy Policy " = "Gizlilik Politikası"; - -/* CrowdNode */ -" Terms of Use " = "Kullanım Şartları"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ %2$@ DASH karşılığında satışa çıkarıldı"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Cüzdanınızın korunması için bir cihaz şifresi gerekmektedir. Devam etmek için Ayarlar'dan şifreyi etkinleştirin."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Bir Ana Düğüm teminat olarak 1000 Dash'a ihtiyaç duyar ve her Ana Düğüm şu anda yılda yaklaşık %@ ödüllendirilir."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Kullanım Koşullarını Kabul Et"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Kullanım şartlarını kabul etmek…"; - -/* CrowdNode */ -"Account Recovery" = "Hesap Kurtarma"; - /* Masternode status */ "Active" = "Etkin"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Bu cihazdan CrowdNode'a yapılan tüm gönderiler, aşağıdaki Dash adresi ile gerçekleştirilecektir."; - /* ZenLedger */ "Allow" = "İzin ver"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "ve"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Çoğu insanın elinde 1000 Dash bulunmadığından Crowdnode üyelerinden gelen yatırma işlemlerini bir havuzda toplayarak ana düğüm sahibi olmanın avantajlarından yararlanabilecekleri bir hizmet sunmuştur."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Yedekle"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Parolayı Yedekle"; - /* A noun. Used as a title. */ "Backup Wallet" = "Cüzdanı Yedekle"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "CrowdNode hesabı oluşturmak için parolanızı yedekleyin"; - /* Back up wallet */ "Backup your recovery phrase" = "Kurtarma sözcük grubunu yedekle"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Bakiye"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Sonraki bakiye"; -/* CrowdNode */ -"Balance On CrowdNode" = "CrowdNode'daki Bakiye"; - -/* CrowdNode */ -"Balance: " = "Bakiye:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Bakiyeler ve transferler herkese açık değildir"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Banka Havalesi"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "CrowdNode ile Dash Masternode'un parçası olun"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Kapat ve bittiğinde haber ver"; - /* No comment provided by engineer. */ "Close App" = "Uygulamayı kapat"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Bağlandı"; -/* CrowdNode */ -"Connected Dash address" = "Bağlantılı Dash adresleri"; - /* SPV sync */ "Connected peers" = "Bağlı eşler"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Kullanıcı adı oluştur"; -/* CrowdNode */ -"Create Account" = "Hesab Oluştur"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Çevrimiçi bir CrowdNode hesabı oluşturun"; - /* No comment provided by engineer. */ "Create invitation" = "Davetiye oluştur"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Çevrimiçi Hesap Oluştur"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Krediler"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode avantajları"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Desteği"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode, bu adresi hesap kimliğiniz olarak kullanır. Bu adresle ilişkili parolayı kaybederseniz, bu cüzdandaki ve CrowdNode hesabınızdaki paranıza erişiminizi kaybedersiniz."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode para çekme limitleri"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Dışa Aktarma"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Mevcut YFG = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Mevcut YFG %@"; - /* Explore Dash: Filters */ "Current location" = "Mevcut konum"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "dash adresi"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Bu cihazdaki Dash Cüzdanında CrowdNode hesabınız için belirlenen Dash adresi"; - /* No comment provided by engineer. */ "Dash balance" = "Dash bakiyesi"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Tarih"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Reddedildi"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Para Yatır"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Kazanmaya başlamak için %@ yatırın"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Para çekme işlemini tamamlamak için Dash Cüzdanınıza en az %@ Dash yatırın"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Kazanmaya başlamak için en az %@ yatırın"; - -/* CrowdNode */ -"Deposit sent" = "Para yatırma işleminiz gönderildi"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Türetme yolu"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Atılıyor…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "CrowdNode'un hizmet koşulları nedeniyle, kullanıcılar aşağıdakilerden daha fazlasını çekemez:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Yasal kısıtlamalar nedeniyle Birleşik Krallık'ta olmadığınızı doğrulamamız gerekiyor. Konumunuzu yalnızca Coinbase özelliklerine girdiğinizde kontrol ederiz."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "Örneğin. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Her davetiye, alıcının Dash Ağında kullanıcı adını hızlı bir şekilde oluşturabilmesi için bu tutarla finanse edilecektir."; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Önceki"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Dash'i kolayca stake edin ve birkaç basit tıklamayla pasif gelir elde edin."; - /* SPV diagnostics */ "Edit birth height" = "Başlangıç yüksekliğini düzenle"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "örneğin: mehmetali"; -/* CrowdNode */ +/* DashSpend */ "Email" = "E-Posta"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "İlk yatırılan para %@ değerinden fazla olmalıdır"; - -/* CrowdNode */ -"First minimum deposit" = "İlk minimum depozito"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "CrowdNode'dan"; - -/* from Dash Wallet */ -"from Dash Wallet" = "Dash Cüzdanından"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Fonlar taşındı"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "0,5 Dash gibi küçük bir miktar ile Dash Masternode'da para yatırma işlemlerinden ödüller kazanın."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "DashPay'e katılmaya hazırlanın"; -/* CrowdNode */ -"Get Rewards Instantly" = "Anında Ödül Kazanın"; - /* No comment provided by engineer. */ "Get Started" = "Başla"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Kullanıcı adınızı alın"; -/* CrowdNode */ -"Getting started with CrowdNode" = "CrowdNode'a başlayın"; - /* No comment provided by engineer. */ "Gift card" = "Hediye Kartı"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "CrowdNode web sitesine gidin"; - /* No comment provided by engineer. */ "Go to Website" = "İnternet sitesine git"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Yükseklik %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Bu cihazdaki Dash Cüzdanında CrowdNode hesabınız için belirlenmiş bir Dash adresi"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "CrowdNode staking nasıl çalışır?"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Test Dash'ı nasıl edinebilirim?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay ne kadar özel?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "API Dash adresinizi nasıl onaylarsınız?"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Eğer kurtarma metnime sahip olmazsam paralarımı kaybedeceğimi kabul ediyorum"; -/* CrowdNode */ -"I agree to CrowdNode" = "CrowdNode'u kabul ediyorum"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Daha sonra izin vermeyi seçerseniz ve Birleşik Krallık'ta değilseniz Coinbase'i kullanabilirsiniz."; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Parolanızı kaybederseniz, CrowdNode fonlarınıza yeniden erişim kazanmak için kimliğinizi çeşitli yollarla doğrulayabilirsiniz."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "Bu cüzdan için parolanızı kaybederseniz ve bu cihazı kaybederseniz veya Dash Cüzdanını kaldırırsanız, CrowdNode'daki fonlarınıza ve bu cüzdandaki fonlara erişiminizi kaybedersiniz."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Eğer hala sıfırlamak istiyorsanız lütfen şu metni girin: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "Yüksek miktarlı para çekme işlemlerinde CrowdNode para çekme işlemlerini iki hafta içinde ödeyecektir. Bunun nedeni güvenlik protokolleridir ve çoğu zaman hızlı bir şekilde çözülür."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Parolanızı kaybetmeniz durumunda, istediğiniz kullanıcı adı hakkını kaybedersiniz."; -/* CrowdNode Portal */ -"In process…" = "İşlemde…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Çevrimiçi hesabınızla ilgili bilgiler"; - /* Buy Sell Portal */ "Initializing" = "Başlatılıyor"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Dahili olarak taşındı"; -/* CrowdNode */ -"Introducing Staking" = "Staking'e Giriş"; - /* Invalid transaction */ "Invalid" = "Geçersiz"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Geçersiz Dash adresi"; -/* CrowdNode Online */ -"Invalid Email" = "Geçersiz e-posta"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Bakiyenizin güncellenmesi birkaç dakika sürebilir."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Paranızın yatması birkaç dakika sürebilir."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Şimdi Katıl"; -/* CrowdNode */ -"Joining the pool" = "Havuza katılmak"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Bu coinleri özel tutun. Ağ ve gizlilik ücretleri geçerlidir."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Havuzdan ayrılmak"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Sizi kişi olarak eklemesi için başka bir Dash Wallet kullanıcısının bu kodu taramasına izin verin."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Coinbase Hesabını Bağla"; -/* CrowdNode */ -"Link Existing Account" = "Mevcut Hesabı Bağla"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Mevcut CrowdNode Hesabını Bağla"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Uphold Hesabını Bağla"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "CrowdNode'da oturum açın"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Dash Cüzdanınızı boşaltıyor gibisiniz"; - /* adjective, security level */ "Low" = "Düşük"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Orta"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Üyeler havuzdan istedikleri zaman ayrılabilme özgürlüğüne sahiplerdir."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Atılacak onaylanmamış işlem yok."; -/* CrowdNode */ -"New CrowdNode Account" = "Yeni CrowdNode Hesabı"; - /* Voting */ "New to old" = "Yeniden eskiye"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Çevrimiçi"; -/* CrowdNode Portal */ -"Online Account" = "Çevrimiçi Hesap"; - /* Online Merchant */ "Online Merchant" = "Çevrimiçi Tüccar"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Her kişiyle yapılan ödemeler tek bir yerde toplanır; ham işlemler yerine adlar ve profiller görünür."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Ödeme adresi"; -/* CrowdNode */ -"Payout Options" = "Ödeme Seçenekleri"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "24 saatte"; - -/* CrowdNode */ -"per hour" = "saat başına"; - -/* CrowdNode */ -"per transaction" = "işlem başına"; - /* Usernames */ "Personalise profile" = "Profili kişiselleştir"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Kimliğinizi doğrulamak için lütfen Uphold hesabınıza gidin."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Lütfen e-postanın Dash Cüzdanı tarafından kaydedilmediğini ve yalnızca CrowdNode'a gönderildiğini unutmayın."; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Bakiyenizi %@ Dash'e yükseltene kadar CowdNode'dan bu cüzdana para çekemeyeceğinizi lütfen unutmayın."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Lütfen telefonunuzu bir NFC cihazının yakınına yerleştirin."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Lütfen bekleyin"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Bir sonraki para çekme işlemini başlatmadan önce lütfen bekleyin"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "İşlem geçmişinizi dışa aktarmadan önce lütfen cüzdanın tamamen senkronize edilmesini bekleyin."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Fiyatlar alınamadı. Fiat değerleri yanlış olabilir."; -/* CrowdNode */ -"Primary Dash address" = "Birincil Dash adresi"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Artıları"; -/* CrowdNode Portal */ -"Protect your savings" = "Birikimlerinizi koruyun"; - /* Usernames */ "Prove your identity" = "Kimliğinizi kanıtlayın"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Para Çekme Politikasını Okuyun"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Salt okunur"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Doğrudan Dash Cüzdan'a al"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Günlük ödül payınızı alın."; - /* Received transaction */ "Received" = "Alındı"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "%@ kişisinden alındı"; -/* CrowdNode */ -"Receiving rewards" = "Ödüller alınıyor"; - "Records your masternodes as having voted, without taking a side." = "Taraf tutmadan, anadüğümlerinizi oy vermiş olarak kaydeder."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Şu anda CrowdNode hesabınız için kullandığınız birincil Dash adresinizden %@ gönderin"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Davetiye gönder"; -/* Coinbase - CrowdNode */ -"Send Report" = "Rapor Gönder"; - /* No comment provided by engineer. */ "Send to" = "Gönder"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Şuraya gönderiliyor"; -/* CrowdNode */ -"Sending to CrowdNode account" = "CrowdNode hesabına gönderme"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Bu cihazdaki Dash Cüzdan'ına gönderiliyor"; - /* Buy Dash */ "Sending to:" = "Şuraya gönderiliyor:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Cüzdan Kurulumu"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Paylaş"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Anadüğüm Anahtarlarını Göster"; -/* CrowdNode */ -"Show QR" = "QR Göster"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Kurtarma Sözcük Grubunu Göster"; /* Alert title */ "Sign in required" = "Giriş gerekli"; -/* CrowdNode */ -"Sign up error" = "Kayıt hatası"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "CrowdNode'a Kaydolun"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Hesap kurulumunu tamamlamak için kaydolun"; - /* ZenLedger */ "Simplify your crypto taxes" = "Kripto vergilerinizi basitleştirin"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Fon ekledikten sonra başlar"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Mevcut Dash Cüzdanı ile senkronize edildi"; - /* No comment provided by engineer. */ "Syncing" = "Senkronize ediliyor"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Dash Ağı, ödemeleri kolaylaştırmanın önemli bir parçası olan bir dizi Ana Düğüm tarafından yönlendirilmektedir."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash başarıyla Coinbase hesabınıza yatırıldı. Fakat bu cihazdaki Dash Cüzdan'a aktarılırken bir sorun oluştu."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Bu adrese %@ bakiyenizden ödeme yapılamaz"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Bu PİN uygulamanın açılması için her zaman gerekecektir."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Bu QR zaten %@ için ödeme talebini içeriyor"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Bu, tam bir Ana Düğümün mevcut Yıllık Faiz Getirisini CrowdNode ücretinden %15 daha az temsil eder. Garantili bir getiri oranı değildir ve CrowdNode havuzlarının boyutuna ve Dash fiyatına bağlı olarak yukarı veya aşağı yönlü değişebilir."; - "This still counts as your masternodes having voted in this contest." = "Bu yine de anadüğümlerinizin bu çekişmede oy vermiş olması sayılır."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "bu cihazdaki Dash Cüzdan'ına"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Stake etmeye başlamak için CrowdNode'da bir hesap oluşturun veya mevcut bir hesaba bağlanın."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "bu cihazdaki Dash Cüzdanından CrowdNode hesabınız için belirlenen Dash adresine"; - /* No comment provided by engineer. */ "Today" = "Bugün"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "İşlem Geçmişi"; - /* Balance info sheet */ "Transaction history isn't available" = "İşlem geçmişi kullanılamıyor"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Aktarım Hatası"; - /* Coinbase */ "Transfer Failed" = "Aktarım Başarısız"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Geçerli davetiye"; -/* CrowdNode Portal */ -"Validating address…" = "Adres doğrulanıyor…"; - /* No comment provided by engineer. */ "Validating username failed" = "Kullanıcı adı doğrulanamadı"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Doğrulama Gerekli"; - /* Usernames */ "Verified during registration" = "Kayıt sırasında doğrulandı"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Onayla"; -/* CrowdNode */ -"Verify your API Dash address" = "API Dash adresinizi doğrulayın"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Yeni bir PIN belirlemek için kurtarma sözcük grubunuzu doğrulayın."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Çok Yüksek"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Bu cüzdan adresinin sahibi olduğunuzu doğrulamak için CrowdNode'a ve CrowdNode'dan çok küçük miktarlarda Dash gönderilecektir."; - /* No comment provided by engineer. */ "View All" = "Tümünü Gör"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "“%@” için oylama zaten kapandı. Sonucu görmek için yenileyin."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "İşlem geçmişinizi inceleyebilmemiz için zincir tamamen senkronize edilene kadar bekleyin."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Zincir tamamen senkronize olana kadar bekleyin, böylece işlem geçmişinizi gözden geçirebiliriz. Giriş yapmak veya kaydolmak için CrowdNode web sitesini ziyaret edin."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "İşlemi tamamlamak için cüzdan senkronize edilene kadar bekleyin"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "CrowdNode hesabınızı oluşturamadık."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "CrowdNode hesabınıza para yatıramadık."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "CrowdNode hesabınızdan para çekemedik."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "Yeni sürüme geçtik"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Bu işlemi otomatik olarak algılayacağız ve aynı tutarı CrowdNode hesabınıza aktaracağız. Bundan sonra, bu cihazda Dash Cüzdan'dan para yatırma ve çekme işlemi yapabileceksiniz."; - /* Website */ "Website" = "İnternet sitesi"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Oylama sürerken kullanıcı adınız olmaz. Şimdi tartışmasız bir kullanıcı adı kaydedin — o ad sizde kalır ve oylama size “%@” adını verirse her iki kullanıcı adıyla da ulaşılabilir olursunuz."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Neden tüm bu işlemleri görüyorum?"; -/* CrowdNode */ -"Why do you need an online account?" = "Neden çevrimiçi bir hesaba ihtiyacınız var?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Neden ekran görüntüsü almamalıyım?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "Dash blok zinciri ile"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Para Çek"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "CrowdNode web sitesinde çevrimiçi bir hesapla sınırsız para çekin."; - -/* CrowdNode */ -"Withdrawal requested" = "Para çekme isteği gönderildi"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Tüm bakiyeyi çeker"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Ödüllerinizin nasıl ve ne zaman ödeneceğini değiştirebilirsiniz."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Ödemeler için DashPay'i kullanmaya devam edebilirsiniz ancak kredi bakiyenizi doldurana kadar profilinizi güncelleyemez veya daha fazla kişi ekleyemezsiniz"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Para yatırma, çekme ve ödüllerinizin detaylı bilgileri görebilirsiniz."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Diğer kullanıcıların Dash ağında görebilmesi için internette herkese açık olan herhangi bir URL'yi belirtebilirsiniz."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Geçersiz bir anahtar girdiniz"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Devam etmek için yeterli bakiyeniz yok"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Dash Cüzdan'da parolanızı yedeklemeniz gerekir"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Davet oluşturmak için en az %@ Dash'e ihtiyacınız var"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "Dash Cüzdan'ınızda en az %@ olması gerekir"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Başka bir para çekme işlemine başlamadan önce 5 dakika beklemeniz gerekir"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Havuza katılmak için yalnızca %@'a ihtiyacınız var."; - /* DashSpend confirmation */ "You pay" = "Ödeyeceğiniz"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "%@ kişisine iletişim isteği gönderdiniz"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "Dash Cüzdan'da pozitif bir bakiyeniz olmalıdır"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "CrowdNode doğrulamasına devam etmek için en az %@'a sahip olmalısınız."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Bu cihazdaki Dash Cüzdan'ınızda %@ Dash alacaksınız. Bir transfer işleminin tamamlanmasının 2-3 dakika kadar sürebileceğini lütfen unutmayın."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Kısmı ödemeleri otomatik olarak alacaksınız ve bunlar yeniden yatırım için kullanılacak. Tekrarlayan ödemeleri almak için otomatik para çekme işlemlerini ayarlamak kolaydır."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Kredi bakiyeniz düşük"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "CrowdNode hesabınız oluşturuyor…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "CrowdNode hesabınız kuruldu ve kullanıma hazır!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "CrowdNode hesabınız bu işlemler kullanılarak oluşturulmuştur."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "CrowdNode adresiniz onaylandı."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "CrowdNode adresiniz onaylandı, ancak doğrulama gerekiyor."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "DashPay Kullanıcı Adınız kullanıma hazır"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "CrowdNode'a yaptığınız ödeme alındı."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Şu anda CrowdNode hesabınız için kullandığınız birincil Dash adresiniz"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Özel bakiyeniz. Tutarlar ve adresler zincir üzerinde şifrelenir, böylece varlıklarınız ve geçmişiniz gizli kalır."; diff --git a/DashWallet/uk.lproj/Localizable.strings b/DashWallet/uk.lproj/Localizable.strings index cc5999688c..31968f574b 100644 --- a/DashWallet/uk.lproj/Localizable.strings +++ b/DashWallet/uk.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " або "; -/* CrowdNode */ -" Privacy Policy " = "Політика конфіденційності"; - -/* CrowdNode */ -" Terms of Use " = "Правила користування"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ виставлено за %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Пароль пристрою потрібен для захисту вашого гаманця. Щоб продовжити, перейдіть до налаштувань і ввімкніть пароль."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "Мастернода потребує 1000 Dash як забезпечення, і кожна мастернода наразі отримує приблизно %@ на рік."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Прийняти положення \nта умови"; -/* CrowdNode */ -"Accept Terms Of Use" = "Прийняття умов використання"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Прийняття умов використання…"; - -/* CrowdNode */ -"Account Recovery" = "Відновлення Акаунта"; - /* Masternode status */ "Active" = "Активна"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "Усі вхідні та вихідні перекази CrowdNode на цьому пристрої будуть здійснюватися з адреси Dash, яка вказана нижче."; - /* ZenLedger */ "Allow" = "Дозволити"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "Виникла невідома помилка. Спробуйте ще раз пізніше."; -/* CrowdNode */ -"and" = "і"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Будь-яке ім’я користувача, яке містить цифру від 2-9, має понад 20 символів або містить дефіс, буде автоматично схвалене"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "Як власник майстерноди, ви можете голосувати за схвалення запитуваних імен користувачів, перш ніж користувачі зможуть їх створити.\nВи можете заблокувати створення імен користувачів, які вважаєте неприйнятними."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "Оскільки більшість людей не мають під рукою точно 1000 Dash, CrowdNode створив послугу, за допомогою якої вони, об’єднуючи депозити від учасників, можуть отримати переваги володіння Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Резервне копіювання"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Створити резервну копію фрази"; - /* A noun. Used as a title. */ "Backup Wallet" = "Резервна копія гаманця"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Створіть резервну копію фрази відновлення, щоб створити обліковий запис CrowdNode"; - /* Back up wallet */ "Backup your recovery phrase" = "Зробіть резервну копію фрази відновлення"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Баланс"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Баланс після"; -/* CrowdNode */ -"Balance On CrowdNode" = "Баланс на CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Баланс:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Баланси й перекази не видно публічно"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Банківський переказ"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Стань частиною Dash Мастерноди з CrowdNode"; - /* TimeSkew */ "behind" = "позаду"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Закрити і сповістити коли готово"; - /* No comment provided by engineer. */ "Close App" = "Закрити додаток"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Підключено"; -/* CrowdNode */ -"Connected Dash address" = "Підключена адреса Dash"; - /* SPV sync */ "Connected peers" = "Підключені піри"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Створити ім'я користувача"; -/* CrowdNode */ -"Create Account" = "Створити обліковий запис"; - /* Create DashSpend account */ "Create account" = "Створити аккаунт"; /* DashSpend account title */ "Create an account or log into an existing one" = "Створити аккаунт або увійти в існуючий"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Створити обліковий запис CrowdNode онлайн"; - /* No comment provided by engineer. */ "Create invitation" = "Створити запрошення"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Створити Онлайн Акаунт"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Кредити"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "Переваги CrowdNode"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Підтримка"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "Ця адреса використовується в CrowdNode як ваш ID. Якщо ви втратите кодову фразу, пов'язану з цим обліковим записом, ви втратите доступ до засобів усередині цього гаманця і цей обліковий запис на CrowdNode."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "Ліміти виведення з CrowdNode"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "Акаунт CrowdNode"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "Експорт CSV"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "Подарункові картки CTX"; -/* Crowdnode */ -"Current APY = %@" = "Поточний APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Поточний APY становить %@"; - /* Explore Dash: Filters */ "Current location" = "Поточне місцезнаходження"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Адреса Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Адреса Dash, призначена для вашого облікового запису CrowdNode у Dash Wallet на цьому пристрої"; - /* No comment provided by engineer. */ "Dash balance" = "Баланс Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Дата"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Заборонено"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Депозит"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Внесіть %@ щоб почати заробляти"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Внесіть принаймні %@ Dash на свій гаманець Dash Wallet, щоб завершити вивід"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Внесіть принаймні %@ щоб почати заробляти"; - -/* CrowdNode */ -"Deposit sent" = "Депозит відправлено"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Шлях деривації"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Відкидаємо…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Відповідно до умов обслуговування CrowdNode користувачі можуть знімати не більше ніж:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Через нормативні обмеження нам потрібно підтвердити, що ви не перебуваєте у Великобританії. Ми перевіряємо ваше місцезнаходження лише тоді, коли ви входите в функції Coinbase."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "В процессі голосування Dash Network вирішила призначити ім’я користувача '%@' комусь іншому . Спробуйте ще раз, попросивши інше ім’я користувача."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Кожне запрошення фінансуватиметься цією сумою, щоб одержувач міг швидко створити своє ім’я користувача в Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Раніше"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Застейкайте Dash і отримайте пасивний дохід за кілька кліків."; - /* SPV diagnostics */ "Edit birth height" = "Змінити початкову висоту"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "наприклад: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Електронна адреса"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "Перший депозит має бути більшим ніж %@"; - -/* CrowdNode */ -"First minimum deposit" = "Перший мінімальний депозит"; - /* DashSpend */ "Fixed amounts" = "Фіксовані суми"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "з CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "з Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Кошти переміщено"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Отримуйте нагороди від депозитів у Dash Мастерноди лише за 0,5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Готуйтеся приєднатися до DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Отримуйте винагороди миттєво"; - /* No comment provided by engineer. */ "Get Started" = "Почати"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Отримайте своє ім'я користувача"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Початок роботи з CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Подарункова карта"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Подарункова картка · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Перейти на веб-сайт CrowdNode"; - /* No comment provided by engineer. */ "Go to Website" = "Перейти на сайт"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Висота %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Ось адреса Dash, призначена для вашого облікового запису CrowdNode у Dash Wallet на цьому пристрої."; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Утримуйте будь-яку кнопку вище, щоб замінити її на потрібну вам функцію."; -/* CrowdNode */ -"How CrowdNode staking works" = "Як працює стейкінг у CrowdNode"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "Як мені отримати тестові Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "Наскільки приватний DashPay?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "Як підтвердити свою API Dash адресу"; - /* No comment provided by engineer. */ "How to use your gift card" = "Як використовувати вашу подарункову карту"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Я погоджуюся з тим, що втрачу свої монети, якщо більше не матиму фрази відновлення"; -/* CrowdNode */ -"I agree to CrowdNode" = "Я погоджуюсь з CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "Якщо ви вирішите надати дозволи пізніше та не перебуваєте у Великій Британії, ви можете скористатися Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "Якщо ви втратите свою кодову фразу, ви можете підтвердити себе іншими способами, щоб відновити доступ до своїх коштів CrowdNode."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "У випадку, якщо ви втратите кодову фразу від цього гаманця, втратите пристрій або видалите Dash Wallet, ви втратите доступ CrowdNode і коштів всередині цього гаманця."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Якщо ви все ще бажаєте видалити гаманець, будь ласка, введіть: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "У разі більших вилучень CrowdNode виплатить зняття протягом двох тижнів. Це пов’язано з їхніми протоколами безпеки, і найчастіше обробляється набагато швидше."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "Якщо ви втратите свою парольну фразу, ви втратите право на запрошене ім’я користувача."; -/* CrowdNode Portal */ -"In process…" = "В процесі..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Інформація про ваш онлайн-акаунт"; - /* Buy Sell Portal */ "Initializing" = "Ініціалізація"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Внутрішньо переміщено в"; -/* CrowdNode */ -"Introducing Staking" = "Введення в стейкінг"; - /* Invalid transaction */ "Invalid" = "Недійсний"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Неправильна Dash адреса"; -/* CrowdNode Online */ -"Invalid Email" = "Неправильна поштова адреса"; - /* No comment provided by engineer. */ "Invalid email or password." = "Недійсна електронна адреса або пароль."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Повідомлено про проблему"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "Це може зайняти близько хвилини, доки ваш баланс буде оновлено."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "Це може зайняти близько хвилини, доки кошти будуть зачислені."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Приєднатись зараз"; -/* CrowdNode */ -"Joining the pool" = "Приєднання до пула"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Зберегти ці монети приватними. Стягуються комісії мережі та за приватність."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Вихід з пула"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Дайте іншому користувачеві Dash Wallet відсканувати цей код, щоб додати вас до контактів."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Прив’яжіть обліковий запис Coinbase"; -/* CrowdNode */ -"Link Existing Account" = "Прив'язати Існуючий Обліковий Запис"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Прив'язати Існуючий Обліковий Запис CrowdNode"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Прив'язати акаунт Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Ввійти в CrowdNode"; - /* DashSpend */ "Log in to your account" = "Увійти в свій аккаунт"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Схоже ви спустошуєте свій гаманець"; - /* adjective, security level */ "Low" = "Низький"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Середній"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Учасники можуть вільно залишити пул і найчастіше можуть вийти негайно."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Немає непідтверджених транзакцій для відкидання."; -/* CrowdNode */ -"New CrowdNode Account" = "Новий акаунт CrowdNode"; - /* Voting */ "New to old" = "Від нового до старого"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Інтернет-магазин"; -/* CrowdNode Portal */ -"Online Account" = "Онлайн Акаунт"; - /* Online Merchant */ "Online Merchant" = "Інтернет-продавець"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Платежі з кожним контактом зібрані в одному місці — з іменами та профілями замість необроблених транзакцій."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Адреса виплати"; -/* CrowdNode */ -"Payout Options" = "Варіанти Виплат"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "за 24 години"; - -/* CrowdNode */ -"per hour" = "за годину"; - -/* CrowdNode */ -"per transaction" = "за транзакцію"; - /* Usernames */ "Personalise profile" = "Персоналізуйте профіль"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Будь ласка, зайдіть у свій обліковий запис Uphold для підтвердження особистості."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Майте на увазі, що електронна адреса не зберігається в Dash Wallet, а лише пересилається в CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Зверніть увагу, що ім’я користувача НЕ можна змінити після реєстрації."; /* Usernames */ "Please note that you will not be able to change it in future" = "Зверніть увагу, що ви не зможете змінити це в майбутньому"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Пам'ятайте, що ви не зможете вивести кошти з CrowdNode на цей гаманець, доки на балансі не буде хоча б %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Розташуйте телефон біля пристрою NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Будь ласка, зачекайте"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Будь ласка, зачекайте перш ніж починати наступне виведення"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Перш ніж експортувати історію транзакцій, зачекайте, доки гаманець повністю синхронізується."; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Ціни не отримано. Фіатні значення можуть бути неправильними."; -/* CrowdNode */ -"Primary Dash address" = "Основна Dash Адреса"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "Плюси"; -/* CrowdNode Portal */ -"Protect your savings" = "Захистіть свої заощадження"; - /* Usernames */ "Prove your identity" = "Підтвердьте свою особу"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Прочитати Політику виведення коштів"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Лише для читання"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Отримуйте безпосередньо в Dash Wallet."; -/* CrowdNode */ -"Receive your share of rewards daily." = "Отримуйте свою частину нагороди щоденно."; - /* Received transaction */ "Received" = "Отримано"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Отримано від %@"; -/* CrowdNode */ -"Receiving rewards" = "Отримання нагород"; - "Records your masternodes as having voted, without taking a side." = "Позначає ваші мастерноди як такі, що проголосували, не стаючи на чийсь бік."; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Надішліть %@ зі своєї основної адреси Dash, яку ви зараз використовуєте для свого облікового запису CrowdNode"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Відправити запрошення"; -/* Coinbase - CrowdNode */ -"Send Report" = "Надіслати Звіт"; - /* No comment provided by engineer. */ "Send to" = "Відправити"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "Надсилання на"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Відправляється на акаунт CrowdNode"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Відправляється на Dash Wallet на цьому пристрої"; - /* Buy Dash */ "Sending to:" = "Відправка:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Налаштувати гаманець"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Поділитися"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Показати ключі Мастернод"; -/* CrowdNode */ -"Show QR" = "Показати QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Показати фразу відновлення"; /* Alert title */ "Sign in required" = "Необхідно ввійти"; -/* CrowdNode */ -"Sign up error" = "Помилка реєстрації"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Реєстрація в CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Зареєструйтесь, щоб завершити налаштування облікового запису"; - /* ZenLedger */ "Simplify your crypto taxes" = "Спростіть податки на криптовалюту"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Стейкінг"; - /* Usernames */ "Starts after you add funds" = "Почнеться після поповнення"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Синхронізовано з Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Синхронізація"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "Мережа Dash повинна проголосувати за схвалення деяких імен користувачів перед їх створенням"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Dash Network Мастернодами, що є важливою частиною полегшення платежів."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash успішно внесено на ваш обліковий запис Coinbase. Але виникла проблема під час перенесення його в Dash Wallet на цьому пристрої."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "На цю адресу не можна платити з вашого балансу %@"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Цей PIN-код необхідний, щоб розблокувати вашу програму кожного разу, коли ви її використовуєте."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "Цей QR вже містить запит на оплату в розмірі %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "Це поточний річний відсоток прибутку повної Мастерноди мінус комісія CrowdNode у розмірі 15%. Це не гарантована норма прибутку, і вона може зростати або знижуватися залежно від розміру пулів CrowdNode і ціни Dash."; - "This still counts as your masternodes having voted in this contest." = "Це все одно зараховується як участь ваших мастернод у голосуванні в цьому спорі."; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "На Dash Wallet на цьому пристрої"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "Щоб почати стейкінг, створіть обліковий запис на CrowdNode або підключіться до існуючого."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "на адресу Dash, призначену для вашого облікового запису CrowdNode у Dash Wallet на цьому пристрої"; - /* No comment provided by engineer. */ "Today" = "Сьогодні"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Історія Транзакцій"; - /* Balance info sheet */ "Transaction history isn't available" = "Історія транзакцій недоступна"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Помилка передачі"; - /* Coinbase */ "Transfer Failed" = "Переказ не вдався"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "Дійсне запрошення"; -/* CrowdNode Portal */ -"Validating address…" = "Підтвердження адреси..."; - /* No comment provided by engineer. */ "Validating username failed" = "Ім'я користувача не підтверджено"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Потрібна Верифікація"; - /* Usernames */ "Verified during registration" = "Перевірено під час реєстрації"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "Підтвердити"; -/* CrowdNode */ -"Verify your API Dash address" = "Підтвердити свою API Dash адресу"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Підтвердьте фразу відновлення, щоб задати новий PIN."; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "Дуже високий"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Щоб переконатися, що ви дійсно власник цього гаманця, на рахунок CrowdNode будуть зараховані і списані невелика кількість Dash."; - /* No comment provided by engineer. */ "View All" = "Показати всі"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Голосування за «%@» вже закрито. Оновіть, щоб побачити результат."; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Зачекайте, доки ланцюжок буде повністю синхронізовано, щоб ми могли переглянути історію ваших транзакцій."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Дочекайтеся, поки блокчейн повністю синхронізується, щоб переглянути історію транзакцій. Відвідайте веб-сайт CrowdNode для входу або реєстрації."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Зачекайте, поки гаманець синхронізується, щоб завершити транзакцію"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "Не вдалося створити обліковий запис CrowdNode."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "Не вдалося внести депозит на рахунок CrowdNode."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "Не вдалося зняти кошти з вашого облікового запису CrowdNode."; - /* Explore */ "We have two types of merchants" = "У нас є два види продавців"; /* No comment provided by engineer. */ "We Upgraded" = "Ми оновились"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "Ми автоматично побачимо цю транзакцію і переведемо ту ж суму на ваш обліковий запис на CrowdNode. Після цього ви зможете вносити та виводити кошти в Dash Wallet на цьому пристрої."; - /* Website */ "Website" = "Веб-сайт"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Поки триває голосування, у вас немає імені користувача. Зареєструйте зараз неоспорюване ім'я — воно залишиться за вами, і якщо голосування присудить вам «%@», ви будете доступні за обома іменами користувача."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Чому я бачу всі ці транзакціїї?"; -/* CrowdNode */ -"Why do you need an online account?" = "Для чого потрібен онлайн акаунт?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Чому я не можу зробити скріншот?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "З блокчейном Dash"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Вивести"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Знімайте без обмежень за допомогою онлайн-облікового запису на веб-сайті CrowdNode."; - -/* CrowdNode */ -"Withdrawal requested" = "Запит на вивід коштів відправлено"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Виводить увесь баланс"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "Ви можете налаштувати, коли та яким чином отримаєте свою винагороду."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "Ви можете продовжувати використовувати DashPay для платежів, але ви не можете оновити свій профіль або додати більше контактів, доки не поповните кредитний баланс"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "Ви можете заплатити Dash на касі."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "Ви можете переглянути детальну інформацію про свої депозити, зняття коштів і доходи."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "Ви можете вказати будь-яку URL-адресу, загальнодоступну в Інтернеті, щоб інші користувачі могли бачити її в мережі Dash."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "Ви вже голосували за це ім'я користувача %ld разів. За це ім’я користувача можна віддати лише ще один голос."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "Ви ввели недійсний ключ"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "Недостатньо коштів для продовження"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "Вам необхідно створити резервну копію фрази відновлення Dash Wallet"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "Вам потрібно принаймні %@ Dash, щоб створити запрошення"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "На балансі Dash Wallet має бути хоча б %@"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "Вам потрібно мати більше %@ Dash, щоб створити це ім’я користувача"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "Вам потрібно увійти в DashSpend, щоб купувати подарункові картки."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "Вам потрібно зачекати 5 хвилин, перш ніж почати наступне виведення"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "Щоб приєднатися до пулу вам потрібно %@"; - /* DashSpend confirmation */ "You pay" = "Ви платите"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Ви надіслали запит на додавання до контактів %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "У вас повинен бути додатній баланс Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "Ви повинні мати принаймні %@ Dash, щоб продовжити верифікацію CrowdNode."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "Ви отримаєте %@ Dash на свій Dash гаманець на цьому пристрої. Зверніть увагу, що передача може тривати 2-3 хвилини."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "Ви отримуватимете дробові виплати автоматично, і за замовчуванням вони будуть реінвестовані, однак також легко налаштувати автоматичне зняття коштів для отримання регулярних виплат."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Ваш кредитний баланс низький"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Ваш обліковий запис CrowdNode створюється…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Ваш CrowdNode акаунт налаштований і готовий до використання"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Ваш обліковий запис CrowdNode було створено за допомогою цих транзакцій."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Вашу адресу CrowdNode підтверджено."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Вашу адресу CrowdNode підтверджено, але потрібна перевірка."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Ваше ім’я користувача DashPay готове до використання"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Ваш депозит на CrowdNode отримано."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Час вашого пристрою %1$@ в секундах %2$d. Ви не можете використовувати CoinJoin через цю різницю.\n\nЩоб використовувати CoinJoin, налаштування часу на вашому пристрої потрібно змінити на «Установити час автоматично»."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Ваша основна адреса Dash, яку ви зараз використовуєте для свого облікового запису CrowdNode"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Ваш приватний баланс. Суми й адреси зашифровано в ланцюжку, тож ваші кошти та історія залишаються конфіденційними."; diff --git a/DashWallet/vi.lproj/Localizable.strings b/DashWallet/vi.lproj/Localizable.strings index c0014de683..736d1289d5 100644 --- a/DashWallet/vi.lproj/Localizable.strings +++ b/DashWallet/vi.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " hoặc "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "Đã rao bán %1$@ với giá %2$@ DASH"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "Một mật khẩu cho thiết bị là cần thiết để bảo vệ ví của bạn. Hãy vào phần Settings và bật chế độ mật khẩu và tiếp tục."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "Đang hoạt động"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Sao lưu ví"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Số dư"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "Số dư sau đó"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "Số dư và các lần chuyển không hiển thị công khai"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Đóng ứng dụng"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "Peer đã kết nối"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "Tín dụng"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Địa chỉ Dash"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Số dư Dash"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Ngày"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "Đường dẫn dẫn xuất"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "Đang bỏ…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Trước đó"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "Sửa độ cao khởi đầu"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "ví dụ: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "Đã chuyển tiền"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "Sẵn sàng tham gia DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Bắt đầu"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Đến Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "Độ cao %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay riêng tư đến mức nào?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "Tôi chấp nhận rằng tôi sẽ mất các coin của mình nếu không còn sở hữu cụm từ phục hồi"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "Nếu bạn vẫn muốn xoá sách nó thì hãy nhập \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Được di chuyển nội bộ đến"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Không hợp lệ"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "Giữ số coin này ở dạng riêng tư. Có áp dụng phí mạng và phí riêng tư."; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "Hãy để một người dùng Dash Wallet khác quét mã này để thêm bạn làm liên hệ."; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Liên kết với tài khoản Uphold"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Thấp"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Trung bình"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "Không có giao dịch chưa xác nhận nào để bỏ."; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "Thanh toán với từng liên hệ được gom về một chỗ, hiển thị tên và hồ sơ thay vì giao dịch thô."; -/* CrowdNode */ /* Masternodes */ "Payout address" = "Địa chỉ nhận tiền"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "Hãy đặt điện thoại của bạn cạnh thiết bị NFC."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Vui lòng đợi"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "Ưu điểm"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "Chỉ đọc"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "Đã nhận"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "Nhận từ %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "Ghi nhận masternode của bạn đã bỏ phiếu, mà không nghiêng về bên nào."; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Gửi đến"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "Đang gửi tới"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Thiết lập ví"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Chia sẻ"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Hiển thị các khoá Masternode"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Hiển thị câu phục hồi"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "Bắt đầu sau khi bạn nạp tiền"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Đang đồng bộ"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "Không thể thanh toán địa chỉ này từ số dư %@ của bạn"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "Mã PIN này sẽ được hỏi để mở ứng dụng của bạn mỗi khi bạn sử dụng nó."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "Điều này vẫn được tính là masternode của bạn đã bỏ phiếu trong cuộc tranh chấp này."; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "Không có lịch sử giao dịch"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "Lời mời hợp lệ"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Kiểm tra tính hợp lệ của tên người dùng không thành công"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "Đã xác minh khi đăng ký"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Kiểm tra"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "Xác minh cụm từ phục hồi của bạn để đặt mã PIN mới."; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Rất cao"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "Xem tất cả"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "Cuộc bỏ phiếu cho “%@” đã đóng. Hãy làm mới để xem kết quả."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "Chúng tôi đã Nâng cấp"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "Bạn không có tên người dùng trong lúc cuộc bỏ phiếu đang diễn ra. Hãy đăng ký ngay một tên người dùng không bị tranh giành — tên đó là của bạn, và nếu cuộc bỏ phiếu trao “%@” cho bạn, mọi người sẽ liên hệ được với bạn qua cả hai tên người dùng."; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Tại sao tôi không nên chụp ảnh màn hình?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "với blockchain của Dash"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "Rút toàn bộ số dư"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "Bạn đã gửi yêu cầu liên hệ tới %@"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Tên người dùng DashPay của bạn đã sẵn sàng để sử dụng"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "Số dư riêng tư của bạn. Số tiền và địa chỉ được mã hoá trên chuỗi, nên tài sản và lịch sử của bạn vẫn được giữ kín."; diff --git a/DashWallet/zh-Hans.lproj/Localizable.strings b/DashWallet/zh-Hans.lproj/Localizable.strings index 849cdd0dc9..668f3127ee 100644 --- a/DashWallet/zh-Hans.lproj/Localizable.strings +++ b/DashWallet/zh-Hans.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " 或 "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ 已以 %2$@ DASH 挂牌"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "已激活"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "之后余额"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "余额和转账不会公开可见"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "已连接节点"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "积分"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "派生路径"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "正在丢弃…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "编辑起始区块高度"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "资金已转移"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "准备加入 DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "高度 %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay 的隐私性如何?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "我同意如果我丢失恢复密语,我会丢失我的达世币"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "如果您仍想清空钱包, 请输入:\"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "让这些币保持私密。将收取网络和隐私手续费。"; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "让另一位 Dash Wallet 用户扫描此二维码,即可把你加为联系人。"; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "没有可丢弃的未确认交易。"; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "与每位联系人的支付都汇集在一处,显示姓名和资料,而不是原始交易。"; -/* CrowdNode */ /* Masternodes */ "Payout address" = "收款地址"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "请将你的手机靠近NFC设备."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "优点"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "只读"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "收到"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "收自 %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "记录您的主节点已投票,但不偏向任何一方。"; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "发送至"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Share"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "在您添加资金后开始"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "无法从您的 %@ 余额向此地址付款"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "这仍会计为您的主节点已在此次争夺中投票。"; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "交易记录不可用"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "有效邀请"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "已在注册时验证"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "验证你的助记词以设置新的 PIN 码。"; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "查看全部"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "对“%@”的投票已经结束。请刷新以查看结果。"; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "投票进行期间你没有用户名。请立即注册一个无争议的用户名——它将一直归你所有;若投票把“%@”判给你,两个用户名都可以联系到你。"; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "提取全部余额"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "您已向 %@ 发送联系人请求"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "您的私密余额。金额和地址在链上均已加密,因此您的持有量和记录都保持机密。"; diff --git a/DashWallet/zh-Hant-TW.lproj/Localizable.strings b/DashWallet/zh-Hant-TW.lproj/Localizable.strings index cbdf2fcd79..fbad185aef 100644 --- a/DashWallet/zh-Hant-TW.lproj/Localizable.strings +++ b/DashWallet/zh-Hant-TW.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " 或 "; -/* CrowdNode */ -" Privacy Policy " = " Privacy Policy "; - -/* CrowdNode */ -" Terms of Use " = " Terms of Use "; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ 已以 %2$@ DASH 掛牌"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "Accept terms and\nconditions"; -/* CrowdNode */ -"Accept Terms Of Use" = "Accept Terms Of Use"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "Accepting terms of use…"; - -/* CrowdNode */ -"Account Recovery" = "Account Recovery"; - /* Masternode status */ "Active" = "已啟用"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device."; - /* ZenLedger */ "Allow" = "Allow"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "An unknown error occurred. Please try again later."; -/* CrowdNode */ -"and" = "and"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "Backup"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "Backup Passphrase"; - /* A noun. Used as a title. */ "Backup Wallet" = "Backup Wallet"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "Backup your passphrase to create a CrowdNode account"; - /* Back up wallet */ "Backup your recovery phrase" = "Backup your recovery phrase"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "Balance"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "之後餘額"; -/* CrowdNode */ -"Balance On CrowdNode" = "Balance On CrowdNode"; - -/* CrowdNode */ -"Balance: " = "Balance: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "餘額和轉帳不會公開可見"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "Bank Wire"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "Become part of a Dash Masternode with CrowdNode"; - /* TimeSkew */ "behind" = "behind"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "Close and notify when it’s done"; - /* No comment provided by engineer. */ "Close App" = "Close App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "Connected"; -/* CrowdNode */ -"Connected Dash address" = "Connected Dash address"; - /* SPV sync */ "Connected peers" = "已連線節點"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "Create a username"; -/* CrowdNode */ -"Create Account" = "Create Account"; - /* Create DashSpend account */ "Create account" = "Create account"; /* DashSpend account title */ "Create an account or log into an existing one" = "Create an account or log into an existing one"; -/* CrowdNode */ -"Create an online CrowdNode account" = "Create an online CrowdNode account"; - /* No comment provided by engineer. */ "Create invitation" = "Create invitation"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "Create Online Account"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "積分"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode benefits"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode Support"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode withdrawal limits"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · Account"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ DashWallet"; - /* No comment provided by engineer. */ "CSV Export" = "CSV Export"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX gift cards"; -/* Crowdnode */ -"Current APY = %@" = "Current APY = %@"; - -/* CrowdNode */ -"Current APY is %@" = "Current APY is %@"; - /* Explore Dash: Filters */ "Current location" = "Current location"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "Dash address"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "Dash address designated for your CrowdNode account in the Dash Wallet on this device "; - /* No comment provided by engineer. */ "Dash balance" = "Dash balance"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "DashWallet ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "Date"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "Denied"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "Deposit"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "Deposit %@ to start earning"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "Deposit at least %@ to start earning"; - -/* CrowdNode */ -"Deposit sent" = "Deposit sent"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "衍生路徑"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "正在捨棄…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "Due to CrowdNode’s terms of service users can withdraw no more than:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "e.g. johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "Earlier"; -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "Easily stake Dash and earn passive income with a few simple clicks."; - /* SPV diagnostics */ "Edit birth height" = "編輯起始區塊高度"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "eg: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "Email"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "First deposit should be more than %@"; - -/* CrowdNode */ -"First minimum deposit" = "First minimum deposit"; - /* DashSpend */ "Fixed amounts" = "Fixed amounts"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "from CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "from Dash Wallet"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "資金已轉移"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "準備加入 DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "Get Rewards Instantly"; - /* No comment provided by engineer. */ "Get Started" = "Get Started"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "Get your Username"; -/* CrowdNode */ -"Getting started with CrowdNode" = "Getting started with CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "Gift card"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "Gift card · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "Go to CrowdNode website"; - /* No comment provided by engineer. */ "Go to Website" = "Go to Website"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "高度 %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "Hold any button above to replace it with the function you need"; -/* CrowdNode */ -"How CrowdNode staking works" = "How CrowdNode staking works"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "How do I get Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay 的隱私性如何?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "How to confirm your API Dash address"; - /* No comment provided by engineer. */ "How to use your gift card" = "How to use your gift card"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "我同意如果我丟失恢復密語,我會丟失我的達世幣"; -/* CrowdNode */ -"I agree to CrowdNode" = "I agree to CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "如果你仍然想擦拭它,請輸入: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "In case you lose your passphrase you will lose your right to your requested username."; -/* CrowdNode Portal */ -"In process…" = "In process…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "Information about your online account"; - /* Buy Sell Portal */ "Initializing" = "Initializing"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "Internally moved to"; -/* CrowdNode */ -"Introducing Staking" = "Introducing Staking"; - /* Invalid transaction */ "Invalid" = "Invalid"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "Invalid Dash address"; -/* CrowdNode Online */ -"Invalid Email" = "Invalid Email"; - /* No comment provided by engineer. */ "Invalid email or password." = "Invalid email or password."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash Wallet: %@ Reported issue"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "It can take a minute for your balance to be updated."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "It can take a minute for your funds to arrive."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "Join Now"; -/* CrowdNode */ -"Joining the pool" = "Joining the pool"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "讓這些幣保持私密。將收取網絡與隱私費用。"; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "Leaving the pool"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "讓另一位 Dash Wallet 用戶掃描此 QR 碼,即可把你加為聯絡人。"; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "Link Coinbase Account"; -/* CrowdNode */ -"Link Existing Account" = "Link Existing Account"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "Link Existing CrowdNode Account"; - /* No comment provided by engineer. */ "Link Uphold Account" = "Link Uphold Account"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "Log in to CrowdNode"; - /* DashSpend */ "Log in to your account" = "Log in to your account"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "Looks like you are emptying your Dash Wallet"; - /* adjective, security level */ "Low" = "Low"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "Medium"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "Members are free to leave the pool and can most often leave immediately."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "沒有可捨棄的未確認交易。"; -/* CrowdNode */ -"New CrowdNode Account" = "New CrowdNode Account"; - /* Voting */ "New to old" = "New to old"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "Online"; -/* CrowdNode Portal */ -"Online Account" = "Online Account"; - /* Online Merchant */ "Online Merchant" = "Online Merchant"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "與每位聯絡人的支付都彙集在一處,顯示姓名和個人資料,而不是原始交易。"; -/* CrowdNode */ /* Masternodes */ "Payout address" = "收款位址"; -/* CrowdNode */ -"Payout Options" = "Payout Options"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "per 24 hours"; - -/* CrowdNode */ -"per hour" = "per hour"; - -/* CrowdNode */ -"per transaction" = "per transaction"; - /* Usernames */ "Personalise profile" = "Personalise profile"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "Please go to your Uphold account to verify your identity."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "Please note that the username can NOT be changed once it is registered."; /* Usernames */ "Please note that you will not be able to change it in future" = "Please note that you will not be able to change it in future"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "請將手機放在NFC設備附近。"; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "Please wait"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "Please wait before initiating the next withdrawal"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "Please wait until the wallet is fully synced before exporting your transaction history"; @@ -3319,9 +3082,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "Prices weren't retrieved. Fiat values may be incorrect."; -/* CrowdNode */ -"Primary Dash address" = "Primary Dash address"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3358,9 +3118,6 @@ /* Balance info sheet section */ "Pros" = "優點"; -/* CrowdNode Portal */ -"Protect your savings" = "Protect your savings"; - /* Usernames */ "Prove your identity" = "Prove your identity"; @@ -3424,9 +3181,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "Read Withdrawal Policy"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "唯讀"; @@ -3539,9 +3293,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "Receive directly into Dash Wallet"; -/* CrowdNode */ -"Receive your share of rewards daily." = "Receive your share of rewards daily."; - /* Received transaction */ "Received" = "己收到"; @@ -3557,9 +3308,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "收自 %@"; -/* CrowdNode */ -"Receiving rewards" = "Receiving rewards"; - "Records your masternodes as having voted, without taking a side." = "記錄您的主節點已投票,但不偏向任何一方。"; /* No comment provided by engineer. */ @@ -4410,9 +4158,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "Send %@ from your primary Dash address that you currently use for your CrowdNode account"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4425,10 +4170,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "Send Invitation"; -/* Coinbase - CrowdNode */ -"Send Report" = "Send Report"; - /* No comment provided by engineer. */ "Send to" = "Send to"; @@ -4510,12 +4251,6 @@ /* No comment provided by engineer. */ "Sending to" = "發送至"; -/* CrowdNode */ -"Sending to CrowdNode account" = "Sending to CrowdNode account"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "Sending to Dash Wallet on this device"; - /* Buy Dash */ "Sending to:" = "Sending to:"; @@ -4570,7 +4305,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "Setup Wallet"; -/* CrowdNode */ +/* Receive screen */ "Share" = "Share"; /* Receive screen */ @@ -4624,24 +4359,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "Show Masternode Keys"; -/* CrowdNode */ -"Show QR" = "Show QR"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "Show Recovery Phrase"; /* Alert title */ "Sign in required" = "Sign in required"; -/* CrowdNode */ -"Sign up error" = "Sign up error"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "Sign up to CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "Sign up to finish setting up account"; - /* ZenLedger */ "Simplify your crypto taxes" = "Simplify your crypto taxes"; @@ -4704,9 +4427,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "Staking"; - /* Usernames */ "Starts after you add funds" = "在您加入資金後開始"; @@ -4809,9 +4529,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "Synced with current Dash Wallet"; - /* No comment provided by engineer. */ "Syncing" = "Syncing"; @@ -4901,9 +4618,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "The Dash network has to vote to approve some usernames before they are created"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device."; @@ -5000,9 +4714,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "無法從您的 %@ 餘額向此位址付款"; @@ -5191,18 +4902,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "This PIN will be required to unlock your app every time when you use it."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "This QR already contains the payment request for %@"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price."; - "This still counts as your masternodes having voted in this contest." = "這仍會計為您的主節點已在此次爭奪中投票。"; /* Dash DEX / dex_error_allowance */ @@ -5247,12 +4952,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "to Dash Wallet on this device"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "To start staking, create an account on CrowdNode or connect to an existing one."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "to the Dash address designated for your CrowdNode account in the Dash Wallet on this device"; - /* No comment provided by engineer. */ "Today" = "Today"; @@ -5274,9 +4973,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "Transaction History"; - /* Balance info sheet */ "Transaction history isn't available" = "交易紀錄無法使用"; @@ -5300,9 +4996,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "Transfer Error"; - /* Coinbase */ "Transfer Failed" = "Transfer Failed"; @@ -5557,9 +5250,6 @@ /* DashPay Invitations */ "Valid invitation" = "有效邀請"; -/* CrowdNode Portal */ -"Validating address…" = "Validating address…"; - /* No comment provided by engineer. */ "Validating username failed" = "Validating username failed"; @@ -5569,9 +5259,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "Verification Required"; - /* Usernames */ "Verified during registration" = "已在註冊時驗證"; @@ -5584,9 +5271,6 @@ /* No comment provided by engineer. */ "Verify" = "Verify"; -/* CrowdNode */ -"Verify your API Dash address" = "Verify your API Dash address"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "驗證你的助記詞以設定新的 PIN 碼。"; @@ -5602,9 +5286,6 @@ /* adjective, security level */ "Very High" = "Very High"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address."; - /* No comment provided by engineer. */ "View All" = "檢視全部"; @@ -5690,15 +5371,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "對「%@」的投票已經結束。請重新整理以查看結果。"; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "Wait until the chain is fully synced, so we can review your transaction history."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "Wait until wallet is synced to complete the transaction"; @@ -5758,24 +5433,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "We couldn’t create your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "We couldn’t make a deposit to your CrowdNode account."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "We couldn’t withdraw from your CrowdNode account."; - /* Explore */ "We have two types of merchants" = "We have two types of merchants"; /* No comment provided by engineer. */ "We Upgraded" = "We Upgraded"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device."; - /* Website */ "Website" = "Website"; @@ -5829,12 +5492,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "投票進行期間你沒有用戶名稱。請立即註冊一個無爭議的用戶名稱——它將一直歸你所有;若投票把「%@」判給你,兩個用戶名稱都能聯絡到你。"; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "Why do I see all these transactions?"; -/* CrowdNode */ -"Why do you need an online account?" = "Why do you need an online account?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "Why I should not take a screenshot?"; @@ -5853,19 +5513,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "with Dash blockchain"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "Withdraw"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "Withdraw without limits with an online account on CrowdNode website."; - -/* CrowdNode */ -"Withdrawal requested" = "Withdrawal requested"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "提領全部餘額"; @@ -5931,9 +5584,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "You can change how / when your reward earnings are paid to you."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance"; @@ -5943,9 +5593,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "You can pay with Dash at the cashier."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "You can see detailed information about your deposits, withdrawals and reward earnings."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network."; @@ -5976,9 +5623,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "You have already voted for this username %ld times. You can only cast one more vote for this username."; @@ -5994,24 +5638,15 @@ /* Voting */ "You have entered an invalid key" = "You have entered an invalid key"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "You have insufficient funds to proceed"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "You have to backup your passphrase in Dash Wallet"; - /* No comment provided by engineer. */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "You need at least %@ Dash to create an invitation"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "You need at least %@ on your Dash Wallet"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "You need to have more %@ Dash to create this username"; @@ -6021,12 +5656,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "You need to sign in to DashSpend to purchase gift cards."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "You need to wait 5 minutes before initiating another withdrawal"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "You only need %@ to join the pool."; - /* DashSpend confirmation */ "You pay" = "You pay"; @@ -6042,12 +5671,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "您已向 %@ 發送聯繫請求"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "You should have a positive balance on Dash Wallet"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "You should have at least %@ to proceed with the CrowdNode verification."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6066,9 +5689,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6086,21 +5706,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "Your credit balance is low"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "Your CrowdNode account is creating…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "Your CrowdNode account is set up and ready to use!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "Your CrowdNode account was created using these transactions."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "Your CrowdNode address has been confirmed."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "Your CrowdNode address has been validated, but verification is required."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6125,9 +5730,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "Your DashPay Username is ready to use"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "Your deposit to CrowdNode is received."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "Your device time is %1$@ by %2$d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin."; @@ -6194,9 +5796,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "Your primary Dash address that you currently use for your CrowdNode account"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "您的私密餘額。金額和位址在鏈上均已加密,因此您的持有量和紀錄都保持機密。"; diff --git a/DashWallet/zh.lproj/Localizable.strings b/DashWallet/zh.lproj/Localizable.strings index 6951614deb..d7f74e8036 100644 --- a/DashWallet/zh.lproj/Localizable.strings +++ b/DashWallet/zh.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " 或 "; -/* CrowdNode */ -" Privacy Policy " = "隐私政策"; - -/* CrowdNode */ -" Terms of Use " = "使用条款"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ 已以 %2$@ DASH 挂牌"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "您需要一个密码来保护您的钱包. 请转到设置并打开密码再继续."; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "一个主节点需要 1000 Dash作为抵押, 每个主节点目前每年获得大约%@的奖励."; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "接受条款和\n条件"; -/* CrowdNode */ -"Accept Terms Of Use" = "接受使用条款"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "接受使用条款..."; - -/* CrowdNode */ -"Account Recovery" = "账号恢复"; - /* Masternode status */ "Active" = "已激活"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "从此设备与CrowdNode之间的所有来往交易都会使用此设备下方的Dash地址."; - /* ZenLedger */ "Allow" = "允许"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "发生了一个未知错误. 请稍后再试."; -/* CrowdNode */ -"and" = "和"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "任何超过20个字符且包含数字2-9, 或含有连字符的用户名将被自动批准"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "作为主节点持有者, 您可以投票批准被申请的用户名, 之后用户才能创建它.\n您如果觉得该用户名不妥也可以阻止创建."; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "由于大多数人手中没有 1000个 Dash, CrowdNode提供了一项服务, 他们通过汇集成员的存款来帮助成员获得主节点的收益."; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "备份"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "备份密码"; - /* A noun. Used as a title. */ "Backup Wallet" = "备份钱包"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "备份您的密码以创建CrowdNode账户"; - /* Back up wallet */ "Backup your recovery phrase" = "备份您的助记词"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "余额"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "之后余额"; -/* CrowdNode */ -"Balance On CrowdNode" = "CrowdNode 的余额"; - -/* CrowdNode */ -"Balance: " = "余额:"; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "余额和转账不会公开可见"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "电汇"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "通过CrowdNode成为Dash主节点的一部分"; - /* TimeSkew */ "behind" = "后面"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "完成后关闭并发送通知"; - /* No comment provided by engineer. */ "Close App" = "关闭App"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "已连接"; -/* CrowdNode */ -"Connected Dash address" = "连接的 Dash地址"; - /* SPV sync */ "Connected peers" = "已连接节点"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "创建一个用户名"; -/* CrowdNode */ -"Create Account" = "创建账户"; - /* Create DashSpend account */ "Create account" = "创建账户"; /* DashSpend account title */ "Create an account or log into an existing one" = "创建账户或登录现有账户"; -/* CrowdNode */ -"Create an online CrowdNode account" = "创建一个线上CrowdNode账户"; - /* No comment provided by engineer. */ "Create invitation" = "创建邀请"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "创建线上账户"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "积分"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode 的福利"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode帮助"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode使用此地址作为您的账户ID. 若您丢失了与此地址关联的密码, 您将无法访问此钱包和您CrowdNode账户中的资金."; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode 提款限额"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · 账户"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ Dash钱包"; - /* No comment provided by engineer. */ "CSV Export" = "导出CSV文件"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX 礼品卡"; -/* Crowdnode */ -"Current APY = %@" = "目前的年利率 = %@"; - -/* CrowdNode */ -"Current APY is %@" = "目前的年利率是%@"; - /* Explore Dash: Filters */ "Current location" = "当前位置"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "达世币地址"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "此设备上Dash钱包中为您的CrowdNode账户指定Dash地址"; - /* No comment provided by engineer. */ "Dash balance" = "Dash余额"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "Dash钱包 ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "日期"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "拒绝"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "存款"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "存入 %@ 来开始赚取收益"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "向您Dash钱包存储至少%@ Dash以完成提币"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "存入至少 %@ 来开始赚取收益"; - -/* CrowdNode */ -"Deposit sent" = "存款已发送"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "派生路径"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "正在丢弃…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "由于 CrowdNode的服务条款, 用户的提款额不能超过:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "由于法律限制, 我们需要验证您不在英国. 我们只会在您使用 Coinbase 功能时验证您的位置."; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "根据投票过程, Dash 网络决定将用户名 '%@' 分配给其他人. 请尝试申请其它用户名."; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "例 johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "每个邀请都将获得该金额的资助, 以便收款人可以在Dash网络上快速创建他们的用户名"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "先前的"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "只需点击几下, 即可轻松质押Dash并赚取被动收益."; - /* SPV diagnostics */ "Edit birth height" = "编辑起始区块高度"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "例: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "邮箱"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "首次存款应超过 %@"; - -/* CrowdNode */ -"First minimum deposit" = "首次最低存款"; - /* DashSpend */ "Fixed amounts" = "固定金额"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "来自CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "来自Dash钱包"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "资金已转移"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "仅需 0.5 Dash的存款即可从Dash主节点中获得奖励."; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "准备加入 DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "立即获得奖励"; - /* No comment provided by engineer. */ "Get Started" = "开始使用"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "获取您的用户名"; -/* CrowdNode */ -"Getting started with CrowdNode" = "开始使用CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "礼品卡"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "礼品卡 · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "访问CrowdNode网站"; - /* No comment provided by engineer. */ "Go to Website" = "进入网站"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "高度 %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "这是在此设备上的 Dash钱包中为您的 CrowdNode账户指定的 Dash地址"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "长按上方任意按钮将其替换为您需要的功能"; -/* CrowdNode */ -"How CrowdNode staking works" = "CrowdNode 质押的运作原理"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "我如何获得 Test Dash?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay 的隐私性如何?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "如何确认您的API Dash地址"; - /* No comment provided by engineer. */ "How to use your gift card" = "如何使用您的礼品卡"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "我同意如果我丢失助记词, 我会丢失我的Dash"; -/* CrowdNode */ -"I agree to CrowdNode" = "我同意 CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "如果您选择之后授予权限并且您不在英国, 您可以使用Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "如果您丢失了密码, 您可以通过其他方式验证自己以重新获得对您CrowdNode资金的访问权限."; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "如果您丢失此钱包的密码并丢失此设备或卸载Dash钱包, 您将无法访问CrowdNode上和此钱包中的资金."; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "如果您仍想清空钱包, 请输入: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "在提款额度较大的情况下, CrowdNode将在两周内支付该提款. 这是由于它们的安全协议, 并且通常处理得比这个时间要快."; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "如果您丢失了您的密码, 您将会失去您申请用户名的权力."; -/* CrowdNode Portal */ -"In process…" = "正在进行..."; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "有关您线上账户的信息"; - /* Buy Sell Portal */ "Initializing" = "正在初始化"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "内部移动至"; -/* CrowdNode */ -"Introducing Staking" = "介绍质押"; - /* Invalid transaction */ "Invalid" = "无效"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "无效的Dash地址"; -/* CrowdNode Online */ -"Invalid Email" = "无效的电子邮箱"; - /* No comment provided by engineer. */ "Invalid email or password." = "无效的电子邮箱或密码."; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS Dash 钱包: %@ 已报告的问题"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "您的余额可能需要一分钟后才能被更新."; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "您的资金可能需要一分钟后才能到账."; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "立刻加入"; -/* CrowdNode */ -"Joining the pool" = "加入资金池"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "让这些币保持私密。将收取网络和隐私手续费。"; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "离开资金池"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "让另一位 Dash Wallet 用户扫描此二维码,即可把你加为联系人。"; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "关联Coinbase账户"; -/* CrowdNode */ -"Link Existing Account" = "连接现有账户"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "连接现有的CrowdNode账户"; - /* No comment provided by engineer. */ "Link Uphold Account" = "关联Uphold账号"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "登录到CrowdNode"; - /* DashSpend */ "Log in to your account" = "登录您的账户"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "看起来您正在清空Dash钱包"; - /* adjective, security level */ "Low" = "低"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "中等"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "会员可以自由离开资金池, 并且通常可以立刻离开."; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "没有可丢弃的未确认交易。"; -/* CrowdNode */ -"New CrowdNode Account" = "新的CrowdNode账户"; - /* Voting */ "New to old" = "新到旧"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "线上"; -/* CrowdNode Portal */ -"Online Account" = "线上账户"; - /* Online Merchant */ "Online Merchant" = "在线商户"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "与每位联系人的支付都汇集在一处,显示姓名和资料,而不是原始交易。"; -/* CrowdNode */ /* Masternodes */ "Payout address" = "收款地址"; -/* CrowdNode */ -"Payout Options" = "支付选项"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "每24小时"; - -/* CrowdNode */ -"per hour" = "每小时"; - -/* CrowdNode */ -"per transaction" = "每笔交易"; - /* Usernames */ "Personalise profile" = "个性化的个人资料"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "请前往您的Uphold账户来验证您的身份."; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "请注意, Dash钱包不保存电子邮件, 仅发送至 CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "请注意用户名一旦注册, 便无法再更改."; /* Usernames */ "Please note that you will not be able to change it in future" = "请注意您在之后将无法进行修改"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "请注意, 您需要增加余额至 %@ Dash才能够从CrowdNode账户中提币到此钱包."; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "请将您的手机靠近NFC设备."; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "请稍等"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "请稍等片刻再开始下次提现"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "请等钱包完全同步后再导出您的交易记录"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "价格未被检索到. 法币价值或许错误."; -/* CrowdNode */ -"Primary Dash address" = "主要Dash地址"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "优点"; -/* CrowdNode Portal */ -"Protect your savings" = "保护您的存款"; - /* Usernames */ "Prove your identity" = "证明您的身份"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "阅读提款政策"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "只读"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "直接在Dash钱包上收款"; -/* CrowdNode */ -"Receive your share of rewards daily." = "每天接收属于您份额的奖励."; - /* Received transaction */ "Received" = "已接收"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "收自 %@"; -/* CrowdNode */ -"Receiving rewards" = "领取奖励"; - "Records your masternodes as having voted, without taking a side." = "记录您的主节点已投票,但不偏向任何一方。"; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "从您当前用于CrowdNode账户的Dash主地址发送%@"; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "发送邀请"; -/* Coinbase - CrowdNode */ -"Send Report" = "发送报告"; - /* No comment provided by engineer. */ "Send to" = "发送至"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "发送至"; -/* CrowdNode */ -"Sending to CrowdNode account" = "发送到CrowdNode账户"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "发送到此设备上的Dash钱包"; - /* Buy Dash */ "Sending to:" = "正在发送至:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "设置钱包"; -/* CrowdNode */ +/* Receive screen */ "Share" = "分享"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "显示主节点密钥"; -/* CrowdNode */ -"Show QR" = "显示二维码"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "显示助记词"; /* Alert title */ "Sign in required" = "需要登录"; -/* CrowdNode */ -"Sign up error" = "注册时发生错误"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "注册CrowdNode"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "注册以完成账户设置"; - /* ZenLedger */ "Simplify your crypto taxes" = "简化您的加密数字货币税务"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "质押"; - /* Usernames */ "Starts after you add funds" = "在您添加资金后开始"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "已与当前Dash钱包同步"; - /* No comment provided by engineer. */ "Syncing" = "正在同步"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "在用户创建用户名前, Dash 网络需要投票批准某些用户名"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "Dash 网络由众多主节点驱动, 这是令支付更便捷的重要组成部分."; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash已成功存入您的 Coinbase账户. 但是把 Dash转账到此设备上的 Dash钱包时出错."; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "无法从您的 %@ 余额向此地址付款"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "每次使用时都需要输入PIN以解锁您的app."; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "此二维码已包含 %@的付款申请"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "这代表完整主节点当前年度百分比收益减去15%的CrowdNode费用. 这不是保证回报率, 可能会根据CrowdNode资金池的大小和Dash价格而上下浮动."; - "This still counts as your masternodes having voted in this contest." = "这仍会计为您的主节点已在此次争夺中投票。"; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "到此设备的Dash钱包"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "开始质押前, 需要创建一个CrowdNode账户或连接到现有账户."; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "在此设备上的Dash钱包上为您CrowdNode账户指定的Dash地址"; - /* No comment provided by engineer. */ "Today" = "今天"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "交易记录"; - /* Balance info sheet */ "Transaction history isn't available" = "交易记录不可用"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "转账发生错误"; - /* Coinbase */ "Transfer Failed" = "转账失败"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "有效邀请"; -/* CrowdNode Portal */ -"Validating address…" = "正在确认地址..."; - /* No comment provided by engineer. */ "Validating username failed" = "验证用户名失败"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "需要验证"; - /* Usernames */ "Verified during registration" = "已在注册时验证"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "验证"; -/* CrowdNode */ -"Verify your API Dash address" = "验证您的API Dash地址"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "验证你的助记词以设置新的 PIN 码。"; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "非常高"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "将会向CrowdNode发送非常少的Dash用以验证您是该钱包地址的所有者."; - /* No comment provided by engineer. */ "View All" = "查看全部"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "对“%@”的投票已经结束。请刷新以查看结果。"; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "等待区块链完全同步, 我们便可以回顾您的交易历史."; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "等待区块链完全同步后, 我们才能查看您的交易记录. 访问CrowdNode网站登录或注册."; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "等待钱包同步以完成此交易"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "我们无法创建您的CrowdNode账户."; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "我们无法向您的CrowdNode账户存款."; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "我们无法从您的CrowdNode提款."; - /* Explore */ "We have two types of merchants" = "我们有两种类型的商户"; /* No comment provided by engineer. */ "We Upgraded" = "我们升级了"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "我们将自动检测到此交易并将相同的额度转移到您的CrowdNode账户. 之后, 您将能够在此设备上的Dash钱包中进行存款和提款."; - /* Website */ "Website" = "网站"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "投票进行期间你没有用户名。请立即注册一个无争议的用户名——它将一直归你所有;若投票把“%@”判给你,两个用户名都可以联系到你。"; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "为什么我看到所有这些交易?"; -/* CrowdNode */ -"Why do you need an online account?" = "为什么您需要线上账户?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "为什么我不应该截屏?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "以Dash区块链"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "提款"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "使用 CrowdNode网站上的在线账户可以无限制地提款."; - -/* CrowdNode */ -"Withdrawal requested" = "提款申请"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "提取全部余额"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "您可以更改向您支付奖励收入的方式 / 时间."; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "您可以继续使用 DashPay 进行支付, 但在充值积分余额之前您无法更新个人资料或添加更多联系人"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "您可以在收银台支付 Dash."; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "您可以查看有关您的存款, 提款和奖励收入的详细信息."; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "您可以指定任何在网络上公开可用的链接, 以便其他用户可以在 Dash网络上看到它."; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "您已为此用户名投票 %ld次. 您只能对该用户名再投一票."; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "您已输入了无效的密钥"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "您没有足够的资金来继续操作"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "您必须在Dash钱包重备份您的密码"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "您需要至少%@个 Dash才能创建邀请"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "您的Dash钱包中至少需要有%@ Dash"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "您需要拥有超过 %@ DASH 来创建此用户名"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "您需要登录 DashSpend 以购买礼品卡."; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "您需要等待5分钟才能再次发起提现"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "您至少需要%@来加入资金池."; - /* DashSpend confirmation */ "You pay" = "您支付"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "您已向 %@ 发送联系人请求"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "您Dash钱包的余额应该是正的"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "您至少需要有%@才能进行CrowdNode验证."; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "您将会在此设备的钱包中收到%@Dash. 请注意, 完成转账最多可能需要2-3分钟."; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "您将自动收到小额付款, 默认下它们将被再次投资, 但是设置自动提款以接收定期付款也很容易."; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "您的积分余额不足"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "正在创建您的CrowdNode账户..."; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "您的CrowdNode账户已设置好并可以使用了!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "您的CrowdNode账户是以这些交易创建的."; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "您的CrowdNode地址已确认."; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "您的CrowdNode地址已经被确认, 但需要验证."; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "您的DashPay用户名已经可以使用了"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "您向CrowdNode的存款已收到."; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "您的设备时间为 %1$@ %2$d 秒. 由于此差异, 您无法使用 CoinJoin.\n\n您设备上的时间设置需要变更为“自动设定时间”才能使用CoinJoin."; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "您当前用于CrowdNode账户的主要Dash地址"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "您的私密余额。金额和地址在链上均已加密,因此您的持有量和记录都保持机密。"; diff --git a/DashWallet/zh_TW.lproj/Localizable.strings b/DashWallet/zh_TW.lproj/Localizable.strings index fa8c483bf1..ad88311bb9 100644 --- a/DashWallet/zh_TW.lproj/Localizable.strings +++ b/DashWallet/zh_TW.lproj/Localizable.strings @@ -3,12 +3,6 @@ " or " = " 或 "; -/* CrowdNode */ -" Privacy Policy " = "隱私政策"; - -/* CrowdNode */ -" Terms of Use " = "使用條款"; - /* Username marketplace: listing success — name, then price */ "%1$@ listed for %2$@ DASH" = "%1$@ 已以 %2$@ DASH 掛牌"; @@ -183,9 +177,6 @@ /* No comment provided by engineer. */ "A device passcode is needed to safeguard your wallet. Go to settings and turn passcode on to continue." = "需要一個裝置密碼來保護你的錢包。請到設置並打開密碼才能繼續。"; -/* CrowdNode */ -"A Masternode needs 1000 Dash as collateral and each Masternode is currently rewarded approximately %@ per year." = "一個主節點需要 1000 達世幣作為抵押品,每個主節點目前每年獲得大約 %@ 的獎勵。"; - /* DashPay Contacts */ "A network fee will be added on top of the amount." = "A network fee will be added on top of the amount."; @@ -226,18 +217,9 @@ /* DashSpend */ "Accept terms and\nconditions" = "接受條款和\n條件"; -/* CrowdNode */ -"Accept Terms Of Use" = "接受使用條款"; - /* DashPay Contacts */ "Accepting" = "Accepting"; -/* CrowdNode */ -"Accepting terms of use…" = "接受使用條款…"; - -/* CrowdNode */ -"Account Recovery" = "恢復帳戶"; - /* Masternode status */ "Active" = "已啟用"; @@ -333,9 +315,6 @@ /* Shortcut selection empty state */ "All shortcuts are already in use" = "All shortcuts are already in use"; -/* CrowdNode */ -"All transfers to and from CrowdNode from this device will be performed with the below Dash address from this device." = "從此設備與 CrowdNode 之間的所有交易都將使用來自該設備的以下達世幣位址來執行。"; - /* ZenLedger */ "Allow" = "允許"; @@ -387,9 +366,6 @@ /* CTXSpend error */ "An unknown error occurred. Please try again later." = "發生了未知錯誤。請稍後再試。"; -/* CrowdNode */ -"and" = "和"; - /* Usernames */ "Any username that has a number 2-9, is more than 20 characters or that has a hyphen will be automatically approved" = "任何超20個字符或包含2-9個數字,或含有連字符的用戶名稱,將會自動批准"; @@ -430,9 +406,6 @@ /* Voting */ "As a masternode owner you can vote to approve requested usernames before users will be able to create it.\nYou can block the creation of the usernames that you feel inappropriate." = "作為主節點所有者,您可以投票批准用戶能夠創建它的用戶名。\n您亦可以阻止您認為不合適的用戶名的創建。"; -/* CrowdNode */ -"As most people do not have exactly 1000 Dash at hand, Crowdnode has made a service where, by pooling deposits from members, they can achieve the benefits of owning a Masternode." = "由於大多數人手頭上沒有 1000 個達世幣,Crowdnode 提供了一項服務,透過匯集會員的存款,他們可以獲得擁有主節點的好處。"; - /* DashSpend */ "As soon as your code is generated, it will be displayed here" = "As soon as your code is generated, it will be displayed here"; @@ -513,15 +486,9 @@ /* Translate it as short as possible! (24 symbols max) */ "Backup" = "備份"; -/* No comment provided by engineer. */ -"Backup Passphrase" = "備份詞組"; - /* A noun. Used as a title. */ "Backup Wallet" = "備用錢包"; -/* No comment provided by engineer. */ -"Backup your passphrase to create a CrowdNode account" = "備份您的恢復詞組以創建 CrowdNode 帳戶"; - /* Back up wallet */ "Backup your recovery phrase" = "備份您的恢復詞組"; @@ -531,15 +498,9 @@ /* Send Screen: to address */ "Balance" = "餘額"; -/* CrowdNode */ +/* Platform address payment detail */ "Balance after" = "之後餘額"; -/* CrowdNode */ -"Balance On CrowdNode" = "CrowdNode 上的餘額"; - -/* CrowdNode */ -"Balance: " = "結餘: "; - /* Balance info sheet */ "Balances and transfers are not publicly visible" = "餘額和轉帳不會公開可見"; @@ -549,9 +510,6 @@ /* Coinbase/Payment Methods */ "Bank Wire" = "電匯"; -/* CrowdNode */ -"Become part of a Dash Masternode with CrowdNode" = "通過 CrowdNode 成為達世幣主節點的一部分"; - /* TimeSkew */ "behind" = "在後面\nZài hòumiàn"; @@ -801,9 +759,6 @@ /* Dash DEX */ "Close and notify me" = "Close and notify me"; -/* CrowdNode */ -"Close and notify when it’s done" = "完成後關閉並發送通知"; - /* No comment provided by engineer. */ "Close App" = "關閉程序"; @@ -866,9 +821,6 @@ Coinbase Entry Point */ "Connected" = "已連接"; -/* CrowdNode */ -"Connected Dash address" = "連接的達世幣位址"; - /* SPV sync */ "Connected peers" = "已連線節點"; @@ -1034,18 +986,12 @@ /* Usernames */ "Create a username" = "創建一個用戶名稱"; -/* CrowdNode */ -"Create Account" = "創建帳號"; - /* Create DashSpend account */ "Create account" = "創建賬戶"; /* DashSpend account title */ "Create an account or log into an existing one" = "創建一個帳戶或登錄現有的帳戶"; -/* CrowdNode */ -"Create an online CrowdNode account" = "創建一個在線 CrowdNode 帳戶"; - /* No comment provided by engineer. */ "Create invitation" = "創建邀請"; @@ -1055,10 +1001,6 @@ /* Wallets */ "Create New Wallet" = "Create New Wallet"; -/* CrowdNode - CrowdNode Portal */ -"Create Online Account" = "創建在線帳戶"; - /* Wallets */ "Create Wallet" = "Create Wallet"; @@ -1074,30 +1016,6 @@ /* Masternodes */ "Credits" = "積分"; -/* Translate it as short as possible! (24 symbols max) */ -"CrowdNode" = "CrowdNode"; - -/* CrowdNode */ -"CrowdNode benefits" = "CrowdNode 的好處"; - -/* CrowdNode */ -"CrowdNode sign-up and deposits are temporarily unavailable." = "CrowdNode sign-up and deposits are temporarily unavailable."; - -/* CrowdNode Portal */ -"CrowdNode Support" = "CrowdNode 支援"; - -/* CrowdNode */ -"CrowdNode uses this address as your account ID. You will lose access to your funds within this wallet and your CrowdNode account if you lose the passphrase associated to this address." = "CrowdNode 使用此位址作為您的帳戶 ID。如果您丟失了與此位址關聯的密碼,您將無法訪問此錢包和您的 CrowdNode 帳戶中的資金。"; - -/* CrowdNode */ -"CrowdNode withdrawal limits" = "CrowdNode 提款限額"; - -/* No comment provided by engineer. */ -"CrowdNode · Account" = "CrowdNode · 帳戶"; - -/* CrowdNode Portal */ -"CrowdNode ➝ DashWallet" = "CrowdNode ➝ 達世幣錢包"; - /* No comment provided by engineer. */ "CSV Export" = "導出到CSV檔案"; @@ -1107,12 +1025,6 @@ /* Explore Dash: Filters */ "CTX gift cards" = "CTX 禮品卡"; -/* Crowdnode */ -"Current APY = %@" = "目前的年利率 = %@"; - -/* CrowdNode */ -"Current APY is %@" = "目前的年利率是 %@"; - /* Explore Dash: Filters */ "Current location" = "當前位置"; @@ -1131,9 +1043,6 @@ /* No comment provided by engineer. */ "Dash address" = "達世幣位址"; -/* CrowdNode */ -"Dash address designated for your CrowdNode account in the Dash Wallet on this device " = "此設備上達世幣錢包中為您的 CrowdNode 帳戶指定的達世幣位址"; - /* No comment provided by engineer. */ "Dash balance" = "達世幣結餘"; @@ -1219,9 +1128,6 @@ /* AboutDash */ "DashSync" = "DashSync"; -/* CrowdNode Portal */ -"DashWallet ➝ CrowdNode" = "達世幣錢包 ➝ CrowdNode"; - /* No comment provided by engineer. */ "Date" = "日期"; @@ -1257,22 +1163,6 @@ /* Location Service Status */ "Denied" = "拒絕"; -/* CrowdNode - CrowdNode Portal */ -"Deposit" = "存款"; - -/* CrowdNode Portal */ -"Deposit %@ to start earning" = "存入 %@ 來開始賺取收益"; - -/* CrowdNode */ -"Deposit at least %@ Dash on your Dash Wallet to complete a withdrawal" = "在您的達世幣錢包中至少存入 %@ 以完成提款"; - -/* CrowdNode Portal */ -"Deposit at least %@ to start earning" = "存入至少 %@ 即可開始賺取收益"; - -/* CrowdNode */ -"Deposit sent" = "存款已發送"; - /* Identities: BIP-32 style derivation path of this key */ "Derivation path" = "衍生路徑"; @@ -1362,9 +1252,6 @@ /* SPV diagnostics */ "Dropping…" = "正在捨棄…"; -/* CrowdNode */ -"Due to CrowdNode’s terms of service users can withdraw no more than:" = "由於 CrowdNode 的服務條款,用戶的提款額不能超過:"; - /* Geoblock */ "Due to regulatory constraints, we need to verify that you are not in the UK. We only check your location when you enter the Coinbase features." = "由於監管限制,我們需要驗證您不在英國,我們僅在您進入 Coinbase 功能時檢查您的位置。"; @@ -1374,9 +1261,6 @@ /* Usernames */ "Due to the voting process, the Dash Network has decided to assign the username '%@' to someone else. Please try again by requesting another username." = "由於投票過程,達世幣網絡已決定將用戶名 '%@' 分配給其他人。請通過請求另一個用戶名來重試。"; -/* CrowdNode */ -"e.g. johndoe@mail.com" = "例如 johndoe@mail.com"; - /* No comment provided by engineer. */ "Each invitation will be funded with this amount so that the receiver can quickly create their username on the Dash Network" = "每個邀請都將獲得該金額的資助,以便接收者可以在達世幣網絡上快速創建他們的用戶名"; @@ -1387,12 +1271,6 @@ /* (List of notifications happened) Earlier (some time ago) */ "Earlier" = "之前"; -/* CrowdNode */ -"Easily stake Dash and earn passive income with a few simple clicks" = "Easily stake Dash and earn passive income with a few simple clicks"; - -/* No comment provided by engineer. */ -"Easily stake Dash and earn passive income with a few simple clicks." = "只需點擊幾下,即可輕鬆質押達世幣並賺取被動收入。"; - /* SPV diagnostics */ "Edit birth height" = "編輯起始區塊高度"; @@ -1408,7 +1286,7 @@ /* Input username textfield placeholder */ "eg: johndoe" = "例如: johndoe"; -/* CrowdNode */ +/* DashSpend */ "Email" = "電子郵件"; /* DashPay: confirm button of the Enable DashPay sheet */ @@ -1628,12 +1506,6 @@ /* InternalTransfer recovery */ "Finish shielded transfer" = "Finish shielded transfer"; -/* CrowdNode */ -"First deposit should be more than %@" = "首次存款應超過 %@"; - -/* CrowdNode */ -"First minimum deposit" = "首次最低存款"; - /* DashSpend */ "Fixed amounts" = "固定金額"; @@ -1679,12 +1551,6 @@ /* Dash DEX Portal */ "From any crypto to your Dash Wallet" = "From any crypto to your Dash Wallet"; -/* from CrowdNode */ -"from CrowdNode" = "來自 CrowdNode"; - -/* from Dash Wallet */ -"from Dash Wallet" = "來自達世幣錢包"; - /* Swap portal */ "From Dash Wallet to any crypto" = "From Dash Wallet to any crypto"; @@ -1724,9 +1590,6 @@ /* CoinJoin */ "Funds moved" = "資金已轉移"; -/* CrowdNode */ -"Gain rewards from deposits in Dash Masternodes with as little as 0.5 Dash." = "只需 0.5 Dash,即可從達世幣主節點中的存款中獲得獎勵。"; - /* Wallets */ "Generate a new recovery phrase" = "Generate a new recovery phrase"; @@ -1742,9 +1605,6 @@ /* Usernames */ "Get ready to join DashPay" = "準備加入 DashPay"; -/* CrowdNode */ -"Get Rewards Instantly" = "立即獲得獎勵"; - /* No comment provided by engineer. */ "Get Started" = "開始使用"; @@ -1757,9 +1617,6 @@ /* No comment provided by engineer. */ "Get your Username" = "獲取您的用戶名"; -/* CrowdNode */ -"Getting started with CrowdNode" = "開始使用 CrowdNode"; - /* No comment provided by engineer. */ "Gift card" = "禮物卡"; @@ -1781,9 +1638,6 @@ /* DashSpend */ "Gift card · %@" = "禮品卡 · %@"; -/* No comment provided by engineer. */ -"Go to CrowdNode website" = "訪問 CrowdNode 網站"; - /* No comment provided by engineer. */ "Go to Website" = "前往網站"; @@ -1821,9 +1675,6 @@ /* Masternodes */ "Height %u" = "高度 %u"; -/* CrowdNode */ -"Here is a Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "這是在此設備上的達世幣錢包中為您的 CrowdNode 帳戶指定的達世幣位址。"; - /* DashPay Contacts */ "Hidden" = "Hidden"; @@ -1848,9 +1699,6 @@ /* Shortcut banner */ "Hold any button above to replace it with the function you need" = "按住上面的任何按鈕將其替換為您需要的功能"; -/* CrowdNode */ -"How CrowdNode staking works" = "CrowdNode 質押的運作原理"; - /* No comment provided by engineer. */ "How do I get Test Dash?" = "如何才能索取測試的達世幣?"; @@ -1899,9 +1747,6 @@ /* DashPay FAQ */ "How private is DashPay?" = "DashPay 的隱私性如何?"; -/* CrowdNode */ -"How to confirm your API Dash address" = "如何確認您的 API 達世幣位址"; - /* No comment provided by engineer. */ "How to use your gift card" = "如何使用禮品卡"; @@ -1917,9 +1762,6 @@ /* No comment provided by engineer. */ "I accept that I will lose my coins if I no longer possess the recovery phrase" = "我同意如果我丟失恢復密語,我會丟失我的達世幣"; -/* CrowdNode */ -"I agree to CrowdNode" = "我同意 CrowdNode"; - /* No comment provided by engineer. */ "I got it" = "I got it"; @@ -1971,12 +1813,6 @@ /* Geoblock */ "If you choose to grant permissions at a later time and you are not in the UK, you can use Coinbase" = "如果您選擇稍後授予權限並且您不在英國,則可以使用 Coinbase"; -/* CrowdNode */ -"If you ever lose your passphrase, you can verify yourself by other means to regain access to your CrowdNode funds." = "如果您丟失了密碼,您可以通過其他方式驗證自己以重新獲得對您的 CrowdNode 資金的訪問權限。"; - -/* No comment provided by engineer. */ -"If you lose your passphrase for this wallet and lose this device or uninstall Dash Wallet, you will lose access to your funds on CrowdNode and the funds within this wallet." = "如果您丟失此錢包的恢復詞組並丟失此設備或卸載達世幣錢包,您將無法訪問 CrowdNode 上的資金和此錢包中的資金。"; - /* No comment provided by engineer. */ "If you still would like to wipe it please input: \"%@\"" = "如果你仍然想擦拭它,請輸入: \"%@\""; @@ -2013,15 +1849,9 @@ /* Maya */ "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution." = "In addition to the displayed Maya fee, we include a spread in the price. \nCryptocurrency markets are volatile, and this allows us to temporary lock in a price for trade execution."; -/* CrowdNode */ -"In case of larger withdrawals CrowdNode will pay withdrawals within two weeks. This is due to their security protocols and will most often be handled much faster." = "在提款額較大的情況下,CrowdNode 將在兩週內支付該提款。這是由於它們的安全協議,並且通常處理得比這時間更快。"; - /* Usernames */ "In case you lose your passphrase you will lose your right to your requested username." = "如果您遺失了密碼,您將失去所要求的用戶名稱的權利。"; -/* CrowdNode Portal */ -"In process…" = "進行中…"; - /* Dash DEX */ "In progress" = "In progress"; @@ -2041,9 +1871,6 @@ /* DashSpend */ "Increase quantity" = "Increase quantity"; -/* CrowdNode */ -"Information about your online account" = "有關您的在線帳戶的信息"; - /* Buy Sell Portal */ "Initializing" = "正在初始化"; @@ -2080,9 +1907,6 @@ /* No comment provided by engineer. */ "Internally moved to" = "內部移至"; -/* CrowdNode */ -"Introducing Staking" = "介紹質押"; - /* Invalid transaction */ "Invalid" = "無效"; @@ -2095,9 +1919,6 @@ /* No comment provided by engineer. */ "Invalid Dash address" = "無效的達世幣位址"; -/* CrowdNode Online */ -"Invalid Email" = "無效的電郵"; - /* No comment provided by engineer. */ "Invalid email or password." = "電子郵件或密碼無效。"; @@ -2164,12 +1985,6 @@ /* No comment provided by engineer. */ "iOS Dash Wallet: %@ Reported issue" = "iOS 達世幣錢包: %@ 已報告的問題"; -/* CrowdNode */ -"It can take a minute for your balance to be updated." = "您的餘額可能需要一分鐘後才能更新。"; - -/* CrowdNode */ -"It can take a minute for your funds to arrive." = "您的資金可能需要一分鐘後才能到賬。"; - /* Dash DEX */ "It can take up to a few minutes for your %@ to arrive at the destination address using %@" = "It can take up to a few minutes for your %1$@ to arrive at the destination address using %2$@"; @@ -2197,9 +2012,6 @@ /* No comment provided by engineer. */ "Join Now" = "現在加入"; -/* CrowdNode */ -"Joining the pool" = "加入資金池"; - /* CoinJoin */ "Keep these coins private. Network and privacy fees apply." = "讓這些幣保持私密。將收取網絡與隱私費用。"; @@ -2255,9 +2067,6 @@ /* Wallets */ "Leave the name empty to reset it to the default." = "Leave the name empty to reset it to the default."; -/* CrowdNode */ -"Leaving the pool" = "離開資金池"; - /* DashPay Contacts: caption under the user's own QR code */ "Let another Dash Wallet user scan this code to add you as a contact." = "讓另一位 Dash Wallet 用戶掃描此 QR 碼,即可把你加為聯絡人。"; @@ -2282,12 +2091,6 @@ /* Dash Service Overview */ "Link Coinbase Account" = "鏈接 Coinbase 帳戶"; -/* CrowdNode */ -"Link Existing Account" = "鏈接現有帳戶"; - -/* CrowdNode */ -"Link Existing CrowdNode Account" = "鏈接現有的 CrowdNode 帳戶"; - /* No comment provided by engineer. */ "Link Uphold Account" = "連結 Uphold 帳戶"; @@ -2418,9 +2221,6 @@ /* Maya */ "Log In" = "Log In"; -/* CrowdNode WebView */ -"Log in to CrowdNode" = "登入到 CrowdNode"; - /* DashSpend */ "Log in to your account" = "登錄到您的帳戶"; @@ -2454,9 +2254,6 @@ /* Maya */ "Long press to paste" = "Long press to paste"; -/* Leftover balance warning */ -"Looks like you are emptying your Dash Wallet" = "看來你正在清空你的達世幣錢包"; - /* adjective, security level */ "Low" = "低"; @@ -2556,9 +2353,6 @@ /* adjective, security level */ "Medium" = "中位數"; -/* CrowdNode */ -"Members are free to leave the pool and can most often leave immediately." = "會員可以自由離開資金池,並且通常可以立即離開。"; - /* Dash DEX */ "Memo / Tag" = "Memo / Tag"; @@ -2765,9 +2559,6 @@ /* SPV diagnostics */ "No unconfirmed transactions to drop." = "沒有可捨棄的未確認交易。"; -/* CrowdNode */ -"New CrowdNode Account" = "新建 CrowdNode 帳戶"; - /* Voting */ "New to old" = "從新到舊"; @@ -2972,9 +2763,6 @@ /* Online */ "Online" = "在線的"; -/* CrowdNode Portal */ -"Online Account" = "在線賬戶"; - /* Online Merchant */ "Online Merchant" = "網上商戶"; @@ -3138,13 +2926,9 @@ /* DashPay intro: feature body */ "Payments with each contact are grouped in one place, with names and profiles instead of raw transactions." = "與每位聯絡人的支付都彙集在一處,顯示姓名和個人資料,而不是原始交易。"; -/* CrowdNode */ /* Masternodes */ "Payout address" = "收款位址"; -/* CrowdNode */ -"Payout Options" = "支付選項"; - /* Coinbase/Payment Methods */ "PayPal" = "PayPal"; @@ -3157,15 +2941,6 @@ /* InternalTransfer recovery */ "Pending — tap to finish" = "Pending — tap to finish"; -/* CrowdNode */ -"per 24 hours" = "每 24 小時"; - -/* CrowdNode */ -"per hour" = "每小時"; - -/* CrowdNode */ -"per transaction" = "每筆交易"; - /* Usernames */ "Personalise profile" = "個性化個人資料"; @@ -3249,21 +3024,12 @@ /* Uphold */ "Please go to your Uphold account to verify your identity." = "請轉到您的 Uphold 帳戶以驗證您的身份。"; -/* CrowdNode */ -"Please note that the email is not saved by the Dash Wallet and is only sent to CrowdNode" = "請注意,達世幣錢包不保存電子郵件,僅發送至 CrowdNode"; - /* Usernames */ "Please note that the username can NOT be changed once it is registered." = "請注意,一旦註冊就無法更改用戶名稱。"; /* Usernames */ "Please note that you will not be able to change it in future" = "請注意,您將來將無法更改它"; -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CowdNode to this wallet until you increase your balance to %@ Dash." = "請注意,在您的餘額增加到 %@ Dash之前,您將無法將資金從 CrowdNode 提款到此錢包。"; - -/* Leftover balance warning */ -"Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash." = "Please note, you will not be able to withdraw your funds from CrowdNode to this wallet until you increase your balance to %@ Dash."; - /* No comment provided by engineer. */ "Please place your phone near NFC device." = "請將手機放在NFC設備附近。"; @@ -3288,9 +3054,6 @@ /* No comment provided by engineer. */ "Please wait" = "請稍等"; -/* CrowdNode */ -"Please wait before initiating the next withdrawal" = "請稍候片刻然後再開始下次提款"; - /* No comment provided by engineer. */ "Please wait until the wallet is fully synced before exporting your transaction history" = "請等到錢包完全同步後再導出您的交易記錄。"; @@ -3318,9 +3081,6 @@ /* Stale rates */ "Prices weren't retrieved. Fiat values may be incorrect." = "價格未被檢索到,所以相關的法幣的價值可能不正確。"; -/* CrowdNode */ -"Primary Dash address" = "主要達世幣位址"; - /* No comment provided by engineer. */ "Privacy tip" = "Privacy tip"; @@ -3357,9 +3117,6 @@ /* Balance info sheet section */ "Pros" = "優點"; -/* CrowdNode Portal */ -"Protect your savings" = "保護您的存款"; - /* Usernames */ "Prove your identity" = "證明您的身份"; @@ -3423,9 +3180,6 @@ /* SPV diagnostics */ "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet." = "Re-checks the compact block filters from the chosen height for this wallet's transactions, re-downloading and re-matching them. This rediscovers any missed transactions but can take a while. Full rescan re-checks every filter since genesis and can take a long time on mainnet."; -/* CrowdNode */ -"Read Withdrawal Policy" = "閱讀提款政策"; - /* Identities: key visible to the wallet but not usable for signing */ "Read-only" = "唯讀"; @@ -3538,9 +3292,6 @@ /* Coinbase Entry Point */ "Receive directly into Dash Wallet" = "直接在達世幣錢包上收款"; -/* CrowdNode */ -"Receive your share of rewards daily." = "每天收到屬於您的獎勵金額。"; - /* Received transaction */ "Received" = "己收到"; @@ -3556,9 +3307,6 @@ /* DashPay payment row — sender's display name */ "Received from %@" = "收自 %@"; -/* CrowdNode */ -"Receiving rewards" = "領取獎勵"; - "Records your masternodes as having voted, without taking a side." = "記錄您的主節點已投票,但不偏向任何一方。"; /* No comment provided by engineer. */ @@ -4408,9 +4156,6 @@ /* Dash DEX */ "Send %@ (%@) to this address" = "Send %1$@ (%2$@) to this address"; -/* CrowdNode Confirm */ -"Send %@ from your primary Dash address that you currently use for your CrowdNode account" = "從您當前用於 CrowdNode 帳戶的主要達世幣地址發送 %@ "; - /* Dash DEX */ "Send %@ to this address" = "Send %@ to this address"; @@ -4423,10 +4168,6 @@ /* No comment provided by engineer. */ "Send Invitation" = "發送邀請"; -/* Coinbase - CrowdNode */ -"Send Report" = "發送報告"; - /* No comment provided by engineer. */ "Send to" = "發給"; @@ -4508,12 +4249,6 @@ /* No comment provided by engineer. */ "Sending to" = "發送至"; -/* CrowdNode */ -"Sending to CrowdNode account" = "發送到 CrowdNode 帳戶"; - -/* CrowdNode */ -"Sending to Dash Wallet on this device" = "發送到此設備上的達世幣錢包"; - /* Buy Dash */ "Sending to:" = "發送至:"; @@ -4568,7 +4303,7 @@ /* No comment provided by engineer. */ "Setup Wallet" = "設置錢包"; -/* CrowdNode */ +/* Receive screen */ "Share" = "分享"; /* Receive screen */ @@ -4622,24 +4357,12 @@ /* No comment provided by engineer. */ "Show Masternode Keys" = "顯示主節點公鑰"; -/* CrowdNode */ -"Show QR" = "顯示二維碼"; - /* No comment provided by engineer. */ "Show Recovery Phrase" = "顯示恢復詞組"; /* Alert title */ "Sign in required" = "需要登入"; -/* CrowdNode */ -"Sign up error" = "註冊時發生錯誤"; - -/* CrowdNode */ -"Sign up to CrowdNode" = "註冊 CrowdNode 帳戶"; - -/* CrowdNode Portal */ -"Sign up to finish setting up account" = "註冊以完成帳戶設定"; - /* ZenLedger */ "Simplify your crypto taxes" = "簡化您的加密貨幣報稅事宜"; @@ -4702,9 +4425,6 @@ /* ex., SPV: syncing (87%) */ "SPV: %@ (%d%%)" = "SPV: %1$@ (%2$d%%)"; -/* No comment provided by engineer. */ -"Staking" = "質押"; - /* Usernames */ "Starts after you add funds" = "在您加入資金後開始"; @@ -4807,9 +4527,6 @@ /* Explore Dash */ "Synced" = "Synced"; -/* CrowdNode Portal */ -"Synced with current Dash Wallet" = "與當前達世幣錢包同步"; - /* No comment provided by engineer. */ "Syncing" = "同步中"; @@ -4899,9 +4616,6 @@ /* Usernames */ "The Dash network has to vote to approve some usernames before they are created" = "某些用戶名稱在建立之前,必須經過達世幣網絡投票批准方能使用。"; -/* CrowdNode */ -"The Dash Network is driven by a number of Masternodes which are an essential part of facilitating payments." = "達世幣網絡由許多主節點驅動,這是令支付更便捷的重要組成部分。"; - /* Coinbase/Buy Dash/Confirm Order */ "The Dash was successfully deposited to your Coinbase account. But there was a problem transfering it to Dash Wallet on this device." = "Dash 已成功存入您的 Coinbase 帳戶。但是將它轉移到此設備上的達世幣錢包時出現問題。"; @@ -4998,9 +4712,6 @@ /* No comment provided by engineer. */ "These funds move to your Platform Payment balance and are ready to spend right away." = "These funds move to your Platform Payment balance and are ready to spend right away."; -/* CrowdNode */ -"These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device." = "These funds should be withdrawn from CrowdNode. You can transfer these funds to this wallet or via your online account on some other device."; - /* Send sheet source/destination mismatch */ "This address can't be paid from your %@ balance" = "無法從您的 %@ 餘額向此位址付款"; @@ -5189,18 +4900,12 @@ /* No comment provided by engineer. */ "This PIN will be required to unlock your app every time when you use it." = "每次使用時,都需要使用此密碼來解鎖您的應用程式。"; -/* CrowdNode Confirm */ -"This QR already contains the payment request for %@" = "此二維碼已包含 %@ 的付款請求"; - /* Dash DEX / dex_error_quote_expired */ "This quote expired. Please go back and try again." = "This quote expired. Please go back and try again."; /* Wallets */ "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds." = "This removes this device's copy of the wallet, including its keys and synced data. Your funds are NOT deleted — they remain on the Dash network and can only be recovered with this wallet's recovery phrase. If you have not backed up the phrase, you will lose access to these funds."; -/* CrowdNode */ -"This represents the current Annual Percentage Yield of a full Masternode less the 15% CrowdNode fee. It is not a guaranteed rate of return and may go up or down based on the size of the CrowdNode pools and the Dash price." = "這代表完整主節點的當前年度百分比收益率減去 15% 的 CrowdNode 費用。這不是保證回報率,可能會根據 CrowdNode 資金池的大小和達世幣價格而上升或下降。"; - "This still counts as your masternodes having voted in this contest." = "這仍會計為您的主節點已在此次爭奪中投票。"; /* Dash DEX / dex_error_allowance */ @@ -5245,12 +4950,6 @@ /* Coinbase */ "to Dash Wallet on this device" = "到此設備上的 達世幣錢包"; -/* CrowdNode */ -"To start staking, create an account on CrowdNode or connect to an existing one." = "要開始質押,請在 CrowdNode 上創建一個帳戶或連接到現有帳戶。"; - -/* CrowdNode */ -"to the Dash address designated for your CrowdNode account in the Dash Wallet on this device" = "到此設備上達世幣錢包中為您的 CrowdNode 帳戶指定的達世幣位址"; - /* No comment provided by engineer. */ "Today" = "今天"; @@ -5272,9 +4971,6 @@ /* DashPay Contacts */ "Transaction" = "Transaction"; -/* CrowdNode */ -"Transaction History" = "交易記錄"; - /* Balance info sheet */ "Transaction history isn't available" = "交易紀錄無法使用"; @@ -5298,9 +4994,6 @@ /* Coinbase */ "Transfer DASH" = "Transfer DASH"; -/* CrowdNode */ -"Transfer Error" = "轉賬發生錯誤"; - /* Coinbase */ "Transfer Failed" = "轉帳失敗"; @@ -5555,9 +5248,6 @@ /* DashPay Invitations */ "Valid invitation" = "有效邀請"; -/* CrowdNode Portal */ -"Validating address…" = "正在核實位址..."; - /* No comment provided by engineer. */ "Validating username failed" = "驗證用戶名失敗"; @@ -5567,9 +5257,6 @@ /* Maya */ "Vault address is missing. Please refresh and try again." = "Vault address is missing. Please refresh and try again."; -/* CrowdNode Portal */ -"Verification Required" = "需要驗證"; - /* Usernames */ "Verified during registration" = "已在註冊時驗證"; @@ -5582,9 +5269,6 @@ /* No comment provided by engineer. */ "Verify" = "檢查"; -/* CrowdNode */ -"Verify your API Dash address" = "驗證您的 API 達世幣位址"; - /* No comment provided by engineer. */ "Verify your recovery phrase to set a new PIN." = "驗證你的助記詞以設定新的 PIN 碼。"; @@ -5600,9 +5284,6 @@ /* adjective, security level */ "Very High" = "非常高"; -/* CrowdNode */ -"Very small amounts of Dash will be sent to and from CrowdNode to verify that you are the owner of this wallet address." = "將會向 CrowdNode 發送非常少量的達世幣,以驗證您是該錢包位址的所有者。"; - /* No comment provided by engineer. */ "View All" = "檢視全部"; @@ -5688,15 +5369,9 @@ "Voting on “%@” has already closed. Refresh to see the result." = "對「%@」的投票已經結束。請重新整理以查看結果。"; -/* CrowdNode */ -"Wait until the chain is fully synced before using CrowdNode." = "Wait until the chain is fully synced before using CrowdNode."; - /* ZenLedger */ "Wait until the chain is fully synced, so we can review your transaction history." = "等到區塊鏈完全同步,以便我們可以查看您的交易歷史記錄。"; -/* No comment provided by engineer. */ -"Wait until the chain is fully synced, so we can review your transaction history. Visit CrowdNode website to log in or sign up." = "等到區塊鏈完全同步後,我們才能查看您的交易歷史。訪問 CrowdNode 網站登錄或註冊。"; - /* Send screen */ "Wait until wallet is synced to complete the transaction" = "等到錢包同步後完成交易"; @@ -5756,24 +5431,12 @@ /* Dash DEX / dex_error_validation */ "We couldn't set up your swap. Please check the amount and address, then try again." = "We couldn't set up your swap. Please check the amount and address, then try again."; -/* CrowdNode */ -"We couldn’t create your CrowdNode account." = "我們無法創建您的 CrowdNode 帳戶。"; - -/* CrowdNode */ -"We couldn’t make a deposit to your CrowdNode account." = "我們無法向您的 CrowdNode 賬戶存款。"; - -/* CrowdNode */ -"We couldn’t withdraw from your CrowdNode account." = "我們無法從您的 CrowdNode 帳戶中提款。"; - /* Explore */ "We have two types of merchants" = "我們有兩種類型的商戶"; /* No comment provided by engineer. */ "We Upgraded" = "我們升級了"; -/* CrowdNode */ -"We will automatically detect this transaction and transfer the same amount to your CrowdNode account. After that you will be able to make deposits and withdrawals in Dash Wallet on this device." = "我們將自動檢測此交易並將相同的金額轉移到您的 CrowdNode 帳戶。之後,您將能夠在此設備上的達世幣錢包中進行存款和提款。"; - /* Website */ "Website" = "網站"; @@ -5827,12 +5490,9 @@ /* Usernames */ "You do not have a username while the vote is in progress. Register a non-contested username now — it is yours to keep, and if the vote awards you “%@”, you will be reachable at both usernames." = "投票進行期間你沒有用戶名稱。請立即註冊一個無爭議的用戶名稱——它將一直歸你所有;若投票把「%@」判給你,兩個用戶名稱都能聯絡到你。"; -/* Crowdnode */ +/* Grouped Transactions */ "Why do I see all these transactions?" = "為什麼我會看到所有這些交易?"; -/* CrowdNode */ -"Why do you need an online account?" = "為什麼需要在線帳戶?"; - /* No comment provided by engineer. */ "Why I should not take a screenshot?" = "為什麼我不應該截圖?"; @@ -5851,19 +5511,12 @@ /* No comment provided by engineer. */ "with Dash blockchain" = "與達世幣區塊鏈"; -/* CrowdNode - CrowdNode Portal */ +/* Evonode withdrawal */ "Withdraw" = "提款"; -/* CrowdNode */ +/* DashConnect */ "Withdraw funds" = "Withdraw funds"; -/* CrowdNode */ -"Withdraw without limits with an online account on CrowdNode website." = "使用 CrowdNode 網站上的在線帳戶可以無限制地提款。"; - -/* CrowdNode */ -"Withdrawal requested" = "提款請求"; - /* Full-balance Platform → Transparent withdrawal */ "Withdraws the entire balance" = "提領全部餘額"; @@ -5929,9 +5582,6 @@ /* DashSpend */ "You can buy up to %@ in gift cards per order" = "You can buy up to %@ in gift cards per order"; -/* CrowdNode */ -"You can change how / when your reward earnings are paid to you." = "您可以更改向您支付獎勵收入的方式/時間。"; - /* No comment provided by engineer. */ "You can continue to use DashPay for payments but you cannot update your profile or add more contacts until you top up your credit balance" = "您可以繼續使用 DashPay 進行付款,但在充值積分之前,您無法更新您的個人資料或添加更多聯絡人"; @@ -5941,9 +5591,6 @@ /* Explore */ "You can pay with Dash at the cashier." = "您可以在收銀處用達世幣付款。"; -/* CrowdNode */ -"You can see detailed information about your deposits, withdrawals and reward earnings." = "您可以查看有關您的存款、提款和獎勵收入的詳細信息。"; - /* No comment provided by engineer. */ "You can specify any URL which is publicly available on the internet so other users can see it on the Dash network." = "您可以指定任何在 Internet 上公開可用的 URL,以便其他用戶可以在達世幣網絡上看到它。"; @@ -5974,9 +5621,6 @@ /* CoinJoin */ "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance." = "You have %@ in CoinJoin mixed coins. CoinJoin is no longer supported — move them to your spendable balance."; -/* CrowdNode */ -"You have a balance on CrowdNode" = "You have a balance on CrowdNode"; - /* Voting */ "You have already voted for this username %ld times. You can only cast one more vote for this username." = "您已經投票贊成此用戶名%ld次。您只能為此用戶名稱再投一票。"; @@ -5992,24 +5636,15 @@ /* Voting */ "You have entered an invalid key" = "您輸入了無效的密鑰"; -/* No comment provided by engineer. */ -"You have insufficient funds to proceed" = "您沒有足夠的資金來繼續進行"; - /* DashPay Notifications */ "You have no notifications" = "You have no notifications"; -/* CrowdNode */ -"You have to backup your passphrase in Dash Wallet" = "您必須在達世幣錢包中備份您的恢復詞組"; - /* Backup */ "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?" = "You haven't backed up your recovery phrase yet. Would you like to back up now before removing this shortcut?"; /* No comment provided by engineer. */ "You need at least %@ Dash to create an invitation" = "您至少需要 %@ Dash 才能創建邀請"; -/* CrowdNode */ -"You need at least %@ on your Dash Wallet" = "您的達世幣錢包中至少需要 %@ 的 Dash"; - /* Usernames */ "You need to have more %@ Dash to create this username" = "您需要擁有更多 %@ 達世幣才能創建此用戶名"; @@ -6019,12 +5654,6 @@ /* DashSpend */ "You need to sign in to DashSpend to purchase gift cards." = "您需要登錄DashSpend 以購買禮品卡。"; -/* CrowdNode */ -"You need to wait 5 minutes before initiating another withdrawal" = "您需要等待5分鐘才能再次發起提款"; - -/* CrowdNode */ -"You only need %@ to join the pool." = "您至少需要 %@ 的金額來參與資金池。"; - /* DashSpend confirmation */ "You pay" = "你支付"; @@ -6040,12 +5669,6 @@ /* No comment provided by engineer. */ "You sent the contact request to %@" = "您已向 %@ 發送聯繫請求"; -/* CrowdNode */ -"You should have a positive balance on Dash Wallet" = "你的達世幣錢包上的餘額應該是一個正數"; - -/* No comment provided by engineer. */ -"You should have at least %@ to proceed with the CrowdNode verification." = "您應該至少有 %@ 才能繼續進行 CrowdNode 的驗證。"; - /* Dash DEX */ "You successfully converted DASH to %@" = "You successfully converted DASH to %@"; @@ -6064,9 +5687,6 @@ /* Coinbase/Buy Dash/Confirm Order */ "You will receive %@ Dash on your Dash Wallet on this device. Please note that it can take up to 2-3 minutes to complete a transfer." = "您將在此設備上的 達世幣錢包中收到 %@ Dash 。請注意,完成交易最多可能需要 2-3 分鐘。"; -/* CrowdNode */ -"You will receive fractional payments automatically and they will by default be reinvested, however, it is also easy to set up automatic withdrawals to receive recurring payouts." = "您將自動收到小額付款,預設情況下它們將被再投資,但是,設置自動提款以接收定期付款也很容易。"; - /* No comment provided by engineer. */ "You will transfer" = "You will transfer"; @@ -6084,21 +5704,6 @@ /* No comment provided by engineer. */ "Your credit balance is low" = "您的信用餘額偏低"; -/* CrowdNode */ -"Your CrowdNode account is creating…" = "正在創建您的 CrowdNode 帳戶…"; - -/* CrowdNode */ -"Your CrowdNode account is set up and ready to use!" = "您的 CrowdNode 帳戶已設置好並可以使用!"; - -/* Crowdnode */ -"Your CrowdNode account was created using these transactions." = "您的 CrowdNode 帳戶是使用這些交易創建的。"; - -/* CrowdNode */ -"Your CrowdNode address has been confirmed." = "您的 CrowdNode 位址已確認。"; - -/* CrowdNode */ -"Your CrowdNode address has been validated, but verification is required." = "您的 CrowdNode 地址已經過核實,但需要驗證。"; - /* No comment provided by engineer. */ "Your DASH address" = "Your DASH address"; @@ -6123,9 +5728,6 @@ /* No comment provided by engineer. */ "Your DashPay Username is ready to use" = "您的 DashPay 用戶名已經可以使用了"; -/* CrowdNode */ -"Your deposit to CrowdNode is received." = "您對 CrowdNode 的存款已收到了。"; - /* TimeSkew */ "Your device time is %@ by %d seconds. You cannot use CoinJoin due to this difference.\n\nThe time settings on your device needs to be changed to “Set time automatically” to use CoinJoin." = "您的設備時間為 %1$@ %2$d 秒。由於這個差異, 您無法使用 CoinJoin。\n\n您裝置上的時間設定需要變更為「自動設定時間」才能使用 CoinJoin。"; @@ -6192,9 +5794,6 @@ /* Maya/SwapKit */ "Your previous swap is still locking in. Please wait a few seconds before starting another one." = "Your previous swap is still locking in. Please wait a few seconds before starting another one."; -/* CrowdNode */ -"Your primary Dash address that you currently use for your CrowdNode account" = "您當前用於 CrowdNode 帳戶的主要達世幣位址"; - /* Balance info sheet */ "Your private balance. Amounts and addresses are encrypted on-chain, so your holdings and history stay confidential." = "您的私密餘額。金額和位址在鏈上均已加密,因此您的持有量和紀錄都保持機密。"; diff --git a/DashWalletTests/CoinbaseTransferAmountTests.swift b/DashWalletTests/CoinbaseTransferAmountTests.swift index ac8bc2bbbd..fcb08beeda 100644 --- a/DashWalletTests/CoinbaseTransferAmountTests.swift +++ b/DashWalletTests/CoinbaseTransferAmountTests.swift @@ -12,51 +12,6 @@ import XCTest @MainActor final class CoinbaseTransferAmountTests: XCTestCase { - func testNoCrowdNodeBalanceDoesNotRequireWarning() { - XCTAssertFalse( - TransferAmountViewModel.requiresLeftoverWarning( - crowdNodeBalance: 0, - transferAmount: UInt64.max, - minimumLeftover: 30_000, - maxSendable: 0)) - } - - func testAmountExactlyAtLeftoverThresholdDoesNotRequireWarning() { - XCTAssertFalse( - TransferAmountViewModel.requiresLeftoverWarning( - crowdNodeBalance: 1, - transferAmount: 70_000, - minimumLeftover: 30_000, - maxSendable: 100_000)) - } - - func testAmountAboveLeftoverThresholdRequiresWarning() { - XCTAssertTrue( - TransferAmountViewModel.requiresLeftoverWarning( - crowdNodeBalance: 1, - transferAmount: 70_001, - minimumLeftover: 30_000, - maxSendable: 100_000)) - } - - func testMaxSendableBelowMinimumLeftoverRequiresWarning() { - XCTAssertTrue( - TransferAmountViewModel.requiresLeftoverWarning( - crowdNodeBalance: 1, - transferAmount: 0, - minimumLeftover: 30_000, - maxSendable: 29_999)) - } - - func testLargeTransferAmountDoesNotOverflow() { - XCTAssertTrue( - TransferAmountViewModel.requiresLeftoverWarning( - crowdNodeBalance: 1, - transferAmount: UInt64.max, - minimumLeftover: 1, - maxSendable: UInt64.max)) - } - func testSyntheticSDKBalanceRefreshesDisplayedBalanceAndValidation() async { let walletState = SwiftDashSDKWalletState.shared walletState.clearAllState() diff --git a/DashWalletTests/CrowdNodeOwnershipTests.swift b/DashWalletTests/CrowdNodeOwnershipTests.swift deleted file mode 100644 index 5fa7bf39df..0000000000 --- a/DashWalletTests/CrowdNodeOwnershipTests.swift +++ /dev/null @@ -1,277 +0,0 @@ -// -// CrowdNodeOwnershipTests.swift -// DashWalletTests -// -// Ticket 32026. The stored CrowdNode account address is checked against the -// active wallet by a bounded BIP44 scan, and the answer decides whether the -// account link is trusted, kept untouched, or destroyed. These pin the -// tri-state: a scan that ran out of budget must never read as "not mine", -// and an unproven address must never activate an account — the legacy -// per-wallet key seeding can have copied it from another wallet. -// - -import Foundation -import SwiftDashSDK -import XCTest -@testable import dashpay - -@MainActor -final class CrowdNodeOwnershipTests: XCTestCase { - - // Fixtures: the same hash160 encoded for two networks, plus a mainnet - // P2SH — the address forms a real wallet can meet. - private let mainnetAddress = "XhpXm8bjSKVGaXAKeGRNHDRg9W1o22PLJG" - /// The 20 payload bytes of `mainnetAddress`, spelled out rather than as a - /// hex literal: a bare 40-character hex string trips the repo's secret - /// scanner, and a hash160 of a throwaway test address is not a secret. - private let mainnetHash160Bytes: [UInt8] = [ - 0x4e, 0x3d, 0x1f, 0x8b, 0x2c, 0x9a, 0x0e, 0x7d, 0x5b, 0x6a, - 0x3c, 0x1f, 0x8e, 0x2d, 0x4b, 0x6a, 0x9c, 0x0f, 0x7e, 0x3d, - ] - private var mainnetHash160: String { - mainnetHash160Bytes.map { String(format: "%02x", $0) }.joined() - } - private let mainnetP2SHAddress = "7h9dhRvmgdg3cUng5kAsT3sn8mdd9eYYCz" - private let testnetAddress = "yTT8n5gAss9LvG5sD7jmKEr2RnWAXScspP" - - private func lookup(hash160: String?, path: String?) -> CrowdNodeMessageSigner.OwnershipLookup { - CrowdNodeMessageSigner.OwnershipLookup( - hash160OfAddress: { _ in hash160 }, - derivationPath: { _ in path }) - } - - // MARK: ownsAddress — the tri-state - - func testScanFindingTheKeyProvesOwnership() { - let owns = CrowdNodeMessageSigner.ownsAddress( - mainnetAddress, - using: lookup(hash160: mainnetHash160, path: "m/44'/5'/0'/0/7")) - XCTAssertEqual(owns, true) - } - - func testScanExhaustionIsUnknownNotForeign() { - // The address decodes fine; the scan simply did not find it. This case - // stubs a generic miss and fixes neither an index nor a derivation - // path — on the wallet in ticket 32026 the account address was most - // likely missed because the scanned derivation paths do not reproduce - // it, not because its index ran past the bound (that wallet had issued - // only ~105 addresses). Either way the answer must be "unknown": - // answering `false` tore a live link down. - let owns = CrowdNodeMessageSigner.ownsAddress( - mainnetAddress, - using: lookup(hash160: mainnetHash160, path: nil)) - XCTAssertNil(owns) - } - - func testWalletNotUpIsUnknown() { - // A relaunch validates prefs before the SDK wallet starts. - XCTAssertNil(CrowdNodeMessageSigner.ownsAddress(mainnetAddress, using: nil)) - } - - func testUndecodableAddressIsForeign() { - // The only route to `false`: the address cannot be a P2PKH address of - // the running network, so no derivation index could ever produce it. - let owns = CrowdNodeMessageSigner.ownsAddress( - mainnetP2SHAddress, - using: lookup(hash160: nil, path: "m/44'/5'/0'/0/7")) - XCTAssertEqual(owns, false) - } - - // MARK: which addresses reach the scan at all - - func testMainnetP2PKHAddressDecodesToItsHash160() { - XCTAssertEqual( - CrowdNodeMessageSigner.hash160(ofAddress: mainnetAddress, network: .mainnet), - mainnetHash160) - } - - func testP2SHAddressIsRejectedOutright() { - // CrowdNode account addresses are BIP44 receive addresses; a P2SH - // address is not one and cannot be message-signed either. - XCTAssertNil(CrowdNodeMessageSigner.hash160(ofAddress: mainnetP2SHAddress, network: .mainnet)) - } - - func testAddressOfAnotherNetworkIsRejected() { - XCTAssertNil(CrowdNodeMessageSigner.hash160(ofAddress: testnetAddress, network: .mainnet)) - XCTAssertNil(CrowdNodeMessageSigner.hash160(ofAddress: mainnetAddress, network: .testnet)) - } - - func testMalformedAddressIsRejected() { - XCTAssertNil(CrowdNodeMessageSigner.hash160(ofAddress: "", network: .mainnet)) - XCTAssertNil(CrowdNodeMessageSigner.hash160(ofAddress: "not an address", network: .mainnet)) - // Valid base58, broken checksum. - XCTAssertNil(CrowdNodeMessageSigner.hash160( - ofAddress: "XhpXm8bjSKVGaXAKeGRNHDRg9W1o22PLJH", network: .mainnet)) - } - - // MARK: what the restore does with each verdict - - func testProvenOwnershipTrustsTheStoredAccount() { - XCTAssertEqual(CrowdNode.storedAccountVerdict(ownership: true), .trusted) - } - - func testRefutedOwnershipResetsTheAccount() { - XCTAssertEqual(CrowdNode.storedAccountVerdict(ownership: false), .alien) - } - - func testUnknownOwnershipNeitherTrustsNorResets() { - // The blocking review finding: `nil` used to be indistinguishable from - // `true` at the restore's trust decision, so legacy state copied from - // another wallet of the same network published `.linkedOnline` and - // showed that wallet's CrowdNode balance under this one. - let verdict = CrowdNode.storedAccountVerdict(ownership: Bool?.none) - XCTAssertEqual(verdict, .unproven) - XCTAssertNotEqual(verdict, .trusted, "an unproven address must not activate an account") - XCTAssertNotEqual(verdict, .alien, "an unproven address must not destroy stored data") - } - - // MARK: metadata stored beside the address - - // The second blocking finding: `validatePrefs` correctly PRESERVES an - // unproven address, but the saved online state and cached balance stored - // beside it come from the same legacy globals. Proving an address from this - // wallet's history proves nothing about them. - - private let storedAddress = "XhpXm8bjSKVGaXAKeGRNHDRg9W1o22PLJH" - private let otherAddress = "XwrJyFbdLBGuHhLBrTuUXQPGF7YXBhzRfN" - - func testProvenOwnershipKeepsTheMetadata() { - XCTAssertTrue(CrowdNode.metadataSurvivesReconstruction( - ownership: true, storedAddress: storedAddress, recoveredAddress: otherAddress), - "a proven stored address is this wallet's, so its metadata is too") - } - - func testUnprovenMetadataIsDroppedWhenAnotherAddressIsRecovered() { - // Wallet B's own history recovers B's account; the stored address (and - // therefore the balance and online state beside it) was A's. - XCTAssertFalse(CrowdNode.metadataSurvivesReconstruction( - ownership: Bool?.none, storedAddress: storedAddress, recoveredAddress: otherAddress)) - } - - func testUnprovenMetadataSurvivesWhenTheSameAddressIsRecovered() { - // The history proves the address the metadata was stored against — - // that is the account-specific evidence it was missing. - XCTAssertTrue(CrowdNode.metadataSurvivesReconstruction( - ownership: Bool?.none, storedAddress: storedAddress, recoveredAddress: storedAddress)) - } - - func testUnprovenMetadataIsDroppedWhenNothingIsRecovered() { - XCTAssertFalse(CrowdNode.metadataSurvivesReconstruction( - ownership: Bool?.none, storedAddress: storedAddress, recoveredAddress: nil)) - } - - func testMissingOrEmptyStoredAddressCarriesNoMetadata() { - XCTAssertFalse(CrowdNode.metadataSurvivesReconstruction( - ownership: Bool?.none, storedAddress: nil, recoveredAddress: otherAddress)) - XCTAssertFalse(CrowdNode.metadataSurvivesReconstruction( - ownership: Bool?.none, storedAddress: "", recoveredAddress: ""), - "an empty stored address must not match an empty recovered one") - } - - func testRefutedOwnershipNeverKeepsMetadata() { - XCTAssertFalse(CrowdNode.metadataSurvivesReconstruction( - ownership: false, storedAddress: storedAddress, recoveredAddress: otherAddress)) - } - - // MARK: the two unknowns, told apart - - // Reviewer finding 3: `Bool?` flattened "the wallet isn't up" and "the scan - // ran out" into one `nil`. Only the second is a verdict about this wallet, - // and the restore's fruitless-pass memo must not be written on the first. - - func testWalletNotUpIsDistinctFromScanExhaustion() { - XCTAssertEqual( - CrowdNodeMessageSigner.ownership(of: mainnetAddress, using: nil), - .walletUnavailable) - XCTAssertEqual( - CrowdNodeMessageSigner.ownership( - of: mainnetAddress, - using: lookup(hash160: mainnetHash160, path: nil)), - .notFoundWithinBound) - } - - func testOnlyAWalletThatWasUpProducesACheckedVerdict() { - XCTAssertFalse(CrowdNodeMessageSigner.Ownership.walletUnavailable.wasChecked, - "a pass built on this must not be memoized as fruitless") - for verdict: CrowdNodeMessageSigner.Ownership in [.owned, .foreign, .notFoundWithinBound] { - XCTAssertTrue(verdict.wasChecked) - } - } - - func testFourCaseVerdictAgreesWithTheBoolBridge() { - // The bridge stays lossy on purpose; what it must never do is disagree - // about trust or about destruction. - XCTAssertEqual( - CrowdNodeMessageSigner.ownership( - of: mainnetAddress, using: lookup(hash160: mainnetHash160, path: "m/44'/5'/0'/0/7")), - .owned) - XCTAssertEqual( - CrowdNodeMessageSigner.ownsAddress( - mainnetAddress, using: lookup(hash160: mainnetHash160, path: "m/44'/5'/0'/0/7")), - true) - XCTAssertNil(CrowdNodeMessageSigner.ownsAddress(mainnetAddress, using: nil)) - } - - func testBothUnknownsLeaveTheStoredAccountUnproven() { - // Neither may trust the account, and neither may destroy it. - for verdict: CrowdNodeMessageSigner.Ownership in [.walletUnavailable, .notFoundWithinBound] { - XCTAssertEqual(CrowdNode.storedAccountVerdict(ownership: verdict), .unproven) - } - XCTAssertEqual(CrowdNode.storedAccountVerdict(ownership: .owned), .trusted) - XCTAssertEqual(CrowdNode.storedAccountVerdict(ownership: .foreign), .alien) - } - - func testNoStoredAddressIsNotTheSameAsUnknownOwnership() { - // `validatePrefs` returns nil for "nothing stored"; there is nothing to - // trust and nothing to destroy. - let verdict = CrowdNode.storedAccountVerdict( - ownership: CrowdNodeMessageSigner.Ownership?.none) - XCTAssertEqual(verdict, .unproven) - XCTAssertNotEqual(verdict, .alien, "an absent address must never trigger a reset") - } - - // MARK: which address the online restore acts on - - // The remaining reviewer finding lives in `getOnlineAccountAddress`, not in - // the verdict: with trust withheld it reaches the API-confirmation branch - // WITH a saved address present, which it never could before this change. - // Both decisions it makes there are pinned here. - - func testAnUnprovenStoredAddressIsNeverTakenHoweverFarAlongItLooks() { - // Wallet A's address and its `.done` copied into wallet B by the legacy - // per-wallet key seeding. B must re-derive from its own history instead. - for state: CrowdNode.OnlineAccountState in [.done, .creating, .signingUp, .linking, .validating] { - XCTAssertFalse(CrowdNode.trustsStoredOnlineAddress( - trustStoredAddress: false, storedAddress: storedAddress, state: state), "\(state)") - } - } - - func testAProvenStoredAddressIsTakenOnlyWithAnOnlineAccount() { - XCTAssertTrue(CrowdNode.trustsStoredOnlineAddress( - trustStoredAddress: true, storedAddress: storedAddress, state: .done)) - XCTAssertFalse(CrowdNode.trustsStoredOnlineAddress( - trustStoredAddress: true, storedAddress: storedAddress, state: .none), - "no online account to restore") - XCTAssertFalse(CrowdNode.trustsStoredOnlineAddress( - trustStoredAddress: true, storedAddress: nil, state: .done), - "nothing stored to take") - } - - func testRecoveringTheStoredAddressDoesNotWriteTheStateBackwards() { - // The verdict is unproven on every launch for the population this - // guard exists for, so a downgrade here would repeat forever and park - // an offline account at `.linking`. - XCTAssertFalse(CrowdNode.persistsLinkingDowngrade( - confirmationAddress: storedAddress, storedAddress: storedAddress)) - } - - func testRecoveringADifferentAddressPersistsTheLinking() { - // A genuinely different account: this wallet has only just found its - // first evidence of it, and `.linking` is what that evidence supports. - XCTAssertTrue(CrowdNode.persistsLinkingDowngrade( - confirmationAddress: otherAddress, storedAddress: storedAddress)) - XCTAssertTrue(CrowdNode.persistsLinkingDowngrade( - confirmationAddress: otherAddress, storedAddress: nil), - "nothing stored, so nothing is being written backwards") - } -} diff --git a/DashWalletTests/Notifications/CrowdNodeNotificationProducerTests.swift b/DashWalletTests/Notifications/CrowdNodeNotificationProducerTests.swift deleted file mode 100644 index 56ce5d93b9..0000000000 --- a/DashWalletTests/Notifications/CrowdNodeNotificationProducerTests.swift +++ /dev/null @@ -1,137 +0,0 @@ -// -// Created by Roman Chornyi -// Copyright © 2026 Dash Core Group. All rights reserved. -// -// Licensed under the MIT License (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://opensource.org/licenses/MIT -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -import XCTest -import UserNotifications -@testable import dashpay - -/// Exercises the producer against the real dispatcher over the in-memory -/// store, so the stable-id re-arm is proven against the actual dedup. -/// The `showNotificationOnResult` guard is NOT here by design — it stays in -/// `CrowdNode.notifyIfNeeded` (screen-driven state the CrowdNode -/// controllers toggle), so every message that reaches this seam posts. -final class CrowdNodeNotificationProducerTests: XCTestCase { - private var client: FakeUserNotificationCenterClient! - private var store: InMemoryNotifiedEventStore! - private var preferences: FakeNotificationPreferenceStore! - private var dispatcher: NotificationDispatcher! - private var producer: CrowdNodeNotificationProducer! - - override func setUp() { - super.setUp() - client = FakeUserNotificationCenterClient() - store = InMemoryNotifiedEventStore() - preferences = FakeNotificationPreferenceStore() - let permissions = NotificationPermissionCoordinator(client: client, preferences: preferences) - dispatcher = NotificationDispatcher(client: client, store: store, permissions: permissions) - producer = CrowdNodeNotificationProducer(dispatcher: dispatcher, store: store) - } - - func testPostCarriesCrowdNodeTopicRouteAndPresentation() async { - let posted = await producer.post(message: "Your CrowdNode account is set up and ready to use!") - - XCTAssertTrue(posted) - XCTAssertEqual(client.addedRequests.count, 1) - let request = client.addedRequests[0] - XCTAssertEqual(request.identifier, CrowdNodeNotificationProducer.resultNotificationID) - XCTAssertEqual(request.content.threadIdentifier, NotificationTopic.crowdnode.rawValue) - XCTAssertEqual(request.content.categoryIdentifier, NotificationTopic.crowdnode.rawValue) - XCTAssertEqual(request.content.body, "Your CrowdNode account is set up and ready to use!") - XCTAssertNotNil(request.content.sound) - XCTAssertEqual(DeepLinkRoute.decode(fromUserInfo: request.content.userInfo), .staking) - XCTAssertEqual(request.content.userInfo[NotificationUserInfoKey.foregroundBehavior] as? String, - NotificationForegroundBehavior.banner.rawValue) - } - - func testRepeatedMessagesAllReachTheClientUnderOneIdentifier() async { - // A retrying operation: every message is still delivered (the store - // must not swallow the later ones as duplicates), and all of them - // share the identifier, so the notification center replaces the - // delivered banner rather than stacking one per retry. - await producer.post(message: "Deposit failed") - await producer.post(message: "Deposit failed") - await producer.post(message: "Deposit sent") - - XCTAssertEqual(client.addedRequests.count, 3) - XCTAssertTrue(client.addedRequests.allSatisfy { - $0.identifier == CrowdNodeNotificationProducer.resultNotificationID - }) - XCTAssertEqual(client.addedRequests.last?.content.body, "Deposit sent") - } - - func testRetriesLeaveOneUnseenRowAndBadgeOne() async { - await producer.post(message: "error 1") - await producer.post(message: "error 2") - await producer.post(message: "error 3") - - XCTAssertEqual(store.events.count, 1) - let unseen = await store.unseenCount() - XCTAssertEqual(unseen, 1) - XCTAssertEqual(client.addedRequests.map { $0.content.badge?.intValue }, [1, 1, 1]) - } - - func testResultAfterTheLastWasSeenIsUnseenAgain() async { - store.seed(id: CrowdNodeNotificationProducer.resultNotificationID, topic: .crowdnode, seen: true) - - let posted = await producer.post(message: "Your CrowdNode address has been confirmed.") - - XCTAssertTrue(posted) - XCTAssertEqual(store.events[CrowdNodeNotificationProducer.resultNotificationID]?.seen, false) - XCTAssertEqual(client.addedRequests.first?.content.badge?.intValue, 1) - } - - func testConcurrentPostsAreAllDelivered() async { - // Two results racing for the same row: the re-arm is serialized with - // its post, so neither is dropped as the other's duplicate. - async let first = producer.post(message: "first") - async let second = producer.post(message: "second") - let results = await [first, second] - - XCTAssertEqual(results, [true, true]) - XCTAssertEqual(client.addedRequests.count, 2) - XCTAssertEqual(store.events.count, 1) - } - - func testPermissionGateStillApplies() async { - preferences.userWantsNotifications = false - - let posted = await producer.post(message: "error text") - - XCTAssertFalse(posted) - XCTAssertTrue(client.addedRequests.isEmpty) - } - - func testPostResultTrampolineDeliversAsynchronously() { - let delivered = expectation(description: "request added") - client.onAdd = { _ in delivered.fulfill() } - - producer.postResult(message: "Your CrowdNode address has been confirmed.") - - wait(for: [delivered], timeout: 2) - XCTAssertEqual(client.addedRequests.first?.content.body, - "Your CrowdNode address has been confirmed.") - } - - func testOtherTopicsRowsAreUntouchedByTheReArm() async { - store.seed(id: "tx.abc", topic: .transactions) - - await producer.post(message: "message") - - XCTAssertNotNil(store.events["tx.abc"]) - XCTAssertEqual(store.unmarkedIds, [CrowdNodeNotificationProducer.resultNotificationID]) - } -} diff --git a/DashWalletTests/Notifications/NotificationDispatcherTests.swift b/DashWalletTests/Notifications/NotificationDispatcherTests.swift index 1bce8c65c7..454316a45e 100644 --- a/DashWalletTests/Notifications/NotificationDispatcherTests.swift +++ b/DashWalletTests/Notifications/NotificationDispatcherTests.swift @@ -36,7 +36,7 @@ final class NotificationDispatcherTests: XCTestCase { private func makeNotification(id: String = "tx.test-id", topic: NotificationTopic = .transactions, - route: DeepLinkRoute? = .staking, + route: DeepLinkRoute? = .home, behavior: NotificationForegroundBehavior = .banner) -> AppNotification { AppNotification(id: id, topic: topic, @@ -121,7 +121,7 @@ final class NotificationDispatcherTests: XCTestCase { func testBadgeIsStoreUnseenCount() async { store.seed(id: "earlier.1", topic: .transactions) - store.seed(id: "earlier.2", topic: .crowdnode) + store.seed(id: "earlier.2", topic: .swap) store.seed(id: "already.seen", topic: .transactions, seen: true) await dispatcher.post(makeNotification(id: "tx.third")) @@ -135,17 +135,17 @@ final class NotificationDispatcherTests: XCTestCase { /// carries the default level. func testInterruptionLevelIsDefaultForEveryTopic() async { await dispatcher.post(makeNotification(id: "tx.a", topic: .transactions)) - await dispatcher.post(makeNotification(id: "cn.a", topic: .crowdnode)) + await dispatcher.post(makeNotification(id: "swap.a", topic: .swap)) XCTAssertEqual(client.addedRequests[0].content.interruptionLevel, .active) XCTAssertEqual(client.addedRequests[1].content.interruptionLevel, .active) } func testRouteAndForegroundBehaviorRoundTripThroughUserInfo() async { - await dispatcher.post(makeNotification(route: .staking, behavior: .suppress)) + await dispatcher.post(makeNotification(route: .swapOrder(id: "order.1"), behavior: .suppress)) let userInfo = client.addedRequests[0].content.userInfo - XCTAssertEqual(DeepLinkRoute.decode(fromUserInfo: userInfo), .staking) + XCTAssertEqual(DeepLinkRoute.decode(fromUserInfo: userInfo), .swapOrder(id: "order.1")) XCTAssertEqual(userInfo[NotificationUserInfoKey.foregroundBehavior] as? String, NotificationForegroundBehavior.suppress.rawValue) } diff --git a/DashWalletTests/Notifications/NotificationLifecycleTests.swift b/DashWalletTests/Notifications/NotificationLifecycleTests.swift index d0bd6c72bb..3a7c4e249e 100644 --- a/DashWalletTests/Notifications/NotificationLifecycleTests.swift +++ b/DashWalletTests/Notifications/NotificationLifecycleTests.swift @@ -83,10 +83,10 @@ final class NotificationLifecycleTests: XCTestCase { client.deliveredSummaries = [ DeliveredNotificationSummary(identifier: "tx.1", threadIdentifier: NotificationTopic.transactions.rawValue), DeliveredNotificationSummary(identifier: "Now", threadIdentifier: ""), - DeliveredNotificationSummary(identifier: "CrowdNode", threadIdentifier: NotificationTopic.crowdnode.rawValue), + DeliveredNotificationSummary(identifier: "swap.1", threadIdentifier: NotificationTopic.swap.rawValue), ] store.seed(id: "tx.1", topic: .transactions) - store.seed(id: "CrowdNode", topic: .crowdnode) + store.seed(id: "swap.1", topic: .swap) await lifecycle.reconcileAfterBecomingActive() @@ -98,14 +98,29 @@ final class NotificationLifecycleTests: XCTestCase { // badge covered them too, so their store records are seen as well — // the next posted badge must not count them again. XCTAssertEqual(store.markAllSeenCalls, 1) - XCTAssertEqual(store.events["CrowdNode"]?.seen, true) + XCTAssertEqual(store.events["swap.1"]?.seen, true) let unseen = await store.unseenCount() XCTAssertEqual(unseen, 0) } + /// Notifications of kinds the app no longer posts are removed whether + /// they sit on a retired thread or carry a retired identifier. + func testReconcileRemovesRetiredThreadsAndIdentifiers() async { + client.deliveredSummaries = [ + DeliveredNotificationSummary(identifier: "tx.ab", threadIdentifier: "crowdnode"), + DeliveredNotificationSummary(identifier: "crowdnode.result", threadIdentifier: "crowdnode"), + DeliveredNotificationSummary(identifier: "CrowdNode", threadIdentifier: ""), + DeliveredNotificationSummary(identifier: "swap.1", threadIdentifier: NotificationTopic.swap.rawValue), + ] + + await lifecycle.reconcileAfterBecomingActive() + + XCTAssertEqual(client.removedDeliveredIdentifiers, [["tx.ab", "crowdnode.result", "CrowdNode"]]) + } + func testReconcileRemovesNothingWhenNoTransactionNotificationsDelivered() async { client.deliveredSummaries = [ - DeliveredNotificationSummary(identifier: "CrowdNode", threadIdentifier: NotificationTopic.crowdnode.rawValue), + DeliveredNotificationSummary(identifier: "swap.1", threadIdentifier: NotificationTopic.swap.rawValue), ] await lifecycle.reconcileAfterBecomingActive() @@ -181,12 +196,16 @@ final class NotificationLifecycleTests: XCTestCase { XCTAssertEqual(router.openedRoutes, [.url(URL(string: "https://www.dash.org")!)]) } - func testTapOnLegacyCrowdNodeIdentifierFoldsToStaking() { - // Delivered by an older build: the CrowdNode identifier without an - // encoded route must keep opening the CrowdNode screen. - lifecycle.handleNotificationTap(identifier: CrowdNode.notificationID, userInfo: [:]) + func testTapOnRouteThisBuildNoLongerKnowsDoesNothing() { + // Delivered by an older build, whose route enum had a case this one + // dropped: the route fails to decode and the tap just opens the app. + var userInfo = userInfo(behavior: .banner) + userInfo[NotificationUserInfoKey.route] = Data(#"{"staking":{}}"#.utf8) - XCTAssertEqual(router.openedRoutes, [.staking]) + lifecycle.handleNotificationTap(identifier: "tx.ab", userInfo: userInfo) + lifecycle.handleNotificationTap(identifier: "CrowdNode", userInfo: [:]) + + XCTAssertTrue(router.openedRoutes.isEmpty) } func testTapWithoutRouteDoesNothing() { diff --git a/DashWalletTests/Notifications/NotificationTopicTests.swift b/DashWalletTests/Notifications/NotificationTopicTests.swift index 190eb12770..3234ee15a6 100644 --- a/DashWalletTests/Notifications/NotificationTopicTests.swift +++ b/DashWalletTests/Notifications/NotificationTopicTests.swift @@ -24,7 +24,6 @@ final class NotificationTopicTests: XCTestCase { func testRawValuesArePinned() { XCTAssertEqual(NotificationTopic.transactions.rawValue, "transactions") XCTAssertEqual(NotificationTopic.dashpay.rawValue, "dashpay") - XCTAssertEqual(NotificationTopic.crowdnode.rawValue, "crowdnode") XCTAssertEqual(NotificationTopic.swap.rawValue, "swap") XCTAssertEqual(NotificationTopic.announcements.rawValue, "announcements") XCTAssertEqual(NotificationTopic.system.rawValue, "system") diff --git a/DashWalletTests/Notifications/NotifiedEventStoreTests.swift b/DashWalletTests/Notifications/NotifiedEventStoreTests.swift index e23073ac7a..5138864759 100644 --- a/DashWalletTests/Notifications/NotifiedEventStoreTests.swift +++ b/DashWalletTests/Notifications/NotifiedEventStoreTests.swift @@ -67,14 +67,14 @@ final class NotifiedEventStoreTests: XCTestCase { } /// `unmark` re-arms an id admitted without a record too, so a caller that - /// posts one id repeatedly (CrowdNode's result) is not refused for good + /// posts one id repeatedly is not refused for good /// while the database is failing. func testUnmarkOnFailingDatabaseReadmitsTheId() async throws { let broken = NotifiedEventStore(connection: try Connection(.inMemory)) - _ = await broken.markIfNew(id: "crowdnode.result", topic: .crowdnode) - await broken.unmark(id: "crowdnode.result") - let again = await broken.markIfNew(id: "crowdnode.result", topic: .crowdnode) + _ = await broken.markIfNew(id: "swap.result", topic: .swap) + await broken.unmark(id: "swap.result") + let again = await broken.markIfNew(id: "swap.result", topic: .swap) XCTAssertTrue(again) } @@ -83,7 +83,7 @@ final class NotifiedEventStoreTests: XCTestCase { // The id is the dedup key on its own — the same event surfacing via // another topic-tagged path must still be dropped. _ = await store.markIfNew(id: "event.1", topic: .transactions) - let again = await store.markIfNew(id: "event.1", topic: .crowdnode) + let again = await store.markIfNew(id: "event.1", topic: .swap) XCTAssertFalse(again) } @@ -91,7 +91,7 @@ final class NotifiedEventStoreTests: XCTestCase { func testUnseenCountCountsUnseenAcrossTopics() async { _ = await store.markIfNew(id: "tx.1", topic: .transactions) _ = await store.markIfNew(id: "tx.2", topic: .transactions) - _ = await store.markIfNew(id: "cn.1", topic: .crowdnode) + _ = await store.markIfNew(id: "swap.1", topic: .swap) var count = await store.unseenCount() XCTAssertEqual(count, 3) @@ -104,10 +104,10 @@ final class NotifiedEventStoreTests: XCTestCase { func testMarkAllSeenAffectsOnlyGivenTopicAndIsIdempotent() async { _ = await store.markIfNew(id: "tx.1", topic: .transactions) - _ = await store.markIfNew(id: "cn.1", topic: .crowdnode) + _ = await store.markIfNew(id: "swap.1", topic: .swap) - await store.markAllSeen(topic: .crowdnode) - await store.markAllSeen(topic: .crowdnode) + await store.markAllSeen(topic: .swap) + await store.markAllSeen(topic: .swap) let count = await store.unseenCount() XCTAssertEqual(count, 1) @@ -115,7 +115,7 @@ final class NotifiedEventStoreTests: XCTestCase { func testMarkAllSeenWithoutTopicClearsEveryTopic() async { _ = await store.markIfNew(id: "tx.1", topic: .transactions) - _ = await store.markIfNew(id: "cn.1", topic: .crowdnode) + _ = await store.markIfNew(id: "dp.1", topic: .dashpay) _ = await store.markIfNew(id: "swap.1", topic: .swap) await store.markAllSeen() @@ -123,7 +123,7 @@ final class NotifiedEventStoreTests: XCTestCase { let count = await store.unseenCount() XCTAssertEqual(count, 0) // Seen is not forgotten: the ids stay recorded for dedup. - let again = await store.markIfNew(id: "cn.1", topic: .crowdnode) + let again = await store.markIfNew(id: "swap.1", topic: .swap) XCTAssertFalse(again) } @@ -218,11 +218,11 @@ final class NotifiedEventStoreTests: XCTestCase { func testUnmarkReArmsAnIdAdmittedWhileTheDatabaseWasBroken() async throws { let db = try Connection(.inMemory) let recovering = NotifiedEventStore(connection: db) - _ = await recovering.markIfNew(id: "crowdnode.result", topic: .transactions) + _ = await recovering.markIfNew(id: "tx.result", topic: .transactions) try AddNotifiedEventsTable().migrateDatabase(db) - await recovering.unmark(id: "crowdnode.result") - let afterUnmark = await recovering.markIfNew(id: "crowdnode.result", topic: .transactions) + await recovering.unmark(id: "tx.result") + let afterUnmark = await recovering.markIfNew(id: "tx.result", topic: .transactions) XCTAssertTrue(afterUnmark) } @@ -239,4 +239,23 @@ final class NotifiedEventStoreTests: XCTestCase { let markedAgain = await store.markIfNew(id: "tx.recent", topic: .transactions) XCTAssertFalse(markedAgain) } + + /// Events of a retired topic, left unseen by an older build, stop + /// counting toward the badge; their ids still deduplicate, and other + /// topics are untouched. + func testRetiredTopicMigrationMarksItsEventsSeenAndKeepsThem() async throws { + let db = try Connection(.inMemory) + try AddNotifiedEventsTable().migrateDatabase(db) + try db.run("INSERT INTO notified_events (id, topic, created_at, seen_at) VALUES (?, ?, ?, NULL)", + "tx.ab", "crowdnode", Int64(Date().timeIntervalSince1970)) + let retiredStore = NotifiedEventStore(connection: db) + _ = await retiredStore.markIfNew(id: "tx.1", topic: .transactions) + + try MarkRetiredNotificationTopicsSeen().migrateDatabase(db) + + let unseen = await retiredStore.unseenCount() + XCTAssertEqual(unseen, 1) + let again = await retiredStore.markIfNew(id: "tx.ab", topic: .transactions) + XCTAssertFalse(again) + } } diff --git a/DashWalletTests/Notifications/TransactionNotificationProducerTests.swift b/DashWalletTests/Notifications/TransactionNotificationProducerTests.swift index a08c3bd2e1..92d22bf1b9 100644 --- a/DashWalletTests/Notifications/TransactionNotificationProducerTests.swift +++ b/DashWalletTests/Notifications/TransactionNotificationProducerTests.swift @@ -28,8 +28,6 @@ final class TransactionNotificationProducerTests: XCTestCase { /// to it. private static let referenceNow = Date(timeIntervalSince1970: 1_756_000_000) - private static let crowdNodeDepositAmount = ApiCode.depositReceived.rawValue + CrowdNode.apiOffset - private var client: FakeUserNotificationCenterClient! private var store: InMemoryNotifiedEventStore! private var preferences: FakeNotificationPreferenceStore! @@ -106,13 +104,10 @@ final class TransactionNotificationProducerTests: XCTestCase { txid: txid, txidHexDisplay: String(repeating: String(format: "%02x", txidByte), count: 32), outputs: [], - inputAddresses: [], timestamp: hasTimestamp ? timestamp : nil, blockHeight: blockHeight ?? (minedAge == nil ? 0 : 1), minedAt: minedAge.map { Self.referenceNow.addingTimeInterval(-$0) }, - ownOutputsAmount: netAmount > 0 ? UInt64(netAmount) : 0, ownOutputAddresses: [], - isChainAccepted: true, context: 1, wrapped: wrapped) } @@ -140,19 +135,19 @@ final class TransactionNotificationProducerTests: XCTestCase { .transactionDetail(txid: Data(repeating: 0xab, count: 32))) } - func testCrowdNodeDepositAmountClassifiesToCrowdNodeKeepingTxIdentity() async { - rows = [makeRow(txidByte: 0xcd, netAmount: Int64(Self.crowdNodeDepositAmount))] + /// No amount gets a topic of its own: 20_008 duffs, an amount a staking + /// service uses as a signal, is an ordinary received payment. + func testSignalSizedAmountIsAnOrdinaryTransaction() async { + rows = [makeRow(txidByte: 0xcd, netAmount: 20_008)] await producer.scanAndNotify() XCTAssertEqual(client.addedRequests.count, 1) let request = client.addedRequests[0] - // Classification changes copy and route only — identity is the txid. XCTAssertEqual(request.identifier, expectedId(txidByte: 0xcd)) - XCTAssertEqual(request.content.threadIdentifier, NotificationTopic.crowdnode.rawValue) - XCTAssertEqual(request.content.body, - NSLocalizedString("Your deposit to CrowdNode is received.", comment: "CrowdNode")) - XCTAssertEqual(DeepLinkRoute.decode(fromUserInfo: request.content.userInfo), .staking) + XCTAssertEqual(request.content.threadIdentifier, NotificationTopic.transactions.rawValue) + XCTAssertEqual(DeepLinkRoute.decode(fromUserInfo: request.content.userInfo), + .transactionDetail(txid: Data(repeating: 0xcd, count: 32))) } func testMovedAndSentRowsNeverPost() async { @@ -405,13 +400,13 @@ final class TransactionNotificationProducerTests: XCTestCase { XCTAssertEqual(watchBodies.count, 1) } - func testForegroundStillPostsCrowdNodeDeposit() async { + func testForegroundDropsSignalSizedAmountLikeAnyPayment() async { appState.isApplicationActive = true - rows = [makeRow(netAmount: Int64(Self.crowdNodeDepositAmount))] + rows = [makeRow(netAmount: 20_008)] await producer.scanAndNotify() - XCTAssertEqual(client.addedRequests.count, 1) + XCTAssertTrue(client.addedRequests.isEmpty) } // MARK: Watch bridge diff --git a/DashWalletTests/RetiredCrowdNodeDefaultsTests.swift b/DashWalletTests/RetiredCrowdNodeDefaultsTests.swift new file mode 100644 index 0000000000..2b3f434e84 --- /dev/null +++ b/DashWalletTests/RetiredCrowdNodeDefaultsTests.swift @@ -0,0 +1,116 @@ +// +// RetiredCrowdNodeDefaultsTests.swift +// DashWalletTests +// +// Copyright © 2026 Dash Core Group. All rights reserved. +// + +import XCTest +@testable import dashpay + +final class RetiredCrowdNodeDefaultsTests: XCTestCase { + private var suiteName: String! + private var defaults: UserDefaults! + + override func setUp() { + super.setUp() + suiteName = "RetiredCrowdNodeDefaultsTests.\(UUID().uuidString)" + defaults = UserDefaults(suiteName: suiteName) + } + + override func tearDown() { + defaults.removePersistentDomain(forName: suiteName) + defaults = nil + super.tearDown() + } + + func testRemovesGlobalAndBarePerWalletKeys() { + for key in RetiredCrowdNodeDefaults.globalKeys + RetiredCrowdNodeDefaults.perWalletKeys { + defaults.set(true, forKey: key) + } + + RetiredCrowdNodeDefaults.removeAll(from: defaults) + + for key in RetiredCrowdNodeDefaults.globalKeys + RetiredCrowdNodeDefaults.perWalletKeys { + XCTAssertNil(defaults.object(forKey: key), key) + } + } + + func testRemovesPerWalletKeysOfEveryWallet() { + let keys = RetiredCrowdNodeDefaults.perWalletKeys.flatMap { ["\($0)_aa01", "\($0)_bb02"] } + for key in keys { + defaults.set(1, forKey: key) + } + + RetiredCrowdNodeDefaults.removeAll(from: defaults) + + for key in keys { + XCTAssertNil(defaults.object(forKey: key), key) + } + } + + /// The online-state key starts with a Cyrillic "с": a Latin spelling + /// would match nothing a real install wrote. + func testRemovesTheCyrillicPrefixedKey() { + let written = "\u{0441}rowdNodeOnlineAccountStateKey" + XCTAssertNotEqual(written, "crowdNodeOnlineAccountStateKey") + defaults.set(3, forKey: written) + defaults.set(3, forKey: "\(written)_aa01") + + RetiredCrowdNodeDefaults.removeAll(from: defaults) + + XCTAssertNil(defaults.object(forKey: written)) + XCTAssertNil(defaults.object(forKey: "\(written)_aa01")) + } + + func testLeavesOtherKeysAlone() { + let others = [ + "lastKnownCrowdNodeBalanceKeyExtra", + "feePercentageKey_aa01", + "coinJoinWithdrawalTags_aa01", + "shortcuts", + ] + for key in others { + defaults.set(1, forKey: key) + } + + RetiredCrowdNodeDefaults.removeAll(from: defaults) + + for key in others { + XCTAssertNotNil(defaults.object(forKey: key), key) + } + } + + func testRunsOnceWithProtectedDataAndRecordsIt() { + defaults.set(1, forKey: "crowdNodeInfoShownKey") + + RetiredCrowdNodeDefaults.removeAllOnce(from: defaults, isProtectedDataAvailable: true) + + XCTAssertNil(defaults.object(forKey: "crowdNodeInfoShownKey")) + XCTAssertTrue(defaults.bool(forKey: RetiredCrowdNodeDefaults.doneKey)) + // Recorded as done: a later run touches nothing. + defaults.set(1, forKey: "crowdNodeInfoShownKey") + RetiredCrowdNodeDefaults.removeAllOnce(from: defaults, isProtectedDataAvailable: true) + XCTAssertNotNil(defaults.object(forKey: "crowdNodeInfoShownKey")) + } + + /// Before the first unlock the defaults can read back empty, so nothing + /// is recorded and the next launch does the work. + func testWithoutProtectedDataNothingIsRecorded() { + defaults.set(1, forKey: "crowdNodeInfoShownKey") + + RetiredCrowdNodeDefaults.removeAllOnce(from: defaults, isProtectedDataAvailable: false) + + XCTAssertNotNil(defaults.object(forKey: "crowdNodeInfoShownKey")) + XCTAssertFalse(defaults.bool(forKey: RetiredCrowdNodeDefaults.doneKey)) + } + + func testSecondRunIsHarmless() { + defaults.set(1, forKey: "crowdNodeInfoShownKey") + + RetiredCrowdNodeDefaults.removeAll(from: defaults) + RetiredCrowdNodeDefaults.removeAll(from: defaults) + + XCTAssertNil(defaults.object(forKey: "crowdNodeInfoShownKey")) + } +} diff --git a/DashWalletTests/ShortcutActionTypeTests.swift b/DashWalletTests/ShortcutActionTypeTests.swift new file mode 100644 index 0000000000..b511748443 --- /dev/null +++ b/DashWalletTests/ShortcutActionTypeTests.swift @@ -0,0 +1,47 @@ +// +// ShortcutActionTypeTests.swift +// DashWalletTests +// +// Copyright © 2026 Dash Core Group. All rights reserved. +// + +import XCTest +@testable import dashpay + +final class ShortcutActionTypeTests: XCTestCase { + /// Raw values persist in `DWGlobalOptions.shortcuts`; a shifted value + /// silently swaps the buttons on every saved bar. + func testRawValuesArePinned() { + let pinned: [(ShortcutActionType, Int)] = [ + (.secureWallet, 1), (.scanToPay, 2), (.payToAddress, 3), (.buySellDash, 4), + (.payWithNFC, 5), (.localCurrency, 6), (.importPrivateKey, 7), (.switchToTestnet, 8), + (.switchToMainnet, 9), (.reportAnIssue, 10), (.createUsername, 11), (.receive, 12), + (.explore, 13), (.spend, 14), (.send, 15), (.atm, 16), (.sendToContact, 17), + (.coinbase, 19), (.uphold, 20), (.topper, 21), (.getTestDash, 22), + (.switchWallet, 23), (.dashDEX, 24), (.nodes, 25), + ] + for (type, rawValue) in pinned { + XCTAssertEqual(type.rawValue, rawValue, "\(type)") + } + } + + func testRetiredRawValueIsNotACase() { + XCTAssertNil(ShortcutActionType(rawValue: ShortcutActionType.retiredRawValue)) + } + + func testRetiredEntryBecomesSpendOrFaucet() { + XCTAssertEqual(ShortcutActionType.replacingRetired(in: [12, 15, 13, 18], isTestnet: false), [12, 15, 13, 14]) + XCTAssertEqual(ShortcutActionType.replacingRetired(in: [12, 15, 13, 18], isTestnet: true), [12, 15, 13, 22]) + } + + func testRetiredEntryNeverDuplicatesAButtonOnTheBar() { + // Spend and Explore are taken, so the retired slot gets Receive. + XCTAssertEqual(ShortcutActionType.replacingRetired(in: [14, 18, 13, 15], isTestnet: false), [14, 12, 13, 15]) + // Faucet taken on testnet: the next free fallback. + XCTAssertEqual(ShortcutActionType.replacingRetired(in: [22, 13, 12, 18], isTestnet: true), [22, 13, 12, 15]) + } + + func testBarWithoutRetiredEntryIsUnchanged() { + XCTAssertEqual(ShortcutActionType.replacingRetired(in: [12, 15, 19, 999], isTestnet: false), [12, 15, 19, 999]) + } +} diff --git a/DashWalletTests/TransactionDirectionTests.swift b/DashWalletTests/TransactionDirectionTests.swift index 80a3dea296..7e3af69f9c 100644 --- a/DashWalletTests/TransactionDirectionTests.swift +++ b/DashWalletTests/TransactionDirectionTests.swift @@ -82,22 +82,6 @@ final class TransactionDirectionTests: XCTestCase { XCTAssertEqual(makeTransaction(directionRaw: 0, netAmount: 100).defaultTaxCategory, .transferIn) } - func testCrowdNodeTopUpStillRequiresMovedDirection() { - let address = "Xcrowdnode" - let output = ObservedTransaction.Output( - address: address, - amount: CrowdNode.requiredForSignup) - let moved = makeObservedTransaction( - wrapped: makeTransaction(directionRaw: 1, netAmount: -10, fee: 10), - output: output) - let sent = makeObservedTransaction( - wrapped: makeTransaction(directionRaw: 1, netAmount: -110, fee: 10), - output: output) - - XCTAssertTrue(CrowdNodeTopUpTx(address: address).matches(moved)) - XCTAssertFalse(CrowdNodeTopUpTx(address: address).matches(sent)) - } - private func makeTransaction( directionRaw: UInt32, netAmount: Int64, @@ -112,25 +96,6 @@ final class TransactionDirectionTests: XCTestCase { date: Date(timeIntervalSince1970: 1)) } - private func makeObservedTransaction( - wrapped: Transaction, - output: ObservedTransaction.Output - ) -> ObservedTransaction { - ObservedTransaction( - txid: wrapped.txHashData, - txidHexDisplay: wrapped.txHashHexString, - outputs: [output], - inputAddresses: [], - timestamp: wrapped.date, - blockHeight: 1, - minedAt: wrapped.date, - ownOutputsAmount: 0, - ownOutputAddresses: [], - isChainAccepted: true, - context: 2, - wrapped: wrapped) - } - private func assertPresentation( _ direction: TransactionDirection, titleKey: String, diff --git a/scripts/a11y_baseline.json b/scripts/a11y_baseline.json index 9afabcbcc9..410a9e874f 100644 --- a/scripts/a11y_baseline.json +++ b/scripts/a11y_baseline.json @@ -7,18 +7,18 @@ ], "counts": { "A11Y008": 8, - "A11Y002": 10, + "A11Y002": 8, "A11Y003": 1, "A11Y004": 37, "A11Y005": 1, - "A11Y006": 2, + "A11Y006": 1, "A11Y009": 2, "A11Y010": 3, - "A11Y011": 11, + "A11Y011": 5, "A11Y012": 31, "A11Y007": 559 }, - "total": 665, + "total": 656, "findings": [ { "rule": "A11Y008", @@ -76,20 +76,6 @@ "line_when_recorded": 68, "snippet": "public static let caption2: Font = .system(size: 11, weight: .regular)" }, - { - "rule": "A11Y002", - "path": "DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodePortalViewController.swift", - "fingerprint": "3ed4ba51690bb49c", - "line_when_recorded": 115, - "snippet": "navigationItem.leftBarButtonItem = UIBarButtonItem(customView: backButton)" - }, - { - "rule": "A11Y002", - "path": "DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodePortalViewController.swift", - "fingerprint": "67615e7739843196", - "line_when_recorded": 121, - "snippet": "let button = UIBarButtonItem(image: buttonImage, style: UIBarButtonItem.Style.plain, target: self, action: #selector(infoButtonAction))" - }, { "rule": "A11Y002", "path": "DashWallet/Sources/UI/Explore Dash/Merchants & ATMs/List/ExplorePointOfUseListViewController.swift", @@ -419,13 +405,6 @@ "line_when_recorded": 232, "snippet": "Toggle(isOn: $isToggled) { }" }, - { - "rule": "A11Y006", - "path": "DashWallet/Sources/UI/CrowdNode/Portal/CrowdNodePortalViewController.swift", - "fingerprint": "78003431c215cd98", - "line_when_recorded": 109, - "snippet": "let backButton = UIButton(type: .custom)" - }, { "rule": "A11Y006", "path": "DashWallet/Sources/UI/Views/Navigation/BaseNavigationController.swift", @@ -496,48 +475,6 @@ "line_when_recorded": 502, "snippet": "