6479c7e6425ca84d4c912e9ff0c93fcfe58e73cc
4944 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bb20c7fd00 |
Implemented perf tests
Summary: Added some performance tests for DataSource. Currently simply using jest to run them in a single run, so that is not the most isolated setup (we do GC between tests), but helps to find some global trends at least. For every scenario two datasets are used, one of 100.000 items, and one of 200.000 items, to verify that all important functions scale roughly linearly or better. The `append` and `update` test cases perform 1000 insertions / updates. All other tests are singular. The keyed vs unkeyed variation verifies that we don't drop performance if we maintain a by-key lookup table. The sorted variations start with an initially already sorted and filtered setup. This nicely show that the datasource really starts to shine with its insertion sort versus full reallocating and sorting The reference fake implementation does what we do in most cases in Flipper: shallow clone and allocate an entirely new array to append / update data to preserve immutability. Its comparison is pretty terribly, especially considering that in the perf tests we 'render' only once, skewing the stats in favor of the fake implementation: only at the end of the entire batch of updates we sort & filter once (so after inserting a thousand items for example). In contrast the datasource tests will keep its data sorted at all times, so 'rendering' is already included in the measurements. For the fake datasource, resorting the full 200K rows after each insert would pretty much put bitcoin caused global warming to shame. Also note that the increased GC pressure isn't incorporated in the fake implementation, as we GC outside the measurements. Reviewed By: nikoant Differential Revision: D26913145 fbshipit-source-id: 955f1923dce40997cd2e81ea9e80832c6e71c99c |
||
|
|
2a3458aff8 |
Implemented shift operation and limit option
Summary: This diff implements the shift operation, which removes (efficiently) the first (oldest) N records from the datasource. Also implemented a `limit` option to truncate automatically and limit memory usage Reviewed By: nikoant Differential Revision: D26883673 fbshipit-source-id: c5ebaf2a327d56cbbe38280c6376c833bcf68b8c |
||
|
|
564d440b4a |
Implemented remove operation
Summary: Implemented `remove`, which, for a typical data source should not be needed. But that would be famous last words and wanted to prevent painting ourselves in a corner, so implemented it. Also because part of the logic is need for the `shift` operation (see next diff), which is much more important. Reviewed By: priteshrnandgaonkar Differential Revision: D26883672 fbshipit-source-id: 0dbfcdd3d5a16c4a2d53b0272000d183c67d0034 |
||
|
|
a610c821d3 |
Store preferences and scrolling, refactor to useReducer
Reviewed By: priteshrnandgaonkar Differential Revision: D26848266 fbshipit-source-id: 738d52556b9fb65ec5b5de7c727467227167b9b9 |
||
|
|
55981b5259 |
Introduce pause button
Summary: ..and some earlier reviews comments has been processed + some fine tuning on the ui Reviewed By: priteshrnandgaonkar Differential Revision: D26816559 fbshipit-source-id: adf2586763be185ee8e7cc22b2827ecefe4e4cab |
||
|
|
525e079284 |
Implement deeplink, creating pastes, log deduplication
Summary: This diff implements the remaining features in the logs plugin: - deeplinking - merging duplicate rows The logs plugin source code has now been reduced from originally `935` to `285` LoC. All optimisation code has been removed from the plugin: * debouncing data processing * pre-rendering (and storing!) all rows Finally applied some further styling tweaks and applied some renames to DataTable / DataSource + types finetuning. Some more will follow. Fixed a emotion warning in unit tests which was pretty annoying. Reviewed By: passy Differential Revision: D26666190 fbshipit-source-id: e45e289b4422ebeb46cad927cfc0cfcc9566834f |
||
|
|
dec8e88aeb |
Add row styling
Summary: Added styling / coloring to the new logs plugin, to bring it closer to feature completeness. Made the colum headers slightly more compact Also made the API more foolproof by introducing the `useAssertStableRef` hook, that will protect against accidentally passing in props that would invalidate rendering every time. Reviewed By: passy Differential Revision: D26635063 fbshipit-source-id: 60b2af8db3cc3c12d8d25d922cf1735aed91dd2c |
||
|
|
a3b3df639b |
Show feedback if there are no records visible
Summary: Per title. Give the user some feedback on why he doesn't see any records (filtering to aggressive vs there are simply no records). Fixes the old Flipper behavior where tables are merely empty, which always looks kinda broken to me. (Didn't it work, or is there nothing?) Reviewed By: nikoant Differential Revision: D26611173 fbshipit-source-id: 7ac798bd7d5c31f6d9fbacf30c6727d2e0e94570 |
||
|
|
59e6c98669 |
User experience improvements
Summary: This diff has some jak-shaving UX improvements after playing with the DataTable a bit more: Selection * deselecting a row from a larger set will make the last selected item the default selection * re-selecting an item in a single selection will unselect it Column Filtering * Introduced button to toggle between filtering on all, nothing, and the values present in the current selection Column sorting * The up / down arrows are now inidividually clickable, rather than action as a general toggle * Title still works as a general toggle between asc / desc / not sorted Context menu * I found the context menu for column selection and on the selected rows itself a bit finicky to find and click and not super intuitive for noob users. Merged both menus instead into a single hamburger menu adjacent to the search bar Reviewed By: passy Differential Revision: D26580038 fbshipit-source-id: 220f501a1d996acbd51088c08ea866caed768572 |
||
|
|
59a1327261 |
Introduce multi selection
Summary: Make sure DataTable supports multiselection, which works largely the same as before, with a few changes * shift + click and ctrl + click work as expected * shift + keyboard navigation works as expected * drag selection works as expected * drag selection when dragging accross screens, or Shift icmw with HOME / END / PageUp / PageDown works as expect * text selection stil works as expected The context menu items have been updated as well * filter will filter on all the distinct values in the selection * copying cells will copy all cells of the given column in the selection, separated by newline * copying rows / creating a past will create a json array of the selection Not done yet - Shifting the selection after inserting rows hasn't been implemented yet - I'm not entirely happy with the context menu trigger, maybe a hamburger button in the toolbar will be better Reviewed By: nikoant Differential Revision: D26548228 fbshipit-source-id: 5d1cddd6aad02ce9649d7980ab3a223e222da893 |
||
|
|
5c3a8742ef |
Introduce context menu
Summary: Introduced a context menu for DataTable with some default options. Opted to put it under a visible hovered dropdown instead of on right-click, since this better alings with Ant's design guides (we don't have context clicks anywhere else I think), but if it isn't convincing we can still change it. Included some default actions, to set up quick filters, and to copy values. For copying rows, implemented it to by default take the JSON from a row, rather than space separated values like in ManagedTable, as many existing plugins customize the onCopy handler to just do that, so it seemed like a better default since it is a richer format. If there are good use cases for the previous behavior, we'll probably find out after the old release :) Introduced utility to copy text to clipboard in FlipperLib, but decoupled it from Electron. Didn't include multi select yet, that will be done in a next diff. Reviewed By: nikoant Differential Revision: D26513161 fbshipit-source-id: b2b1b20b0a6f4ada9de2566bf6b02171f722c4aa |
||
|
|
11eb19da4c |
Introduce column filters
Summary: Beyond a search across all columns, it is now possible to specific columns for specific values: * for a row to be visible, all active column filters need to be matched (e.g. both a filter on time and app has to be satisfied) * if multiple values within a column are filtered for, these are -or-ed. * if no value at all within a column is checked, even when they are defined, the column won't take part in filtering * if there is a general search and column filters, a row has to satisfy both Filters can be preconfigured, pre-configured filters cannot be removed. Reseting will reset the filters back to their original Move `useMemoize` to flipper-plugin Merged the `ui/utils` and `utils` folder inside `flipper-plugin` Reviewed By: nikoant Differential Revision: D26450260 fbshipit-source-id: 11693d5d140cea03cad91c1e0f3438d7b129cf29 |
||
|
|
8aabce477b |
Introduce range finder
Summary: Show a hint during scrolling of the relative offset the user is looking at. This is based on the current virtualisation window, so not 100% accurate, but probably still provides the right signal to the user. See the bottom right of the recording Reviewed By: nikoant Differential Revision: D26450261 fbshipit-source-id: 206a860024e346c6b872edc3fc7919019046a6d7 |
||
|
|
1ce665ceaf |
Added selection / keyboard navigation
Summary: per title Reviewed By: nikoant Differential Revision: D26368673 fbshipit-source-id: 7a458e28af1229ee8193dfe2a6d156afd9282acd |
||
|
|
fb7c09c972 |
Add support for search and custom actions
Summary: Introduced search bar and support for custom buttons therein. Reviewed By: nikoant Differential Revision: D26338666 fbshipit-source-id: e53cd3c4381e11f5f90c05c92e39a6c8ac2eca65 |
||
|
|
44bb5b1beb |
Introduced sorting, column visibility and column resizing
Summary: Add support for resizable columns, column sorting, and hiding / showing columns Moved some utilities from Flipper to flipper-plugin, such as Interactive and LowPassFilter Split DataTable into two components; DataSourceRenderer which takes care of purely rendering the virtualization, and DataTable that has the Chrome around that, such as column headers, search bar, etc. Reviewed By: nikoant Differential Revision: D26321105 fbshipit-source-id: 32b8fc03b4fb97b3af52b23e273c3e5b8cbc4498 |
||
|
|
86ad413669 |
Initial logs with datasource / datatable setup
Summary: First rudementary setup of DataTable component that follows a data source. Initially used react-virtuose library, but it performed really badly by doing expensive layout shifts and having troublesome scroll handling. Switched to react-virtual library, which is a bit more level, but much more efficient, and the source code is actually understandable :) Features: - hook up to window events of datasource - high and low prio rendering, based on where the change is happening (should be optimized further) - sticky scrolling support - initial column configuration (custom rendering, styling, columns etc will follow in next diffs) Reviewed By: nikoant Differential Revision: D26175665 fbshipit-source-id: 224be13b1b32d35e7e01c1dc4198811e2af31102 |
||
|
|
5b76a0c717 |
Introduce subscribing to output changes
Summary: This diff introduces the possibility to subscribe to the `output` set of the datasource. It emits three possible event: `reset`, `update`, `shift`. Reviewed By: jknoxville Differential Revision: D26100104 fbshipit-source-id: b5fac2289206fab9fb8a437b96ab84034a8b5832 |
||
|
|
50a8bc91ff |
Introduce filter
Summary: Context: https://fb.workplace.com/notes/470523670998369 Per title, also restructured internal logic so that only on intermediate data structure is needed: `output`. This is because we don't need store filter information because we can run that plainly, on the incoming events without storing anything. Sorting is performed directly on `output`. Reverse isn't performed at all, but rather applied lazily when requesting a specific item (so it isn't reflected in output) Reviewed By: nikoant Differential Revision: D25976469 fbshipit-source-id: 777f8fdeba09729e19c97c176525b702066b6c2e |
||
|
|
6e4fcbdae3 |
Introduce clear() & reset()
Summary: clear will drop all current records but keep any view preferences. This typically relates to the "clear" button in Flipper. reset on the other hand will keep the current records, but just reset the view preferences to the default, dropping any filters and sorting criteria Reviewed By: nikoant Differential Revision: D25975612 fbshipit-source-id: 5b419f259bffc049daf125090c6754aa6528919b |
||
|
|
66864b8f54 |
Implement reversing the data source
Summary: For context see https://fb.workplace.com/notes/470523670998369 This diff adds support for reversing the data collection (in a table this would be used to toggle between ascending and descending sorting). The actual implementation is cleaned up in next diffs and the intermediate collection introduced here is dropped, so this diff is basically only about the unit tests, the implementation is not interesting at this point. Reviewed By: nikoant Differential Revision: D25975353 fbshipit-source-id: 2da6da2ed940c2e49e1986696d9b93a7b984db9b |
||
|
|
dfda71c350 |
Implemented sorting
Summary: For context see https://fb.workplace.com/notes/470523670998369 This diff adds the capability to apply a sorting, and inserts item in a sorted way using binary search in a temporarily intermediate collection. (That collection is optimized away in later diffs, so it is mostly the idea and the tests that are interesting) Reviewed By: nikoant Differential Revision: D25953336 fbshipit-source-id: a51b05e25242f0835280ada99798676311511ef0 |
||
|
|
0dc1abdac4 |
Initial DataSource setup
Summary: For context see https://fb.workplace.com/notes/470523670998369 This diff introduces the DataSource abstraction, that can store records. If a key is set a key -> record mapping is stored, to make it easy to update existing records using `upsert`, without knowing their exact index. Internal storage will be slightly altered in upcoming diffs, so don't pay to much attention to that part. Reviewed By: nikoant Differential Revision: D25953337 fbshipit-source-id: 1c3b53a2fcf61abaf061946be4af21d2aecc6c6d |
||
|
|
b2c542b84c |
Bump react-native-flipper from 0.79.1 to 0.80.0 in /react-native/ReactNativeFlipperExample (#2063)
Summary: Bumps [react-native-flipper](https://github.com/facebook/flipper) from 0.79.1 to 0.80.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/facebook/flipper/releases">react-native-flipper's releases</a>.</em></p> <blockquote> <h2>v0.80.0</h2> <p>See <a href="https://github.com/facebook/flipper/blob/master/desktop/static/CHANGELOG.md">https://github.com/facebook/flipper/blob/master/desktop/static/CHANGELOG.md</a> for full notes.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
964131ee48 |
Bump core from 1.1.0 to 1.3.0 (#2003)
Summary: Bumps core from 1.1.0 to 1.3.0. [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Pull Request resolved: https://github.com/facebook/flipper/pull/2003 Reviewed By: mweststrate Differential Revision: D26980729 Pulled By: passy fbshipit-source-id: b4da7e300d582ba38e173f6f2b060fb312e9e610 |
||
|
|
80b94e79ee |
Upgrade docusaurus
Summary: Upgrading docusaurus to fix react-dev-utils vulnerability which is a transitive dependency. Reviewed By: mweststrate Differential Revision: D27010446 fbshipit-source-id: 3caf73029de57067c6060c34874539079721eb59 |
||
|
|
b2776f1c36 |
Fix for tests after call to "build-plugins"
Summary: After calling "bundle-all-plugins" locally, "yarn test" is failing with obscure message, because some tests are trying to import built bundles instead of "index.tsx". This diff fixes that. Reviewed By: passy Differential Revision: D26986246 fbshipit-source-id: cffe988dc642e2c5d2b2028581cd162350186e0c |
||
|
|
a6262cf3f0 |
Bump infer-annotation from 0.11.2 to 0.18.0 (#2044)
Summary: Bumps [infer-annotation](https://github.com/facebook/infer) from 0.11.2 to 0.18.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/facebook/infer/releases">infer-annotation's releases</a>.</em></p> <blockquote> <h2>Infer version 0.17.0</h2> <p>This is a binary release of Infer for Linux and MacOS. To use it follow these <a href="http://fbinfer.com/docs/getting-started.html">instructions</a>.</p> <h4>Highlights:</h4> <ul> <li>There’s a new <code>--inefficient-keyset-iterator</code> checker for finding inefficient uses of Java's keyset iterators that retrieve both key and value (on by default).</li> <li>Complete the set of Android thread annotations and Java nullability annotations. Updated artifacts are available on <a href="https://search.maven.org/artifact/com.facebook.infer.annotation/infer-annotation/0.17.0/jar">Maven Central</a>.</li> <li><code>--starvation</code> is now on by default. This analysis catches problems with threads not being able to make progress due to locking issues, incorrect scheduling priorities, etc. For instance, on Android calling Future.get from a UiThread without a sensible timeout will be flagged as a starvation issue.</li> <li>New Objective-C linter for calls to <code>optional</code> methods: <code>UNSAFE_CALL_TO_OPTIONAL_METHOD</code>, enabled by default.</li> <li>A new call-graph scheduler (<code>--call-graph-schedule</code>) improves performance of the analysis phase of Infer, especially when the number of files to analyze is less than available CPUs.</li> <li>A new flag <code>--oom-threshold</code> allows to throttle the analysis when the amount of free memory is below the provided threshold.</li> <li>New genrule based Buck/Java integration is much faster than the previous one, use with <code>--genrule-master-mode</code>.</li> <li>Infer’s internal clang is now in version 8.0.0.</li> <li>Update to javalib 3.1 provides better compatibility with Java 9 and Java 11. Refer to <a href="https://github.com/javalib-team/javalib/blob/master/CHANGELOG">their change log</a> for more details.</li> <li>Infer can now be built and run on MacOS Mojave without fiddling with <code>SDKROOT</code> (although you still might need it with non-standard toolchain setup).</li> <li>[β] <strong>Pulse</strong> is a new experimental lifetime analysis for C++, give it a try with <code>--pulse</code>. Beware that it doesn’t report much yet.</li> <li><code>--ownership</code> checker was superseded by Pulse and removed.</li> </ul> <p>... and many other fixes and improvements. For the full list of changes included see <a href="https://github.com/facebook/infer/compare/v0.16.0...v0.17.0">here</a>.</p> <p>The facebook-clang-plugins version used for this release is <a href="https://github.com/facebook/facebook-clang-plugins/commit/9386890e42043d04f9">https://github.com/facebook/facebook-clang-plugins/commit/9386890e42043d04f9</a> cd9e7b204cb525d4417c41.</p> <p>The sha256 checksums of the tarballs are:</p> <pre><code>$ shasum -a 256 infer-*-v0.17.0.tar.xz de972ba3043f18b29a8eff6cd7612e24f5ffaef038dc7949befeaf490931725e infer-linux64-v0.17.0.tar.xz 1a3ef6fb51846ae63ffd7fde3b0255f75bab6157f5de1842606fa32988d101f8 infer-osx-v0.17.0.tar.xz </code></pre> <h2>Infer version 0.16.0</h2> <p>This is a binary release of Infer for Linux and MacOS. To use it follow these <a href="http://fbinfer.com/docs/getting-started.html">instructions</a>.</p> <p>It's been a long time since the previous release, here are some new features and improvements you can find in this new release:</p> <p>Backend analyses:</p> <ul> <li>A brand new analysis to compute the runtime cost of methods and functions: passing <code>--cost</code> (off by default) to Infer will output a costs-report.json file describing, among others, the computational complexity of each function in the code using the big-O notation, eg <code>O(1)</code>, <code>O(list.length)</code>, ...</li> <li>The deadlock detection analysis has been ported to C++ and Objective-C and mainly focuses on self-deadlocks (taking a mutex twice). Activate with <code>--starvation</code> (off by default).</li> <li>The data race detector RacerD has been ported to Objective-C and detects races on fields protected by a C++ mutex. It reports "Thread Safety Violation" and "GuardedBy Violation" errors on Java and "Lock Consistency Violation" on C++ and Objective-C. Activate with <code>--racerd</code> (on by default).</li> <li>A progress bar is displayed while the analysis is running</li> <li>Countless improvements and tweaks, in particular in RacerD and in analyses for C++.</li> </ul> <p>Frontends:</p> <ul> <li>Infer now ships with clang version 7.0.1</li> <li>Support for Java up to version 11</li> </ul> <p>The sha256 checksums of the tarballs are:</p> <pre><code></tr></table> </code></pre> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/facebook/infer/blob/master/Changelog.md">infer-annotation's changelog</a>.</em></p> <blockquote> <h2>Version 0.17.0</h2> <ul> <li>There's a new <code>--inefficient-keyset-iterator</code> checker for finding inefficient uses of Java's keyset iterators that retrieve both key and value (on by default).</li> <li>Complete the set of Android thread annotations and Java nullability annotations. Updated artifacts are available on <a href="https://search.maven.org/artifact/com.facebook.infer.annotation/infer-annotation/0.17.0/jar">Maven Central</a>.</li> <li><code>--starvation</code> is now on by default. This analysis catches problems with threads not being able to make progress due to locking issues, incorrect scheduling priorities, etc. For instance, on Android calling Future.get from a UiThread without a sensible timeout will be flagged as a starvation issue.</li> <li>New Objective-C linter for calls to <code>optional</code> methods: <code>UNSAFE_CALL_TO_OPTIONAL_METHOD</code>, enabled by default.</li> <li>A new call-graph scheduler (<code>--call-graph-schedule</code>) improves performance of the analysis phase of Infer, especially when the number of files to analyze is less than available CPUs.</li> <li>A new flag <code>--oom-threshold</code> allows to throttle the analysis when the amount of free memory is below the provided threshold.</li> <li>New genrule based Buck/Java integration is much faster than the previous one, use with <code>--genrule-master-mode</code>.</li> <li>Infer's internal clang is now in version 8.0.0.</li> <li>Update to javalib 3.1 provides better compatibility with Java 9 and Java 11. Refer to <a href="https://github.com/javalib-team/javalib/blob/master/CHANGELOG">their change log</a> for more details.</li> <li>Infer can now be built and run on MacOS Mojave without fiddling with <code>SDKROOT</code> (although you still might need it with non-standard toolchain setup).</li> <li>[β] <strong>Pulse</strong> is a new experimental lifetime analysis for C++, give it a try with <code>--pulse</code>. Beware that it doesn't report much yet.</li> <li><code>--ownership</code> checker was superseded by Pulse and removed.</li> </ul> <h2>Version 0.16.0</h2> <p>Backend analyses:</p> <ul> <li>A brand new analysis to compute the runtime cost of methods and functions: passing <code>--cost</code> (off by default) to Infer will output a costs-report.json file describing, among others, the computational complexity of each function in the code using the big-O notation, eg <code>O(1)</code>, <code>O(list.length)</code>, ...</li> <li>The deadlock detection analysis has been ported to C++ and Objective-C and mainly focuses on self-deadlocks (taking a mutex twice). Activate with <code>--starvation</code> (off by default).</li> <li>The data race detector RacerD has been ported to Objective-C and detects races on fields protected by a C++ mutex. It reports "Thread Safety Violation" and "GuardedBy Violation" errors on Java and "Lock Consistency Violation" on C++ and Objective-C. Activate with <code>--racerd</code> (on by default).</li> <li>A progress bar is displayed while the analysis is running</li> <li>Countless improvements and tweaks, in particular in RacerD and in analyses for C++.</li> </ul> <p>Frontends:</p> <ul> <li>Infer now ships with clang version 7.0.1</li> <li>Support for Java up to version 11</li> </ul> <h2>Version 0.15.0</h2> <ul> <li>switch infer license to MIT</li> <li>publish binaries</li> <li>[clang] lots of improvements to the frontend</li> </ul> <h2>Version 0.14.0</h2> <ul> <li>New checker: <code>--ownership</code> detects a subset of use-after-free issues due to bad manual memory management. This is a rough prototype of Rust-style borrow checker for C++. (enabled by default, C++)</li> <li>New checker: <code>--uninit</code> detects uses of uninitialized values (enabled by default, C/C++/Objective-C)</li> <li>New checker: <code>--racerd</code> now also detects inconsistent lock usage in C++. Also improved the lock domain to reduce false positives for all languages.</li> <li>Improved C++ support: destructors are now properly translated; addresses and pointers are handled more precisely</li> <li>Improved retain cycles detection (Objective-C)</li> <li>Upgraded the internal clang to clang 7</li> <li>[internal] SQLite is being used to store some of infer's analysis artefacts instead of storing them in files on disk. This improves analysis speed and reduces load on the OS.</li> </ul> <h2>Version 0.13.1</h2> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/facebook/infer/commits/infer-annotation-0.18.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Pull Request resolved: https://github.com/facebook/flipper/pull/2044 Reviewed By: nikoant Differential Revision: D26947169 Pulled By: passy fbshipit-source-id: 2158ae6518094e8521f3a2c21f9e62bb6bb8dacf |
||
|
|
1d7cfe3d22 |
Bump runtime from 1.0.0 to 1.0.1 (#2039)
Summary: Bumps runtime from 1.0.0 to 1.0.1. [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Pull Request resolved: https://github.com/facebook/flipper/pull/2039 Reviewed By: nikoant Differential Revision: D26947198 Pulled By: passy fbshipit-source-id: 235c48595cdd367479155d081f466f1859108706 |
||
|
|
ac1f5c1008 |
Flipper Snapshot Bump: v0.80.1-SNAPSHOT
Summary: Releasing snapshot version 0.80.1-SNAPSHOT Reviewed By: priteshrnandgaonkar Differential Revision: D26979912 fbshipit-source-id: 92a539b26bf8fa176d06f15537ba81e751736e24 |
||
|
|
59204328c3 |
Flipper Release: v0.80.0
Summary: Releasing version 0.80.0 Reviewed By: priteshrnandgaonkar Differential Revision: D26979913 fbshipit-source-id: a309ac59160d2464931f06b978f535c7c712bf08 |
||
|
|
c4cf46207b |
Upgrade docusaurus tools
Summary: Wanted to have jknoxville's new start-fb shortcut. Reviewed By: jknoxville Differential Revision: D26978911 fbshipit-source-id: 3f6a93381151df4e08e887f76c0240baee82fb82 |
||
|
|
f508a35ff9 |
Fix patch release versioning for open-source version
Summary: Patch was always set to "0" for open source releases even if it is set to "1" in package.json Reviewed By: passy Differential Revision: D26975947 fbshipit-source-id: b3f127c9746797fbb5a79dfcd9bd52210c3a7df8 |
||
|
|
11f7af3e72 |
Bump robolectric from 4.4 to 4.5.1 (#2038)
Summary: Bumps [robolectric](https://github.com/robolectric/robolectric) from 4.4 to 4.5.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/robolectric/robolectric/releases">robolectric's releases</a>.</em></p> <blockquote> <h2>Robolectric 4.5.1</h2> <p>This is a minor release that fixes a regression in 4.5 and removes some superfluous print statements. See <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6187">robolectric/robolectric#6187</a> and <a href="https://github-redirect.dependabot.com/robolectric/robolectric/pull/6177">robolectric/robolectric#6177</a> respectively for more details.</p> <p>Robolectric 4.5 adds support for Android API 30 (R final) and contains many bug fixes and other enhancements.</p> <p>More detailed release notes are forthcoming.</p> <p>For all changes view the <a href="https://github.com/robolectric/robolectric/compare/robolectric-4.4...robolectric-4.5">comparison to 4.4</a>.</p> <h2>Use Robolectric:</h2> <pre lang="groovy"><code>testCompile "org.robolectric:robolectric:4.5" </code></pre> <h2>Robolectric 4.5 Beta 1</h2> <p><em><strong>NOTE</strong>: Robolectric 4.5-beta-1 is a outdated preview release; please use <a href="https://github.com/robolectric/robolectric/releases/tag/robolectric-4.5">4.5</a> or later instead.</em></p> <h2>Robolectric 4.5 Alpha 3</h2> <p><em><strong>NOTE</strong>: Robolectric 4.5-alpha-3 is a outdated preview release; please use <a href="https://github.com/robolectric/robolectric/releases/tag/robolectric-4.5">4.5</a> or later instead.</em></p> <h2>Robolectric 4.5 Alpha 2</h2> <p><em><strong>NOTE</strong>: Robolectric 4.5-alpha-2 is a outdated preview release; please use <a href="https://github.com/robolectric/robolectric/releases/tag/robolectric-4.5">4.5</a> or later instead.</em></p> <h2>Robolectric 4.5 Alpha 1</h2> <p><em><strong>NOTE</strong>: Robolectric 4.5-alpha-1 is a outdated preview release; please use <a href="https://github.com/robolectric/robolectric/releases/tag/robolectric-4.5">4.5</a> or later instead.</em></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
f61b5a1a86 |
Network plugin - support mocks in imported devices (#2040)
Summary: It is not currently possible to create mock routes from imported network logs. This PR will provide that functionality. See this issue for more details: https://github.com/facebook/flipper/issues/1988 ## Changelog Network plugin - create mocks from imported network logs Pull Request resolved: https://github.com/facebook/flipper/pull/2040 Test Plan: Use sample app to create network activity Export network activity Import network activity Create mocks from imported network activity Verify that mocks work using sample app Reviewed By: mweststrate Differential Revision: D26947187 Pulled By: passy fbshipit-source-id: 5e4e0197c49bb7a8227a70e574613381815e6d30 |
||
|
|
07defebb22 |
Bump hamcrest-library from 1.3 to 2.2 (#2041)
Summary: Bumps [hamcrest-library](https://github.com/hamcrest/JavaHamcrest) from 1.3 to 2.2. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/hamcrest/JavaHamcrest/releases">hamcrest-library's releases</a>.</em></p> <blockquote> <h2>hamcrest-java-2.2</h2> <h3>Improvements</h3> <ul> <li>AllOf/AnyOf: Pass the matchers to constructor using varargs ([Issue <a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/245">https://github.com/facebook/flipper/issues/245</a>](<a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/pull/245">hamcrest/JavaHamcrest#245</a>))</li> <li>Matchers.anyOf: Fix generic bounds compatibility for JDK 11 ([Issue <a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/256">https://github.com/facebook/flipper/issues/256</a>](<a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/256">hamcrest/JavaHamcrest#256</a>), [Issue <a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/257">https://github.com/facebook/flipper/issues/257</a>](<a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/257">hamcrest/JavaHamcrest#257</a>))</li> <li>AssertionError message is unhelpful when match fails for byte type ([Issue <a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/254">https://github.com/facebook/flipper/issues/254</a>](<a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/254">hamcrest/JavaHamcrest#254</a>), [Issue <a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/255">https://github.com/facebook/flipper/issues/255</a>](<a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/255">hamcrest/JavaHamcrest#255</a>))</li> <li>Use platform specific line breaks ([PR <a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/267">https://github.com/facebook/flipper/issues/267</a>](<a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/pull/267">hamcrest/JavaHamcrest#267</a>))</li> <li>Build now checks for consistent use of spaces ([PR <a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/issues/217">https://github.com/facebook/flipper/issues/217</a>](<a href="https://github-redirect.dependabot.com/hamcrest/JavaHamcrest/pull/217">hamcrest/JavaHamcrest#217</a>))</li> </ul> <h3>Bugfixes</h3> <ul> <li>Fix compatibility issue for development with Android D8 ( |
||
|
|
2af4c4e141 |
Bump guava from 20.0 to 23.0 (#2034)
Summary: Bumps [guava](https://github.com/google/guava) from 20.0 to 23.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/google/guava/releases">guava's releases</a>.</em></p> <blockquote> <h2>23.0</h2> <p>Final <a href="https://github.com/google/guava/wiki/Release23">Guava 23.0</a> release.</p> <h2>23.0-rc1</h2> <p>First <a href="https://github.com/google/guava/wiki/Release23">Guava 23.0</a> release candidate.</p> <h2>22.0</h2> <p>Final <a href="https://github.com/google/guava/wiki/Release22">Guava 22.0</a> release.</p> <h2>22.0-rc1</h2> <p>First release candidate for <a href="https://github.com/google/guava/wiki/Release22">Guava 22.0</a>.</p> <h2>21.0</h2> <p>Final <a href="https://github.com/google/guava/wiki/Release21">Guava 21.0</a> release.</p> <p>This release requires Java 8.</p> <h2>21.0-rc2</h2> <p>Second release candidate for <a href="https://github.com/google/guava/wiki/Release21">Guava 21.0</a>.</p> <p>This release candidate fixes a small issue with rc1; a number of methods that create <code>Collector</code>s took Guava's functional types (e.g. <code>base.Function</code>) as parameters rather than the <code>java.util.function</code> equivalent.</p> <p>This release requires Java 8.</p> <h2>21.0-rc1</h2> <p>First release candidate for <a href="https://github.com/google/guava/wiki/Release21">Guava 21.0</a>.</p> <p>This release requires Java 8.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href=" |
||
|
|
58b2daea02 |
Bundle all plugins script
Summary: New script which bundles all plugins. It is faster to bundle them all in one script rather than call "build-plugin" for each of them. The new script will be used in CI to catch regressions when some plugins cannot be bundled into standalone packages. Reviewed By: passy Differential Revision: D26918103 fbshipit-source-id: dbc5c4cd706e8d585718a198dbd7ae9ffd988e28 |
||
|
|
c065760d15 |
Stable babel transformation cache key
Summary: This diff makes babel transformation cache key stable. With the previous approach it was changed on each CI build so it was not possible to persist cache between builds. Now it is computed from the transformation package content after each build. Because of that it is equal for every CI build while Babel transformations unchanged and so we could use same cache on different Sandcastle agents. In addition to that, it makes it possible to specify directory for Metro cache so we can save/restore it in CI builds. Reviewed By: mweststrate Differential Revision: D26877989 fbshipit-source-id: 7cb04a177f86e61986585e5a74d9c7396ddddc18 |
||
|
|
baeb8ba5be |
Performance improvements for "build-plugin" task
Summary: Few improvements for "build-plugin" task which together with Sandcastle command changes (D26872427) helps to build all plugins in CI ~30% faster if most of them has not changed (which is usually the case): 1) compute package checksum in the same script to not call additional yarn scripts for each plugin 2) avoid packaging plugin if it's checksum has not changed since last release Reviewed By: mweststrate Differential Revision: D26872253 fbshipit-source-id: 968102d32a1550ea7503f1169f0ef2863296383f |
||
|
|
5df0fd6e52 |
Update the device name for DummyDevice type
Summary: This diff updates the device display name in the drop down for DummyDevice Reviewed By: mweststrate Differential Revision: D26945724 fbshipit-source-id: 6a82c6353f6d8dfe6d3a60e06f0f78d00c39ff59 |
||
|
|
50f31f9fe0 |
Update the device plugins supported devices arguments
Summary: Device plugins won't work for DummyDevice type as the device id is a fake one for this. This diff updates the "supportedDevices" for the plugins. Reviewed By: mweststrate Differential Revision: D26944601 fbshipit-source-id: a29acc288f8f0c564f52db02914e7b0491b211d2 |
||
|
|
60994bd41f |
Rename ClientDevice to DummyDevice
Summary: Rename ClientDevice to DummyDevice. It is being currently used in the case when we do cert exchange through WWW/Distillery. In this mode we are not able to figure out the exact device id(instead we create a fake one) and thus we would not like to use Android or IOSDevice for such cases. Reviewed By: mweststrate Differential Revision: D26944415 fbshipit-source-id: f9f76e8997cf5402ba5627ae1959f5a11e078bb1 |
||
|
|
d12501677d |
Upgrade elliptic for for CVE-2020-28498
Summary: Currently failing OSS validation because we have a GitHub security alert. Reviewed By: fabiomassimo Differential Revision: D26944823 fbshipit-source-id: 3075639aae97b1d68b19e5149ebd7a7f7ac419e1 |
||
|
|
6531b1ff5c |
Bump @ant-design/icons from 4.4.0 to 4.5.0 in /desktop (#2019)
Summary: Bumps [ant-design/icons](https://github.com/ant-design/ant-design-icons) from 4.4.0 to 4.5.0. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/ant-design/ant-design-icons/commits">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Pull Request resolved: https://github.com/facebook/flipper/pull/2019 Reviewed By: mweststrate Differential Revision: D26889248 Pulled By: passy fbshipit-source-id: 753cc63b9417b5e33eb0593122b248fc0c69b0f7 |
||
|
|
f87cad5eca |
Bump @oclif/dev-cli from 1.22.2 to 1.26.0 in /desktop (#2016)
Summary: Bumps [oclif/dev-cli](https://github.com/oclif/dev-cli) from 1.22.2 to 1.26.0. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/oclif/dev-cli/releases"><code>@oclif/dev-cli's releases</code></a>.</em></p> <blockquote> <h2>v1.26.0</h2> <h1><a href="https://github.com/oclif/dev-cli/compare/v1.25.1...v1.26.0">1.26.0</a> (2020-12-10)</h1> <h3>Features</h3> <ul> <li>adding region, sslEnabled and s3ForcePathStyle through env vars (<a href="https://github-redirect.dependabot.com/oclif/dev-cli/issues/280">https://github.com/facebook/flipper/issues/280</a>) (<a href=" |
||
|
|
6ac66a0d2d |
Bump @types/archiver from 3.1.1 to 5.1.0 in /desktop (#2020)
Summary: Bumps [types/archiver](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/archiver) from 3.1.1 to 5.1.0. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/archiver">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Pull Request resolved: https://github.com/facebook/flipper/pull/2020 Reviewed By: mweststrate Differential Revision: D26889183 Pulled By: passy fbshipit-source-id: 60ab86160e29ebf53d8291bac14ef25da9c99e2e |
||
|
|
bfad9c6214 |
Clean up xplat/sonar/android/src/main/java/com/facebook/flipper/plugins/inspector/InspectorFlipperPlugin.java
Reviewed By: passy Differential Revision: D26908296 fbshipit-source-id: f8e0cd4cd1d57b6b43991f4a169f36d104a3a372 |
||
|
|
b9afadf4a4 |
Bump @types/node from 14.14.10 to 14.14.31 in /desktop (#2021)
Summary: Bumps [types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 14.14.10 to 14.14.31. <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Pull Request resolved: https://github.com/facebook/flipper/pull/2021 Reviewed By: mweststrate Differential Revision: D26889123 Pulled By: passy fbshipit-source-id: 1c7616e2556fec89db5d6a5b45bb75bcffef82f7 |
||
|
|
1f19f69356 |
Bump espresso-core from 3.1.0 to 3.3.0 (#2004)
Summary: Bumps espresso-core from 3.1.0 to 3.3.0. [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `dependabot rebase` will rebase this PR - `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `dependabot merge` will merge this PR after your CI passes on it - `dependabot squash and merge` will squash and merge this PR after your CI passes on it - `dependabot cancel merge` will cancel a previously requested merge and block automerging - `dependabot reopen` will reopen this PR if it is closed - `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Pull Request resolved: https://github.com/facebook/flipper/pull/2004 Reviewed By: fabiomassimo Differential Revision: D26888849 Pulled By: passy fbshipit-source-id: 06752c640ffacc9fd6dfbd0bd671c2d71f1dd9b2 |