aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-08-09[Tests] Cleanup extra instances of create_transactionConor Scott
2018-08-09[Tests] Rename create_tx and move to blocktools.pyConor Scott
2018-08-08Merge #13894: shutdown: Stop threads before resetting ptrsWladimir J. van der Laan
faab63111d8f27335aa1f09c1a48da3be45135de shutdown: Stop threads before resetting ptrs (MarcoFalke) Pull request description: On shutdown some threads would continue to run after or during a pointer reset. This leads to occasional segfaults on shutdown. Fix this by resetting the smart pointers after all threads that might read from them have been stopped. This should fix: * A segfault in the txindex thread, that occurs when the txindex destructor is done, but the thread was not yet stopped (as this is done in the base index destructor) * A segfault in the scheduler thread, which dereferences conman. (e.g. CheckForStaleTipAndEvictPeers) Tree-SHA512: abbcf67fadd088e10fe8c384fadfb90bb115d5317145ccb5363603583b320efc18131e46384f55a9bc574969013dfcbd08c49e0d42c004ed7212eca193858ab2
2018-08-08Merge #13780: 0.17: Pre-branch maintenanceWladimir J. van der Laan
3fc20632a3ad30809356a58d2cf0ea4a4ad4cec3 qt: Set BLOCK_CHAIN_SIZE = 220 (DrahtBot) 2b6a2f4a28792f2fe9dc1be843b1ff1ecae35e8a Regenerate manpages (DrahtBot) eb7daf4d600eeb631427c018a984a77a34aca66e Update copyright headers to 2018 (DrahtBot) Pull request description: Some trivial maintenance to avoid having to do it again after the 0.17 branch off. (The scripts to do this are in `./contrib/`) Tree-SHA512: 16b2af45e0351b1c691c5311d48025dc6828079e98c2aa2e600dc5910ee8aa01858ca6c356538150dc46fe14c8819ed8ec8e4ec9a0f682b9950dd41bc50518fa
2018-08-07Merge #13812: wallet: sum ancestors rather than taking max in output groupsWladimir J. van der Laan
23fbbb100f63cb621b4b901dac0c0f16d7d74bc7 wallet: sum ancestors rather than taking max in output groups (Karl-Johan Alm) Pull request description: This is pointed out in https://github.com/bitcoin/bitcoin/pull/12257#discussion_r204549758. Basically, the ancestors gives an indication as to how many ancestors the resulting transaction will have, which is more precise when summing up the values, rather than taking the maximum, since all the coins in the group will become ancestors if selected. Tree-SHA512: 0588c4b6059669650614817e041526a2ab89dda8c07fca8e077c7669dca1fed51cd164f7df56340840ab60285d48f3b140dcee64f64bf696b2dd4ab16d556a13
2018-08-07Merge #13843: [trivial] Add doxygen-compatible comments to CAffectedKeysVisitorWladimir J. van der Laan
3339d845354c9c357ec90505192748d9d639e72e [trivial] add doxygen-compatible comments to CAffectedKeysVisitor (Pierre Rochard) Pull request description: Tree-SHA512: 0003fde198a6977d0c8988efc8f76428f9e095009fddf131b07bd9809ef76a778c86bb2b1305e33df16101b6b703cf43eb6193462bb9f3687f98c1d9b109dd96
2018-08-07Merge #13895: Docs: fix GetWarnings docs to reflect behaviorMarcoFalke
13bb5cae31 Docs: fix GetWarnings docs to reflect behavior (Ben Woosley) Pull request description: In "gui", it returns all warnings, joined by a separator In "statusbar", it returns the last warning set which seems notionally to be the most important, though that is debatable Tree-SHA512: 5fc0dc68d143a040b7b893b7176188e2b064c2cf1d559420906e4de636e16e9ab7451a1b87603020a7a8f66d6b94f4ee6c7da2697efad879f9e6de9c0e0c9ac1
2018-08-07Merge #13857: docs: fix typo in translation_process.mdWladimir J. van der Laan
081f5b4e2baed28ffa3bf6ce11e0aec7156038c2 Docs: Improve "of" grammar (johnlow95) Pull request description: Tree-SHA512: 7227371372cd4cc0ec2dbbbf0947c63f63ba41f8c6f9f6909f1dd37a724bf09a60bc57037233cc282922bcbcf2aff3bfd35bef823bdf11ffe26ba990fa3f7e32
2018-08-07Merge #13527: policy: Remove promiscuousmempoolflagsWladimir J. van der Laan
faa24441ec047ec336b86f586016b9d318c1c0ad policy: Remove promiscuousmempoolflags (MarcoFalke) Pull request description: It seems odd to clutter validation code with features that can only ever be used for testing (testnet or regtest). Removing that test-only code makes the mempool logic less painful to understand and easier to reason about when changed or refactored in the future. Tree-SHA512: 3b897aa9604ac8d82ebe9573c6efd468c93ddaa08d378ebc902e247b7aa6c68fcde71e5b449c08f17a067146cdc66dc50a67ce06d07607c27e5189a49c3fba3f
2018-08-07Merge #13705: build: Add format string linterWladimir J. van der Laan
bcd4b0f5cdde2a1b562a612c78ec1ef1fe47d3dd Add linting of WalletLogPrintf(...) format strings (practicalswift) a3e455694901a887e0feef69bd63e3aa122ea44b build: Add format string linter (practicalswift) Pull request description: Add format string linter. This linter checks that the number of arguments passed to each variadic format string function matches the number of format specifiers in the format string. Example output: ``` $ test/lint/lint-format-strings.sh src/init.cpp: Expected 2 argument(s) after format string but found 1 argument(s): LogPrintf("We have a mismatch here: foo=%s bar=%d\n", foo) src/init.cpp: Expected 1 argument(s) after format string but found 2 argument(s): LogPrint(BCLog::RPC, "RPC stopped. This is a mismatch: %s\n", s1, s2) $ echo $? 1 ``` Tree-SHA512: 19ab844a63f04bf193d66682ca42745a1c7d6c454b30222491b9fe8dc047054c4a6d3ee7921ec0676fb9ca2e7f6f93bd6c97996fb09667269bd491cb875349f3
2018-08-07Add linting of WalletLogPrintf(...) format stringspracticalswift
2018-08-07Merge #13657: wallet: assert to ensure accuracy of ↵Wladimir J. van der Laan
CMerkleTx::GetBlocksToMaturity 93de2891fa9cb8314573ba3a6ab764bc9c52444d wallet: assert to ensure accuracy of CMerkleTx::GetBlocksToMaturity (Ben Woosley) Pull request description: According to my understanding, it should not be possible for coinbase transactions to be conflicting, thus it should not be possible for GetDepthInMainChain to return a negative result. If it did, this would also result in innacurate results for GetBlocksToMaturity due to the math therein. asserting ensures accuracy. Tree-SHA512: 8e71c26f09fe457cfb00c362ca27066f7f018ea2af1f395090fdc7fd9f5964b76f4317c23f7a4923776f00087558511da5c1c368095be39fb1bacc614a93c32f
2018-08-07build: Add format string linterpracticalswift
This linter checks that the number of arguments passed to each variadic format string function matches the number of format specifiers in the format string.
2018-08-07Merge #13717: docs: Link to python style guidelines from developer notesWladimir J. van der Laan
a9e898a4ad547ad344671db2b942b99925f0c732 docs: Link to python style guidelines from developer notes (Mason Simon) Pull request description: Initially I moved the python style guidelines from the functional test README, but some of the python rules are test-specific, and most of the developer notes doc is C++ centric, so just dropping a link seemed better. Tree-SHA512: 9d4d5cc45526319a118595d90fcfad2c9aced22007aa096d8af04ba1b963312822804f4c15b0b227d66af49565034437691b7760e7ff6d1e3f8b10b898906362
2018-08-07Merge #13667: wallet: Fix backupwallet for multiwalletsWladimir J. van der Laan
a1a998cf24c0cf1232e44ec8eaf2ad6875ab5153 wallet: Fix backupwallet for multiwallets (Daniel Kraft) Pull request description: `backupwallet` was broken for multiwallets in their own directories (i.e. something like `DATADIR/wallets/mywallet/wallet.dat`). In this case, the backup would use `DATADIR/wallets/wallet.dat` as source file and not take the specific wallet's directory into account. This led to either an error during the backup (if the wrong source file was not present) or would silently back up the wrong wallet; especially the latter behaviour can be quite bad for users. Tree-SHA512: 7efe2450ca047e40719fcc7cc211ed94699056020ac737cada7b59e8240298675960570c45079add424d0aab520437d5050d956acd695a9c2452dd4317b4d2c4
2018-08-07Merge #13872: [docs] Reformat -help output for help2manWladimir J. van der Laan
7272fdcfe7370412b34a96bc19f3819e03169ef7 [docs] Reformat -help output for help2man (Tim Ruffing) Pull request description: This commit slightly changes the format of the "Usage" strings in CLI `-help` messages to meet the expection of the help2man tool, which we use to generate man pages. On the way, we remove a few calls to `strprintf()`, which became superficial after commit 32fbfda. Before: ![screenshot from 2018-08-04 12-11-25](https://user-images.githubusercontent.com/1071625/43675564-6e2e016c-97e2-11e8-8de7-0912a4088efd.png) After: ![screenshot from 2018-08-04 12-11-46](https://user-images.githubusercontent.com/1071625/43675566-712d7032-97e2-11e8-85a7-5decc6dcb4b2.png) Tree-SHA512: 9752ee0d0fde0b084e00232609866291ff493f4feb45919279b0f142b04635c049ddd2bf71ff6ad57d4ae1ed37103348640d253bb4f0b3e16b7fd2bb4b2a6fba
2018-08-06Docs: fix GetWarnings docs to reflect behaviorBen Woosley
In "gui", it returns all warnings, joined by a separator In "statusbar", it returns just the first warning
2018-08-06shutdown: Stop threads before resetting ptrsMarcoFalke
2018-08-06Merge #12992: [wallet] Add wallet name to log messagesWladimir J. van der Laan
909f54c80abb7195c2e82c6e06c414f4526a339e [wallet] Add wallet name to log messages (Pierre Rochard) Pull request description: After multiple wallets became supported, wallet-related log messages became ambiguous as to which wallet they were being emitted by. This pull request adds a `CWallet::WalletLogPrintf` function to be used when logging wallet-specific events. This function prepends the wallet's name to the log message and forwards it to `LogPrintf` fixes #11317 Tree-SHA512: d258dcc9aa0f1330159bc66b4020f84709c5bba5165bdc62503543557d8999777f0b94a7a82a08823e2b2ceb84f4f8d1cd5493f99c076a13539f1f6155dc55ad
2018-08-06Merge #13853: doc: correct versions in dependencies.mdWladimir J. van der Laan
322d34ef65d5f1c6b58e7bd3fb3cd008d7983167 doc: correct versions in dependencies.md (fanquake) Pull request description: Tree-SHA512: 02487b35bc3dd79b9e91aff48433f763746b7ea76ad5f2b9c79f1f11f6c9441c69b4406880329113aa4bd660887ee810b3beb6c9d54c3e5514004f55d6ca4916
2018-08-06Merge #13859: qa: Add emojis to test_runner path and wallet filenameWladimir J. van der Laan
5e1777777790e855a9f3c8604208bc9bd6c8c99f qa: Create unicode tempdir in test_runner (MarcoFalke) Pull request description: Now that wallet filenames are properly quoted when used for rpc (#13823), we can add some unicode symbols to the test_runner path. Thus, the "extern" wallet that uses a full path has a unicode symbol in its name. Should add unicode coverage to * `listwallets` * `wallet.getwalletinfo` * `(un)loadwallet` Tree-SHA512: 1633fde56f8748df0cfef9c31a878c105dfaac85d1041b292261f44c4d40e96942aacbf7d6e839e8bbf979dc131d81c24ceb521e927fc8a5a71ba093f36b891b
2018-08-05Merge #13696: Add aarch64 qt depends support for cross compiling bitcoin-qtMarcoFalke
00db418176 Add aarch64 qt depends support for cross compiling bitcoin-qt (TheCharlatan) Pull request description: This also adds a generic qt linux target in packages.mk . I am a bit confused by the existing docs for the RISC addition. Are there boards that would support running bitcoin-qt, or at the very least forwarding X over ssh? Is everybody building depends with `NO_QT=1` when targeting RISC? If not, I will revert the change for a generic qt linux package definition back to the piecemeal solution. This pull request should close #13495 Tree-SHA512: 519b951bf50f214ad725e5330094582a212333cd85b0ae442c67f9afec5629995dfad130258c7706a61f7b7cccbfa49bce69b9931f7e30cf12b382cd9a0a4749
2018-08-04[docs] Reformat -help output for help2manTim Ruffing
This commit slightly changes the format of the "Usage" strings in CLI `-help` messages to meet the expection of the help2man tool, which we use to generate man pages. On the way, we remove a few calls to `strprintf()`, which became superficial after commit 32fbfda.
2018-08-03[trivial] add doxygen-compatible comments to CAffectedKeysVisitorPierre Rochard
2018-08-03qa: Create unicode tempdir in test_runnerMarcoFalke
2018-08-03Merge #13849: travis: use only travis jobs: instead of mix of jobs+matrixMarcoFalke
566f826902 use only travis jobs: instead of mix of jobs+matrix (Julian Fleischer) Pull request description: This is extracted from https://github.com/bitcoin/bitcoin/pull/13816 to make that one simpler. The travis `matrix` and `jobs` top level items are actually aliases for each other. The goal is to be able to specify not just the environment per job but also the `os` (for https://github.com/bitcoin/bitcoin/pull/13816 ). So this PR moves the environment variables from the `env.matrix` section to `jobs.include`. `jobs` and build stages subsume the matrix functionality. IMHO this makes it clearer to add stages (as every item clearly references which stage it belongs to). The `before_install`, `install`, etc. steps default to belonging to the `test` stage and were moved up . Tree-SHA512: afd01e03d076c3ac6c2ab20facbe0fbbbc028c92880d02e866b077e9ca365a4e9e8c237a0d999234180c684bc4612c0bf6c3026b96d93b5f91c7e60e4de7775e
2018-08-03doc: correct versions in dependencies.mdfanquake
2018-08-03Docs: Improve "of" grammarjohnlow95
2018-08-02[wallet] Add wallet name to log messagesPierre Rochard
After multiple wallets became supported, wallet-related log messages became ambiguous as to which wallet they were being emitted by. fixes #11317
2018-08-02Merge #13255: trivial: Fixed typos and cleaned up languageMarcoFalke
d5f745a5c7 trivial: correct typos (Varunram) 3be70ba400 trivial: Fixed typos and cleaned up language (William Robinson) Pull request description: This rebases and fixes some of the outstanding nits in #13010. Let either merge quickly or close for now. Tree-SHA512: 4cc1a5f854f2d6a19332334e2608a19e2be6b97dc09114c8186237ea77ee4b62372ebf6841a61cca548cedb47f0e6f11d4c0aba51a71949cd5aff8cef88204d6
2018-08-02Merge #13823: qa: quote path in authproxy for external multiwalletsWladimir J. van der Laan
fa67505e1ea007bdc081bc7425fb83d5455d8308 qa: Quote wallet name for rpc path (MarcoFalke) Pull request description: When using external multiwallets they are specified by their full path which might contain non-ascii characters (e.g. umlauts or emojis). Fix this by url-quoting the path. Tree-SHA512: 7cc66514579d9f602f88a6817c5ab43a44c6d3711df452dc904173f0bc34e2c0b2c34877497f06b61f6720c532fa183053f54622dc454e316c89cee7eaa72463
2018-08-02use only travis jobs: instead of mix of jobs+matrixJulian Fleischer
2018-08-02trivial: correct typosVarunram
2018-08-02trivial: Fixed typos and cleaned up languageWilliam Robinson
2018-08-02Merge #13851: fix locale for lint-shellMarcoFalke
83c48d9a1f fix locale for lint-shell (Julian Fleischer) Pull request description: A piece of code from https://github.com/bitcoin/bitcoin/pull/13816 which I am hereby splitting into smaller PRs. The `shellcheck` executable shipped with travis's trusty linux environment (contains shellcheck `0.3.1` in `/usr/local/bin` as opposed to the distros `0.3.3` in `/usr/bin`) segfaults when `LC_ALL=C`. This makes sure that in travis, no matter from where the script is called, `LC_ALL` is left unset. Comment changed accordingly. Tree-SHA512: 86afa9247f2adbeefa75bf3d56a94766f8e8e1839f40b73763ff7b893a09c848ee64648fc06ce3e6bd0f650127365f508b37fdefb48d61e49f5d551c074cb16e
2018-08-02fix locale for lint-shellJulian Fleischer
2018-08-02Merge #13837: qa: Extract rpc_timewait as test paramWladimir J. van der Laan
fa5b440971a0dfdd64c1b86748a573fcd7dc65d3 qa: Extract rpc_timewait as test param (MarcoFalke) Pull request description: Also increase it for wallet_dump and wallet_groups Tree-SHA512: 7367bc584228bda3010c453713a1505c54a8ef3d116be47dab9934d30594089dfeb27ffa862f7517fd0ec8b5dc07f4904d67ef2a53dd284cbe2a58982e410e2b
2018-08-02qa: Quote wallet name for rpc pathMarcoFalke
2018-08-02gui: Pull initial 017x translations from transifexWladimir J. van der Laan
Tree-SHA512: 4372a0602587e2bfceae69e3c90726c5d4a9d34a934dac9d000a9611fa7fca51e9d0fbacaee60decbea09294e53f94259ddcef2b3f876fefa1fd9f8a4dc25188
2018-08-02tx: Update transifex slug 016x→017xWladimir J. van der Laan
Make sure translations are pulled from the correct resource. Tree-SHA512: 5e65e6b04e0bbead9f7850071abc562f290e07935d9db155c6c423bc0de26756c70b1fc375f58d8ba5a258bd1770aefd3cd95f5c7bb9aafb0de76f7fcc1843ae
2018-08-02Merge #13791: gui: Reject dialogs if key escape is pressedWladimir J. van der Laan
7bf22bf0c21d13557ec46a67413819ebcabc3df0 gui: Reject options dialog when key escape is pressed (João Barbosa) 4a43306a4f643cf0d356d5d5e16913541f1bc893 gui: Reject edit address dialog when key escape is pressed (João Barbosa) f7a553177d4b969956bc04a0140fce34958971f5 gui: Add GUIUtil::ItemDelegate with keyEscapePressed signal (João Barbosa) Pull request description: Currently `EditAddressDialog` and `OptionsDialog` don't close when the escape key is pressed. The `QDataWidgetMapper` instances prevents closing the dialogs because the escape key is used to reset the widgets values. More details and workarounds in https://stackoverflow.com/a/51487847 and http://qtramblings.blogspot.com/2010/10/qdatawidgetmapper-annoyances.html. The adopted solution is different from the above references. It turns out that `QDataWidgetMapper::setItemDelegate` sets the event filter for all mapped widgets. So in this PR the mapper's delegate are changed to a custom `GUIUtil::ItemDelegate` that offers the signal `keyEscapePressed`, which is connected to the `QDialog::reject` slot. Note that the installed event filter lets all events pass, so the current behaviour isn't changed, meaning that widgets values are reset in addition to closing the dialog. Tree-SHA512: 9c961d488480b4ccc3880a11a8f1824b65f77570ee8918c7302c62775a1a73e52ae988a31a55ffff87b4170ddbecf833c2f09b66095c00eb6854a4d43f030f1f
2018-08-02Merge #13811: travis: Run bench_bitcoin onceWladimir J. van der Laan
fa7a3a1783cd81907779392f626bdcca5e10efb1 travis: Run bench_bitcoin once (MarcoFalke) Pull request description: The bench should be run once just to make sure it doesn't crash or hit assertions. Closes: #13810 Tree-SHA512: f34038c47535fb5cbd32b5eadd3ae84c294b2dc84c9d3bf3ccbbfb88a927b76f044ed24fb26f51a10d21341916c9dd0cdc98fab9d908cb90333c8ea7d4d4f620
2018-08-02Merge #13844: doc: correct the help output for -pruneWladimir J. van der Laan
312ff01ee533fab68348283200eb57e9956fdb34 -prune option -help output aligned with code (Hennadii Stepanov) Pull request description: The -help output for -prune is aligned with the code. In the code (.../src/init.cpp#L1063): ``` if (nPruneTarget < MIN_DISK_SPACE_FOR_BLOCK_FILES) { return InitError(strprintf(_("Prune configured below the minimum of %d MiB. Please use a higher number."), MIN_DISK_SPACE_FOR_BLOCK_FILES / 1024 / 1024)); } ``` So correct value of nPruneTarget is **greater than or equal to** MIN_DISK_SPACE_FOR_BLOCK_FILES. Tree-SHA512: 8e55aa99c8f5a9d020677b0f1b016215e2dbda5fa4ee7c8504b12a3abef226bc21beca118fa332c0bf206a4aff913a5a717b55bb5b2ecdba38423e9c0161209e
2018-08-02Merge #13824: doc: Remove outdated net commentWladimir J. van der Laan
fa365021bbb4c0865e6655100c1cbf85e2b3c7fa doc: Remove outdated net comment (MarcoFalke) Pull request description: `mapAddresses` and the corresponding "critsect" has been removed in 5fee401fe14aa6459428a26a82f764db70a6a0b9 more than 6 years ago. Now is probably a good time to remove this confusing comment. Tree-SHA512: 498a403d5703da395c18a7ebb776aa6e693e59fe43a839fefd261e0a5af58621763813979d4cfbd8d1728ce73b325b82002e393cde79bdbff33e0fbf68ab6747
2018-08-02Merge #13835: [trivial,doc] Fix memory consistency model in commentWladimir J. van der Laan
fe7180c5b2c37313722b8d21c33eec6ff011f26d [trivial,doc] Fix memory consistency model in comment (Jesse Cohen) Pull request description: Updating a comment overlooked during review in #13247 Tree-SHA512: 0bd54ba1c265fdd77fd6e12ad0be46dd422348f7d926ce9abaca53fdb3a3c55c0d1cd90b4382321352076f4a81e2249c0014cd789f47a3637cb93bd983cb4657
2018-08-02-prune option -help output aligned with codeHennadii Stepanov
see: .../src/init.cpp#L1063
2018-08-01qa: Extract rpc_timewait as test paramMarcoFalke
Also increase it for wallet_dump and wallet_groups
2018-08-01Merge #13697: Support output descriptors in scantxoutsetWladimir J. van der Laan
f6b7fc349ccf9cfbeb7e91e19c20e2a2fcc9026f Support h instead of ' in hardened descriptor paths (Pieter Wuille) fddea672eb8f63012f2e9ce04fa477e5d4140750 Add experimental warning to scantxoutset (Jonas Schnelli) 6495849bfd362d6a2f128bac5982fa9e3e2e3396 [QA] Extend tests to more combinations (Pieter Wuille) 1af237faefc316bd708e25d6901ee6f17b706e57 [QA] Add xpub range tests in scantxoutset tests (Jonas Schnelli) 151600bb4972f7bab4ed4a03d1f67c38e081fefe Swap in descriptors support into scantxoutset (Pieter Wuille) 0652c3284fe12941b28624dbbf5e0862c5d0dbc3 Descriptor tests (Pieter Wuille) fe8a7dcd78cfeedc9a7c705e91384f793822912b Output descriptors module (Pieter Wuille) e54d76044b3a2c625e53f2116c5f6a7c40105d5d Add simple FlatSigningProvider (Pieter Wuille) 29943a904a11607787d28b1f4288f500bd076dde Add more methods to Span class (Pieter Wuille) Pull request description: As promised, here is an implementation of my output descriptor concept (https://gist.github.com/sipa/e3d23d498c430bb601c5bca83523fa82) and integration within the `scantxoutset` RPC that was just added through #12196. It changes the RPC to use descriptors for everything; I hope the interface is simple enough to encompass all use cases. It includes support for P2PK, P2PKH, P2WPKH, P2SH, P2WSH, multisig, xpubs, xprvs, and chains of keys - combined in every possible way. Tree-SHA512: 63b54a96e7a72f5b04a8d645b8517d43ecd6a65a41f9f4e593931ce725a8845ab0baa1e9db6a7243190d8ac841f6e7e2f520d98c539312d78f7fd687d2c7b88f
2018-08-01[trivial,doc] Fix memory consistency model in commentJesse Cohen
2018-08-01Merge #13805: [wallet] Correctly limit output group sizeMarcoFalke
a13647b8bd [qa] Add test for too-large wallet output groups (Suhas Daftuar) 57ec1c97b2 [wallet] correctly limit output group size (Suhas Daftuar) Pull request description: Also add a test to ensure that output groups are being limited, even if a wallet has many outputs corresponding to the same scriptPubKey (the test fails without the first commit). Tree-SHA512: 2aaa82005b0910488f5cbf40690d4c5e2f46949e299ef70b4cb6e440713811443d411dcbc6d71b1701fd82423073125e21747787d70830cd021c841afb732d51