gitextract_v0r6jup7/ ├── .github/ │ └── workflows/ │ └── pull-request-notify.yml ├── .gitignore ├── .gitmodules ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── io/ │ │ └── horizontalsystems/ │ │ └── bitcoinkit/ │ │ └── demo/ │ │ ├── App.kt │ │ ├── BalanceFragment.kt │ │ ├── FeePriority.kt │ │ ├── MainActivity.kt │ │ ├── MainViewModel.kt │ │ ├── NumberFormatHelper.kt │ │ ├── SendReceiveFragment.kt │ │ └── TransactionsFragment.kt │ └── res/ │ ├── drawable/ │ │ └── ic_launcher_background.xml │ ├── drawable-v24/ │ │ └── ic_launcher_foreground.xml │ ├── layout/ │ │ ├── activity_main.xml │ │ ├── fragment_balance.xml │ │ ├── fragment_send_receive.xml │ │ ├── fragment_transactions.xml │ │ └── view_holder_transaction.xml │ ├── menu/ │ │ └── navigation.xml │ ├── mipmap-anydpi-v26/ │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ └── values/ │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── bitcoincashkit/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── kotlin/ │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── bitcoincash/ │ │ │ ├── BitcoinCashKit.kt │ │ │ ├── MainNetBitcoinCash.kt │ │ │ ├── TestNetBitcoinCash.kt │ │ │ └── blocks/ │ │ │ ├── AsertAlgorithm.java │ │ │ ├── BitcoinCashBlockValidatorHelper.kt │ │ │ ├── Utils.java │ │ │ └── validators/ │ │ │ ├── AsertValidator.kt │ │ │ ├── DAAValidator.kt │ │ │ ├── EDAValidator.kt │ │ │ └── ForkValidator.kt │ │ └── resources/ │ │ ├── MainNetBitcoinCash-bip44.checkpoint │ │ ├── MainNetBitcoinCash.checkpoint │ │ ├── TestNetBitcoinCash-bip44.checkpoint │ │ └── TestNetBitcoinCash.checkpoint │ └── test/ │ ├── kotlin/ │ │ └── io/ │ │ └── horizontalsystems/ │ │ ├── Fixtures.kt │ │ └── bitcoincash/ │ │ └── blocks/ │ │ ├── BitcoinCashBlockValidatorHelperTest.kt │ │ └── validators/ │ │ ├── DAAValidatorTest.kt │ │ └── ForkValidatorTest.kt │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── bitcoincore/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── bitcoincore/ │ │ │ ├── DustCalculator.kt │ │ │ ├── crypto/ │ │ │ │ ├── Base58.java │ │ │ │ ├── Bech32.java │ │ │ │ ├── Bech32Cash.java │ │ │ │ ├── Bech32Segwit.java │ │ │ │ ├── CompactBits.java │ │ │ │ ├── MurmurHash3.java │ │ │ │ └── schnorr/ │ │ │ │ ├── Pair.java │ │ │ │ ├── Point.java │ │ │ │ ├── Schnorr.java │ │ │ │ ├── SchnorrOld.java │ │ │ │ └── Util.java │ │ │ ├── exceptions/ │ │ │ │ ├── AddressFormatException.java │ │ │ │ └── BitcoinException.java │ │ │ ├── io/ │ │ │ │ ├── BitcoinInput.java │ │ │ │ ├── BitcoinInputMarkable.java │ │ │ │ ├── BitcoinOutput.java │ │ │ │ └── UnsafeByteArrayOutputStream.java │ │ │ └── utils/ │ │ │ ├── HashUtils.java │ │ │ └── Utils.java │ │ ├── kotlin/ │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── bitcoincore/ │ │ │ ├── AbstractKit.kt │ │ │ ├── BitcoinCore.kt │ │ │ ├── BitcoinCoreBuilder.kt │ │ │ ├── WatchAddressPublicKeyManager.kt │ │ │ ├── WatchedTransactionManager.kt │ │ │ ├── apisync/ │ │ │ │ ├── BCoinApi.kt │ │ │ │ ├── BiApiTransactionProvider.kt │ │ │ │ ├── BlockHashFetcher.kt │ │ │ │ ├── BlockchainComApi.kt │ │ │ │ ├── HsBlockHashFetcher.kt │ │ │ │ ├── InsightApi.kt │ │ │ │ ├── blockchair/ │ │ │ │ │ ├── BlockchairApi.kt │ │ │ │ │ ├── BlockchairApiSyncer.kt │ │ │ │ │ ├── BlockchairBlockHashFetcher.kt │ │ │ │ │ ├── BlockchairLastBlockProvider.kt │ │ │ │ │ └── BlockchairTransactionProvider.kt │ │ │ │ ├── legacy/ │ │ │ │ │ ├── ApiSyncer.kt │ │ │ │ │ ├── BlockHashDiscoveryBatch.kt │ │ │ │ │ ├── BlockHashScanHelper.kt │ │ │ │ │ ├── BlockHashScanner.kt │ │ │ │ │ └── PublicKeyFetcher.kt │ │ │ │ └── model/ │ │ │ │ ├── AddressItem.kt │ │ │ │ ├── BlockHeaderItem.kt │ │ │ │ └── TransactionItem.kt │ │ │ ├── blocks/ │ │ │ │ ├── BlockDownload.kt │ │ │ │ ├── BlockMedianTimeHelper.kt │ │ │ │ ├── BlockSyncer.kt │ │ │ │ ├── Blockchain.kt │ │ │ │ ├── BloomFilterLoader.kt │ │ │ │ ├── IBlockchainDataListener.kt │ │ │ │ ├── IPeerSyncListener.kt │ │ │ │ ├── InitialBlockDownload.kt │ │ │ │ ├── MerkleBlockExtractor.kt │ │ │ │ └── validators/ │ │ │ │ ├── BitsValidator.kt │ │ │ │ ├── BlockValidatorChain.kt │ │ │ │ ├── BlockValidatorException.kt │ │ │ │ ├── BlockValidatorSet.kt │ │ │ │ ├── IBlockValidator.kt │ │ │ │ ├── LegacyDifficultyAdjustmentValidator.kt │ │ │ │ ├── LegacyTestNetDifficultyValidator.kt │ │ │ │ └── ProofOfWorkValidator.kt │ │ │ ├── core/ │ │ │ │ ├── AccountWallet.kt │ │ │ │ ├── BaseTransactionInfoConverter.kt │ │ │ │ ├── DataProvider.kt │ │ │ │ ├── DoubleSha256Hasher.kt │ │ │ │ ├── Extensions.kt │ │ │ │ ├── HashBytes.kt │ │ │ │ ├── IHasher.kt │ │ │ │ ├── Interfaces.kt │ │ │ │ ├── PluginManager.kt │ │ │ │ ├── TransactionDataSorterFactory.kt │ │ │ │ ├── TransactionInfoConverter.kt │ │ │ │ ├── Wallet.kt │ │ │ │ └── WatchAccountWallet.kt │ │ │ ├── crypto/ │ │ │ │ └── BloomFilter.kt │ │ │ ├── extensions/ │ │ │ │ ├── Array.kt │ │ │ │ └── String.kt │ │ │ ├── managers/ │ │ │ │ ├── AccountPublicKeyManager.kt │ │ │ │ ├── ApiManager.kt │ │ │ │ ├── ApiSyncStateManager.kt │ │ │ │ ├── BlockValidatorHelper.kt │ │ │ │ ├── BloomFilterManager.kt │ │ │ │ ├── ConnectionManager.kt │ │ │ │ ├── IUnspentOutputProvider.kt │ │ │ │ ├── IUnspentOutputSelector.kt │ │ │ │ ├── IrregularOutputFinder.kt │ │ │ │ ├── PendingOutpointsProvider.kt │ │ │ │ ├── PublicKeyManager.kt │ │ │ │ ├── RestoreKeyConverters.kt │ │ │ │ ├── SyncManager.kt │ │ │ │ ├── UnspentOutputProvider.kt │ │ │ │ ├── UnspentOutputQueue.kt │ │ │ │ ├── UnspentOutputSelector.kt │ │ │ │ └── UnspentOutputSelectorSingleNoChange.kt │ │ │ ├── models/ │ │ │ │ ├── Address.kt │ │ │ │ ├── BitcoinPaymentData.kt │ │ │ │ ├── BitcoinSendInfo.kt │ │ │ │ ├── Block.kt │ │ │ │ ├── BlockHash.kt │ │ │ │ ├── BlockHashPublicKey.kt │ │ │ │ ├── BlockchainState.kt │ │ │ │ ├── Checkpoint.kt │ │ │ │ ├── InvalidTransaction.kt │ │ │ │ ├── InventoryItem.kt │ │ │ │ ├── MerkleBlock.kt │ │ │ │ ├── NetworkAddress.kt │ │ │ │ ├── PeerAddress.kt │ │ │ │ ├── PublicKey.kt │ │ │ │ ├── SentTransaction.kt │ │ │ │ ├── Transaction.kt │ │ │ │ ├── TransactionDataSortType.kt │ │ │ │ ├── TransactionInfo.kt │ │ │ │ ├── TransactionInput.kt │ │ │ │ ├── TransactionMetadata.kt │ │ │ │ ├── TransactionOutput.kt │ │ │ │ ├── UsedAddress.kt │ │ │ │ └── WatchAddressPublicKey.kt │ │ │ ├── network/ │ │ │ │ ├── Network.kt │ │ │ │ ├── messages/ │ │ │ │ │ ├── AddrMessage.kt │ │ │ │ │ ├── FilterLoadMessage.kt │ │ │ │ │ ├── GetBlocksMessage.kt │ │ │ │ │ ├── GetDataMessage.kt │ │ │ │ │ ├── GetHeadersMessage.kt │ │ │ │ │ ├── HeadersMessage.kt │ │ │ │ │ ├── IMessage.kt │ │ │ │ │ ├── InvMessage.kt │ │ │ │ │ ├── MempoolMessage.kt │ │ │ │ │ ├── MerkleBlockMessage.kt │ │ │ │ │ ├── PingMessage.kt │ │ │ │ │ ├── PongMessage.kt │ │ │ │ │ ├── RejectMessage.kt │ │ │ │ │ ├── TransactionMessage.kt │ │ │ │ │ ├── UnknownMessage.kt │ │ │ │ │ ├── VerAckMessage.kt │ │ │ │ │ └── VersionMessage.kt │ │ │ │ └── peer/ │ │ │ │ ├── IInventoryItemsHandler.kt │ │ │ │ ├── IPeerTaskHandler.kt │ │ │ │ ├── MempoolTransactions.kt │ │ │ │ ├── Peer.kt │ │ │ │ ├── PeerAddressManager.kt │ │ │ │ ├── PeerConnection.kt │ │ │ │ ├── PeerDiscover.kt │ │ │ │ ├── PeerGroup.kt │ │ │ │ ├── PeerManager.kt │ │ │ │ ├── PeerTimer.kt │ │ │ │ └── task/ │ │ │ │ ├── GetBlockHashesTask.kt │ │ │ │ ├── GetBlockHeadersTask.kt │ │ │ │ ├── GetMerkleBlocksTask.kt │ │ │ │ ├── PeerTask.kt │ │ │ │ ├── RequestTransactionsTask.kt │ │ │ │ └── SendTransactionTask.kt │ │ │ ├── rbf/ │ │ │ │ ├── ReplacementTransaction.kt │ │ │ │ ├── ReplacementTransactionBuilder.kt │ │ │ │ └── ReplacementType.kt │ │ │ ├── serializers/ │ │ │ │ ├── BlockHeaderParser.kt │ │ │ │ ├── InputSerializer.kt │ │ │ │ ├── OutputSerializer.kt │ │ │ │ └── TransactionSerializer.kt │ │ │ ├── storage/ │ │ │ │ ├── BlockDao.kt │ │ │ │ ├── BlockHashDao.kt │ │ │ │ ├── BlockHashPublicKeyDao.kt │ │ │ │ ├── BlockchainStateDao.kt │ │ │ │ ├── CoreDatabase.kt │ │ │ │ ├── DataObjects.kt │ │ │ │ ├── DataTypeConverters.kt │ │ │ │ ├── InvalidTransactionDao.kt │ │ │ │ ├── PeerAddressDao.kt │ │ │ │ ├── PublicKeyDao.kt │ │ │ │ ├── SentTransactionDao.kt │ │ │ │ ├── Storage.kt │ │ │ │ ├── TransactionDao.kt │ │ │ │ ├── TransactionInputDao.kt │ │ │ │ ├── TransactionMetadataDao.kt │ │ │ │ ├── TransactionOutputDao.kt │ │ │ │ └── migrations/ │ │ │ │ ├── Migration_10_11.kt │ │ │ │ ├── Migration_11_12.kt │ │ │ │ ├── Migration_12_13.kt │ │ │ │ ├── Migration_13_14.kt │ │ │ │ ├── Migration_14_15.kt │ │ │ │ ├── Migration_15_16.kt │ │ │ │ ├── Migration_16_17.kt │ │ │ │ ├── Migration_17_18.kt │ │ │ │ └── Migration_18_19.kt │ │ │ ├── transactions/ │ │ │ │ ├── BlockTransactionProcessor.kt │ │ │ │ ├── PendingTransactionProcessor.kt │ │ │ │ ├── SendTransactionsOnPeersSynced.kt │ │ │ │ ├── TransactionConflictsResolver.kt │ │ │ │ ├── TransactionCreator.kt │ │ │ │ ├── TransactionFeeCalculator.kt │ │ │ │ ├── TransactionInvalidator.kt │ │ │ │ ├── TransactionSendTimer.kt │ │ │ │ ├── TransactionSender.kt │ │ │ │ ├── TransactionSizeCalculator.kt │ │ │ │ ├── TransactionSyncer.kt │ │ │ │ ├── builder/ │ │ │ │ │ ├── ECKey.kt │ │ │ │ │ ├── EcdsaInputSigner.kt │ │ │ │ │ ├── InputSetter.kt │ │ │ │ │ ├── LockTimeSetter.kt │ │ │ │ │ ├── MutableTransaction.kt │ │ │ │ │ ├── OutputSetter.kt │ │ │ │ │ ├── RecipientSetter.kt │ │ │ │ │ ├── SchnorrInputSigner.kt │ │ │ │ │ ├── TransactionBuilder.kt │ │ │ │ │ └── TransactionSigner.kt │ │ │ │ ├── extractors/ │ │ │ │ │ ├── MyOutputsCache.kt │ │ │ │ │ ├── TransactionExtractor.kt │ │ │ │ │ └── TransactionMetadataExtractor.kt │ │ │ │ └── scripts/ │ │ │ │ ├── OpCodes.kt │ │ │ │ └── Script.kt │ │ │ └── utils/ │ │ │ ├── Base58AddressConverter.kt │ │ │ ├── Bech32AddressConverter.kt │ │ │ ├── Bip69.kt │ │ │ ├── DirectExecutor.kt │ │ │ ├── IAddressConverter.kt │ │ │ ├── MainThreadExecutor.kt │ │ │ ├── MerkleBranch.kt │ │ │ ├── NetworkUtils.kt │ │ │ ├── PaymentAddressParser.kt │ │ │ └── TransactionDataSorters.kt │ │ └── res/ │ │ └── values/ │ │ └── strings.xml │ └── test/ │ ├── kotlin/ │ │ └── io/ │ │ └── horizontalsystems/ │ │ └── bitcoincore/ │ │ ├── Fixtures.kt │ │ ├── RxTestRule.kt │ │ ├── TestHelpers.kt │ │ ├── blocks/ │ │ │ ├── BlockSyncerTest.kt │ │ │ ├── BlockchainTest.kt │ │ │ └── validators/ │ │ │ ├── BitsValidatorTest.kt │ │ │ ├── LegacyDifficultyAdjustmentValidatorTest.kt │ │ │ ├── LegacyTestNetDifficultyValidatorTest.kt │ │ │ └── ProofOfWorkValidatorTest.kt │ │ ├── core/ │ │ │ └── DataProviderTest.kt │ │ ├── managers/ │ │ │ ├── ApiManagerTest.kt │ │ │ ├── BlockDiscoveryBatchTest.kt │ │ │ ├── BlockHashFetcherHelperTest.kt │ │ │ ├── BlockHashFetcherTest.kt │ │ │ ├── InitialSyncerTest.kt │ │ │ ├── IrregularOutputFinderTest.kt │ │ │ ├── StateManagerTest.kt │ │ │ ├── SyncManagerTest.kt │ │ │ ├── UnspentOutputProviderTest.kt │ │ │ ├── UnspentOutputSelectorSingleNoChangeTest.kt │ │ │ └── UnspentOutputSelectorTest.kt │ │ ├── message/ │ │ │ ├── MerkleBlockExtractorTest.kt │ │ │ └── TransactionMessageParserTest.kt │ │ ├── models/ │ │ │ └── TransactionTest.kt │ │ ├── network/ │ │ │ ├── PeerGroupTest.kt │ │ │ ├── PeerManagerTest.kt │ │ │ ├── PeerTest.kt │ │ │ └── peer/ │ │ │ ├── PeerHostManagerTest.kt │ │ │ └── task/ │ │ │ └── SendTransactionTaskTest.kt │ │ ├── transactions/ │ │ │ ├── TransactionExtractorTest.kt │ │ │ ├── TransactionProcessorTest.kt │ │ │ ├── TransactionSenderTest.kt │ │ │ ├── TransactionSizeCalculatorTest.kt │ │ │ ├── TransactionSyncerTest.kt │ │ │ ├── builder/ │ │ │ │ └── InputSignerTest.kt │ │ │ └── scripts/ │ │ │ └── ScriptTest.kt │ │ └── utils/ │ │ ├── AddressConverterTest.kt │ │ ├── Bip69Test.kt │ │ ├── CashAddressConverterTest.kt │ │ ├── NetworkUtilsTest.kt │ │ ├── PaymentAddressParserTest.kt │ │ └── SegwitAddressConverterTest.kt │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── bitcoinkit/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── kotlin/ │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── bitcoinkit/ │ │ │ ├── BitcoinKit.kt │ │ │ ├── MainNet.kt │ │ │ ├── RegTest.kt │ │ │ ├── TestNet.kt │ │ │ ├── core/ │ │ │ │ └── DataProvider.kt │ │ │ └── utils/ │ │ │ └── AddressConverter.kt │ │ └── resources/ │ │ ├── MainNet-bip44.checkpoint │ │ ├── MainNet.checkpoint │ │ ├── TestNet-bip44.checkpoint │ │ └── TestNet.checkpoint │ └── test/ │ ├── kotlin/ │ │ └── io/ │ │ └── horizontalsystems/ │ │ └── bitcoinkit/ │ │ ├── Fixtures.kt │ │ └── MainNetTest.kt │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── build.gradle ├── dashkit/ │ ├── .gitignore │ ├── build.gradle │ ├── cpp/ │ │ ├── CMakeLists.txt │ │ ├── config.h │ │ └── dashj-bls/ │ │ ├── CMakeLists.txt │ │ ├── bls-signatures-src.cmake │ │ ├── bls-signatures.cmake │ │ ├── dashj-bls-signature-wrapper.cpp │ │ ├── pthread.c │ │ └── stdio.cpp │ ├── libs/ │ │ └── dashj-bls-0.15.3.jar │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── kotlin/ │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── dashkit/ │ │ │ ├── DashKit.kt │ │ │ ├── DashKitErrors.kt │ │ │ ├── IDashStorage.kt │ │ │ ├── IInstantTransactionDelegate.kt │ │ │ ├── IMerkleHasher.kt │ │ │ ├── InstantSend.kt │ │ │ ├── InventoryType.kt │ │ │ ├── MainNetDash.kt │ │ │ ├── TestNetDash.kt │ │ │ ├── X11Hasher.kt │ │ │ ├── core/ │ │ │ │ ├── DashTransactionInfoConverter.kt │ │ │ │ └── DoubleSha256Hasher.kt │ │ │ ├── instantsend/ │ │ │ │ ├── BLS.kt │ │ │ │ ├── InstantSendFactory.kt │ │ │ │ ├── InstantSendLockValidator.kt │ │ │ │ ├── InstantTransactionManager.kt │ │ │ │ ├── QuorumMasternode.kt │ │ │ │ ├── TransactionLockVoteValidator.kt │ │ │ │ ├── instantsendlock/ │ │ │ │ │ ├── InstantSendLockHandler.kt │ │ │ │ │ └── InstantSendLockManager.kt │ │ │ │ └── transactionlockvote/ │ │ │ │ ├── TransactionLockVoteHandler.kt │ │ │ │ └── TransactionLockVoteManager.kt │ │ │ ├── managers/ │ │ │ │ ├── ConfirmedUnspentOutputProvider.kt │ │ │ │ ├── MasternodeListManager.kt │ │ │ │ ├── MasternodeListSyncer.kt │ │ │ │ ├── MasternodeSortedList.kt │ │ │ │ ├── QuorumListManager.kt │ │ │ │ └── QuorumSortedList.kt │ │ │ ├── masternodelist/ │ │ │ │ ├── MasternodeCbTxHasher.kt │ │ │ │ ├── MasternodeListMerkleRootCalculator.kt │ │ │ │ ├── MerkleRootCreator.kt │ │ │ │ ├── MerkleRootHasher.kt │ │ │ │ └── QuorumListMerkleRootCalculator.kt │ │ │ ├── messages/ │ │ │ │ ├── GetMasternodeListDiffMessage.kt │ │ │ │ ├── ISLockMessage.kt │ │ │ │ ├── MasternodeListDiffMessage.kt │ │ │ │ ├── TransactionLockMessage.kt │ │ │ │ ├── TransactionLockVoteMessage.kt │ │ │ │ └── TransactionMessage.kt │ │ │ ├── models/ │ │ │ │ ├── CoinbaseTransaction.kt │ │ │ │ ├── CoinbaseTransactionSerializer.kt │ │ │ │ ├── DashTransactionInfo.kt │ │ │ │ ├── InstantTransactionHash.kt │ │ │ │ ├── InstantTransactionInput.kt │ │ │ │ ├── InstantTransactionState.kt │ │ │ │ ├── Masternode.kt │ │ │ │ ├── MasternodeListState.kt │ │ │ │ ├── Quorum.kt │ │ │ │ └── SpecialTransaction.kt │ │ │ ├── storage/ │ │ │ │ ├── DashKitDatabase.kt │ │ │ │ └── DashStorage.kt │ │ │ ├── tasks/ │ │ │ │ ├── PeerTaskFactory.kt │ │ │ │ ├── RequestInstantSendLocksTask.kt │ │ │ │ ├── RequestMasternodeListDiffTask.kt │ │ │ │ ├── RequestTransactionLockRequestsTask.kt │ │ │ │ └── RequestTransactionLockVotesTask.kt │ │ │ └── validators/ │ │ │ ├── DarkGravityWaveTestnetValidator.kt │ │ │ └── DarkGravityWaveValidator.kt │ │ └── resources/ │ │ ├── MainNetDash-bip44.checkpoint │ │ ├── MainNetDash.checkpoint │ │ ├── TestNetDash-bip44.checkpoint │ │ └── TestNetDash.checkpoint │ └── test/ │ ├── kotlin/ │ │ └── io/ │ │ └── horizontalsystems/ │ │ └── dashkit/ │ │ ├── messages/ │ │ │ └── MasternodeListDiffMessageParserTest.kt │ │ └── validators/ │ │ └── DarkGravityWaveValidatorTest.kt │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── ecashkit/ │ ├── .gitignore │ ├── build.gradle │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── kotlin/ │ │ │ ├── chronik/ │ │ │ │ └── Chronik.java │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── ecash/ │ │ │ ├── ChronikApi.kt │ │ │ ├── ECashKit.kt │ │ │ ├── ECashRestoreKeyConverter.kt │ │ │ └── MainNetECash.kt │ │ └── resources/ │ │ ├── MainNetECash-bip44.checkpoint │ │ └── MainNetECash.checkpoint │ └── test/ │ └── java/ │ └── io/ │ └── horizontalsystems/ │ └── ecash/ │ └── ExampleUnitTest.kt ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── hodler/ │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── kotlin/ │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── hodler/ │ │ │ ├── HodlerData.kt │ │ │ ├── HodlerOutputData.kt │ │ │ ├── HodlerPlugin.kt │ │ │ └── LockTimeInterval.kt │ │ └── res/ │ │ └── values/ │ │ └── strings.xml │ └── test/ │ ├── java/ │ │ └── io/ │ │ └── horizontalsystems/ │ │ └── hodler/ │ │ └── HodlerPluginTest.kt │ └── resources/ │ └── mockito-extensions/ │ └── org.mockito.plugins.MockMaker ├── litecoinkit/ │ ├── .gitignore │ ├── build.gradle │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── io/ │ │ └── horizontalsystems/ │ │ └── litecoinkit/ │ │ └── ExampleInstrumentedTest.kt │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── kotlin/ │ │ │ └── io/ │ │ │ └── horizontalsystems/ │ │ │ └── litecoinkit/ │ │ │ ├── LitecoinKit.kt │ │ │ ├── MainNetLitecoin.kt │ │ │ ├── ScryptHasher.kt │ │ │ ├── TestNetLitecoin.kt │ │ │ └── validators/ │ │ │ ├── LegacyDifficultyAdjustmentValidator.kt │ │ │ └── ProofOfWorkValidator.kt │ │ └── resources/ │ │ ├── MainNetLitecoin-bip44.checkpoint │ │ ├── MainNetLitecoin.checkpoint │ │ ├── TestNetLitecoin-bip44.checkpoint │ │ └── TestNetLitecoin.checkpoint │ └── test/ │ └── java/ │ └── io/ │ └── horizontalsystems/ │ └── litecoinkit/ │ ├── ExampleUnitTest.kt │ └── ScryptHasherTest.kt ├── settings.gradle └── tools/ ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src/ └── main/ ├── AndroidManifest.xml ├── java/ │ └── io/ │ └── horizontalsystems/ │ └── tools/ │ ├── BuildCheckpoints.kt │ ├── CheckpointSyncer.kt │ ├── PeerAddressManager.kt │ └── Tools.kt └── res/ └── values/ └── strings.xml