Implement the EGDS protocol

Signed-off-by: leilei.gll<EMAIL_ADDRESS>Signed-off-by: jingyi.lyq<EMAIL_ADDRESS>Description: Implement the EGDS protocol
Risk Level: Medium
Testing: unit test, integration
Release Notes: added support for the EGDS protocol
[Optional Fixes #Issue] #9455
[Optional Deprecated:]
the draft design document is available at below link.
The draft design can be seen here.
The design file for EGDS in Pilot is here.

Hey folks,
Before we continue on the in-depth review I would like to provide a few of my own thoughts here after reading this PR as well as the spec and talking with @snowp.
My general feeling is that the EGDS proposal is solving a very specific use case (management server driven slices) and adds a substantial amount of complexity to Envoy, while also adding complexity to the management server at the same time. It's not clear to me  that this is the right tradeoff, as we have already identified a lot of corner cases (priority, etc.) that might not be handled by this code.
After thinking about this, my personal opinion is that instead we should invest in a true delta EDS CLA solution. The way I envision this working is that the EDS response can either contain an inline repeated LocalityLbEndpoints list OR a config source that points to a new delta API that can stream host changes (adds/removes/updates).
I also envision us modifying the delta API to allow for a keyframe / i-frame approach to delivering delta updates that would allow the management server to resync the client as it wishes. This would help management server complexity come down quite a lot in many cases (obviously this can be done orthogonally).
I also think that longer term we can look at implementing a lot of this more complex delta / subset logic directly inside https://github.com/envoyproxy/xds-relay once that gets going.
I suggest we pause this review for now and potentially either take this to the design doc and/or discuss this in the next Envoy community meeting? Thoughts? cc @envoyproxy/maintainers @envoyproxy/api-shepherds @wgallagher @lambdai @tomwans @gengleilei jessicayuen

@mattklein123 Thanks so much for your suggestion. From my view I want make some explanation about the EGDS:

The EGDS was discuss thoroughly discussed in both Istio and Envoy community, you can find the issues here and here.
We (including you) have discussed the Delta xDS and EGDS approaches. We make conclusion to implement this feature by introducing EGDS because:

The xDS Delta is intend to achieve incremental updates in xDS sequences, not patch on a single resource. As you know the EDS has no sub-resource at present. Unless we make modification on the design to Delta xDS. No patch can be applied.
The xDS Delta is not that stable and tested on production environment(Istio hasn't implemented this). Introducing patching to Delta xDS will cost big effort and increase complexity, as we've discussed. And this will introduce modification on Delta xDS protocol, which won't be easy work.
I personally think introducing a side resource like EGDS won't have much side effect on current EDS handling process. As we've implemented in our PR. You can switch off EGDS at any time by just changing an attribute in the config. If we have another better solution in the future, we can remove it easily.

I don think the EGDS would not be a specific use case because it solves a generic scaling problem. When you cluster grows large, there will be 1000+ endpoints within a single EDS. It wouldn't be much effective and wisely to do fully updates if only 1~2 endpoints was changed.
The EGDS was designed to collaborate with the K8s endpoint slice, I think it is a good practice to have all the concepts aligned.

There are many people interested in this feature. @howardjohn @hzxuzhonghu @sudhi-vm @lizan , you are welcomed to leave opinions.

I agree with @seflerZ  It is hard to guarantee a new model can be implemented quickly. EGDS is the most direct way to resolve the current scalibility issue. For no matter enduser or vendors, the service mesh currently can not satisfy their requirements, they may have very large  clusers commonly exceed more than 10k sidecars. But currently, service mesh solution istio/envoy can not handle this.
As the linked designs and prs, this is not much effort doing this, why can not handle the corner cases with careful review from maintainers?
I can not imagine when we can support a totally solutions like delta xds, which is not widely proved in production i think.
So would expect this to land down asap.

@mattklein123 Thank you for your advice, extension cluster refers to using CustomClusterType in the Cluster definition to add an EGDS type cluster ? I see redis implemented in this way. I think EGDS is not a special cluster, it is a new type of discovery, such as the current discovery type has static,EDS, etc. If we treat EGDS as a new type of discovery, I wonder if this meets the community's requirements ? thanks.

I think EGDS is not a special cluster, it is a new type of discovery, such as the current discovery type has static,EDS, etc. If we treat EGDS as a new type of discovery, I wonder if this meets the community's requirements ? thanks.

My personal opinion is that we do not want to add the EGDS API. Once we add an API, realistically, we cannot remove it. Thus, we can't make such a decision without a lot of thought. If you would like to discuss this part more let's please do so at the next community meeting.
By recommending an extension cluster, I'm trying to help you meet your goals if you absolutely must ship something like this ASAP, as you can implement whatever you want outside of core Envoy. Beyond that, as I already said, I would rather see us invest in a delta endpoint solution. Let's call this solution the LEDS (locality endpoint discovery service) for sake of a better name. This would be a sub-API called from within EDS that can deliver individual endpoints in a delta fashion as I described above.

Per discussion closing in favor of https://github.com/envoyproxy/envoy/issues/10373


Problem with "Toggle hide all CC lanes except lane under mouse cursor/last clicked..."

Hi!
When using these actions with shortcuts, one after the other :
-"Show only used CC lanes"
and then
-Any of the "Toggle hide all CC lanes except lane under mouse curor/last clicked (set height to....) or "Hide all CC lanes except lane under mouse cursor/last clicked" actions
The hide actions, most of the times, don´t work as expected; they show another set of stacked CC lanes. Only the second time I use it does the function perform as expected, showing the focused lane. Sometimes the desired lane to focus won´t appear when the "new" set of lanes is shown on the first try.
I hope it´s something related to any particular setting, but I report it anyway because these are extremely useful, everyday actions in my workflow.
Thank you very much in advance.

After private conversation, it seems that SoliDeoGloria2 was using REAPER 5 pres which had a bug with certain CC lanes that is fixed in current pre (v5pre17) (reported here: http://forum.cockos.com/showthread.php?p=1466047#post1466047)
I'm not quite sure what else could be the cause of this because the code is not that complicated (VELLANE lines in chunk are saved and restored without any editing done to them).
Part of the report that says that the action works after the second time confirms this suspicion (first time the action is run, lanes are wrongly replaced by REAPER - so the second time there are no lanes that show buggy behavior)
I'm closing the issue as resolved for now, let us know if the bug reappears


[mypy] Add mypy type annotation part 1

This PR introduces mypy and fixes some issues from some of the directories.
The goal
[done] mypy vllm/attention/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/core/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/distributed/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/engine/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/entrypoints/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/executor/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/usage/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/*.py --follow-imports=skip --config-file pyproject.toml
[done] mypy vllm/transformer_utils/*.py --follow-imports=skip --config-file pyproject.toml

Followup
mypy vllm/engine/*.py --follow-imports=skip --config-file pyproject.toml
mypy vllm/worker/*.py --follow-imports=skip --config-file pyproject.toml
mypy vllm/spec_decoding/*.py --follow-imports=skip --config-file pyproject.toml
mypy vllm/model_executor/*.py --follow-imports=skip --config-file pyproject.toml
mypy vllm/lora/*.py --follow-imports=skip --config-file pyproject.toml

For other files, I am planning to do it in a separate PR
Partially addressing https://github.com/vllm-project/vllm/issues/3680

 PR Checklist (Click to Expand)
Thank you for your contribution to vLLM! Before submitting the pull request, please ensure the PR meets the following criteria. This helps vLLM maintain the code quality and improve the efficiency of the review process.
PR Title and Classification
Only specific types of PRs will be reviewed. The PR title is prefixed appropriately to indicate the type of change. Please use one of the following:

[Bugfix] for bug fixes.
[CI/Build] for build or continuous integration improvements.
[Doc] for documentation fixes and improvements.
[Model] for adding a new model or improving an existing model. Model name should appear in the title.
[Frontend] For changes on the vLLM frontend (e.g., OpenAI API server, LLM class, etc.)
[Kernel] for changes affecting CUDA kernels or other compute kernels.
[Core] for changes in the core vLLM logic (e.g., LLMEngine, AsyncLLMEngine, Scheduler, etc.)
[Hardware][Vendor] for hardware-specific changes. Vendor name should appear in the prefix (e.g., [Hardware][AMD]).
[Misc] for PRs that do not fit the above categories. Please use this sparingly.

Note: If the PR spans more than one category, please include all relevant prefixes.
Code Quality
The PR need to meet the following code quality standards:

We adhere to Google Python style guide and Google C++ style guide.
Pass all linter checks. Please use format.sh to format your code.
The code need to be well-documented to ensure future contributors can easily understand the code.
Include sufficient tests to ensure the project to stay correct and robust. This includes both unit tests and integration tests.
Please add documentation to docs/source/ if the PR modifies the user-facing behaviors of vLLM. It helps vLLM user understand and utilize the new features or changes.

Notes for Large Changes
Please keep the changes as concise as possible. For major architectural changes (>500 LOC excluding kernel/data/config/test), we would expect a GitHub issue (RFC) discussing the technical design and justification. Otherwise, we will tag it with rfc-required and might not go through the PR.
What to Expect for the Reviews
The goal of the vLLM team is to be a transparent reviewing machine. We would like to make the review process transparent and efficient and make sure no contributor feel confused or frustrated. However, the vLLM team is small, so we need to prioritize some PRs over others. Here is what you can expect from the review process:

 After the PR is submitted, the PR will be assigned to a reviewer. Every reviewer will pick up the PRs based on their expertise and availability.
 After the PR is assigned, the reviewer will provide status update every 2-3 days. If the PR is not reviewed within 7 days, please feel free to ping the reviewer or the vLLM team.
 After the review, the reviewer will put an  action-required label on the PR if there are changes required. The contributor should address the comments and ping the reviewer to re-review the PR.
 Please respond to all comments within a reasonable time frame. If a comment isn't clear or you disagree with a suggestion, feel free to ask for clarification or discuss the suggestion.

Thank You
 Finally, thank you for taking the time to read these guidelines and for your interest in contributing to vLLM. Your contributions make vLLM a great tool for everyone!

@DarkLight1337 My mypy errors are all in slightly different files. Should be independent.

OP plans to commit further changes so it is better to notify in advance. Thanks for the speedy reply btw!

I'll maybe check in with the above PR. Perhaps it makes sense to split up into multiple PRs to make it easier to review and less likley to have some conflicts that need to be resolved after approval.

@michaelfeil so I guess we can merge your PR first and merge this PR as a follow up? since it introduces the mypy to the CI.

This is ready for the review.

Merged @michaelfeil's PR!

Just a heads-up, I have updated type annotations in vllm.entrypoints.openai via #4028.

It is mergeable! I think the lora failure is unrelated

cc @simon-mo it is ready to merge!


fix: merge frontend overridden function:  fromJSON, toJSON

Fix https://github.com/Unirep/Unirep/issues/25

add fromJSON and update toJSON in UnirepState and UserState
rename genUserStateFromContract to genUserState (since genUserStateFromParams is removed)   // genUserState usage
   const userState1 = await genUserState(provider, address, id) // from startBlock
   const userState2 = await genUserState(provider, address, id, userState.toJSON()) // restore userState and update
   const userState3 = UserState.fromJSON(id, userState.toJSON()) // restored userState, no update
   // genUnirepState usage
   const unirepState1 = await genUnirepState(provider, address) // from startBlock
   const unirepState2 = await genUnirepState(provider, address, unirepState.toJSON()) // restore unirepState and update
   const unirepState3 = Unirep.fromJSON(unirepState.toJSON()) // restored unirepState, no update

Use stringifyAttestation() instead of attestation.toJSON(). Remove duplicated Attestation, IAttestation as in @unirep/contracts
Fix function description
Update test scripts

In the future could you separate refactors and tasks into different commits? In 5960e1d there are a lot of changes; I want to review the fromJSON/toJSON stuff carefully but didn't expect the refactor in that commit 😅

@vimwitch would you mind review the final core/src/UnirepState.ts and core/src/UserState.ts files? Or I can create another PR. Sorry for the inconvenience 😅

LGTM, i think there are some differences in the args for the JSON stuff, but we can fix it when we integrate it into the frontend.


back pressure operator

Hi, thanks for creating this library which takes the job of the missing part in RxPY. I wonder whether these back pressure wrapper can be applied to the operator chain? There are some cases that the pipeline is actually limiting the whole process.

My first trial is to create a operator like this
def bp_operator(strategy):
    def upstream(source: rx.Observable):
        def subscribe(observer: rx.core.Observer, sche=None):
            return source.subscribe(strategy(observer), sche)

        return rx.create(subscribe)
    return upstream

This is an intuitive test case to show how this operator will work.
import time
from unittest import TestCase

import rx
from rx import subject, operators
from rxpy_backpressure import BackPressure

from utils.backpressure import bp_operator

class Test_bp_operator(TestCase):
    def setUp(self) -> None:
        # create source stream (fast)
        self.source = rx.interval(0.1)
        # and fast consumer
        self.observer = rx.core.Observer(lambda x: print(f"Received{x}"))
        self._stop = subject.Subject()

    def slow_op(self, val):
        if val > 5 and val < 10:
            print(f"[slow_op] I am stucked at slow_op: {val}")
            time.sleep(0.5)
            print(f"[slow_op] I am done: {val}")
        else:
            print(f"[slow_op] I am done: {val}")
        return val

    def stop(self, x):
        if x > 15:
            self._stop.on_next(0)

    def test_without_bp(self):
        self.source.pipe(
            operators.do_action(lambda x: print(f"Producing {x}")),
            operators.map(self.slow_op),
            operators.do_action(self.stop),
            operators.take_until(self._stop),
        ).run()

    def test_with_drop(self):
        self.source.pipe(
            operators.do_action(lambda x: print(f"Producing {x}")),
            bp_operator(BackPressure.DROP, 3),
            operators.map(self.slow_op),
            operators.do_action(self.stop),
            operators.take_until(self._stop),
        ).run()

    def test_with_latest(self):
        self.source.pipe(
            operators.do_action(lambda x: print(f"Producing {x}")),
            bp_operator(BackPressure.LATEST),
            operators.map(self.slow_op),
            operators.do_action(self.stop),
            operators.take_until(self._stop),
        ).run()

For simplicity, I recommend to have a table to help user choosing which operator to use:

Drop message?
Slow down upstream ?
Memory may build up?

No operator
NO
YES
NO

LATEST
YES
NO
NO

BUFFER/observe_on
NO
NO
YES

DROP(n)
YES (>n)
NO
NO

Hello @wuyuanyi135,
I welcome your suggestions and think a helper function to work nicely with pipelines.

Closing issue due to inactivity, @wuyuanyi135 would happily accept a PR for this


Not in collection filter

This is the actual not-in-collection feature (the previous PR with not-contains had an incorrectly named branch).

Minor nit question: linter says line 457 of filters.py is too long (by just 2 characters). Is there a style guide for where to break the line, or better yet an auto-formatter somewhere? Maybe in Pycharm settings?

Minor nit question: linter says line 457 of filters.py is too long (by just 2 characters). Is there a style guide for where to break the line, or better yet an auto-formatter somewhere? Maybe in Pycharm settings?

We don't yet have an auto-formatter. After January 1, 2020, we will drop Python 2 support together with the rest of the Python ecosystem, and with that we'll adopt black as the default auto-formatter. That's a few months away, though.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target/pull/246 is merged into live branch.
Auto archive content to https://github.com/OPS-E2E-PPE/docs-archive-test-target.git

Docs Build status updates of commit f23342a:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error]

Cannot sync git repo to specified commit because branch Release_Archive_master_2019-11-22-03-28-28 has been deleted or has been force pushed: fatal: couldn't find remote ref refs/heads/Release_Archive_master_2019-11-22-03-28-28

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


fix bintray publish subproject description

Fix by changing single quotes to double quotes, and add some more description.

LGTM :+1:


empty repository causes runtime exception at quantity-of-deliverables.rb

When Git repository is empty (has no commits), I see this:
Octokit::Conflict: GET https://api.github.com/repos/objectionary/hone-maven-plugin/commits?per_page=100&since=2024-07-13T06%3A28%3A18%2B00%3A00: 409 - Git Repository is empty. // See: https://docs.github.com/rest/commits/commits#list-commits
	/usr/local/bundle/gems/octokit-9.1.0/lib/octokit/response/raise_error.rb:14:in `on_complete'
	/usr/local/bundle/gems/faraday-2.10.1/lib/faraday/middleware.rb:57:in `block in call'
	/usr/local/bundle/gems/faraday-2.10.1/lib/faraday/response.rb:42:in `on_complete'
	/usr/local/bundle/gems/faraday-2.10.1/lib/faraday/middleware.rb:56:in `call'
	/usr/local/bundle/gems/faraday-http-cache-2.5.1/lib/faraday/http_cache.rb:286:in `fetch'
	/usr/local/bundle/gems/faraday-http-cache-2.5.1/lib/faraday/http_cache.rb:190:in `process'
	/usr/local/bundle/gems/faraday-http-cache-2.5.1/lib/faraday/http_cache.rb:141:in `call!'
	/usr/local/bundle/gems/faraday-http-cache-2.5.1/lib/faraday/http_cache.rb:121:in `call'
	/usr/local/bundle/gems/fbe-0.0.36/lib/fbe/middleware/quota.rb:41:in `call'
	/usr/local/bundle/gems/faraday-retry-2.2.1/lib/faraday/retry/middleware.rb:153:in `call'
	/usr/local/bundle/gems/faraday-2.10.1/lib/faraday/rack_builder.rb:152:in `build_response'
	/usr/local/bundle/gems/faraday-2.10.1/lib/faraday/connection.rb:444:in `run_request'
	/usr/local/bundle/gems/faraday-2.10.1/lib/faraday/connection.rb:200:in `get'
	/usr/local/bundle/gems/sawyer-0.9.2/lib/sawyer/agent.rb:99:in `call'
	/usr/local/bundle/gems/octokit-9.1.0/lib/octokit/connection.rb:156:in `request'
	/usr/local/bundle/gems/octokit-9.1.0/lib/octokit/connection.rb:84:in `paginate'
	/usr/local/bundle/gems/octokit-9.1.0/lib/octokit/client/commits.rb:27:in `commits'
	/usr/local/bundle/gems/octokit-9.1.0/lib/octokit/client/commits.rb:54:in `commits_since'
	/usr/local/bundle/gems/verbose-0.0.2/lib/verbose.rb:48:in `method_missing'
	/usr/local/bundle/gems/decoor-0.0.1/lib/decoor.rb:43:in `method_missing'
	/action/judges/quantity-of-deliverables/quantity-of-deliverables.rb:52:in `block in <top (required)>'

Let's try to prevent this from happening somehow. Maybe let's check the number of commits first, through Fbe.octo.repository() call?

@yegor256 May I take this one?

@Suban05 please, go ahead

@yegor256 unfortunately, we can't check the number of commits through Fbe.octo.repository() call. There is no information about it in the response(
I suggest just catching the exception using rescue Octokit::Conflict

@Suban05 maybe GraphQL can help us?

@Suban05 For check empty repo we can use size property

Example:
curl -L \
  -H "Accept: application/vnd.github+json" \
  -H "X-GitHub-Api-Version: 2022-11-28" \
  'https://api.github.com/repos/Yegorov/empty-repo'

{
  "id": 841899997,
  "node_id": "R_kgDOMi5f3Q",
  "name": "empty-repo",
  "full_name": "Yegorov/empty-repo",
  "private": false,
  "owner": {
    "login": "Yegorov",
    "id": 2566462,
    "node_id": "MDQ6VXNlcjI1NjY0NjI=",
    "avatar_url": "https://avatars.githubusercontent.com/u/2566462?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/Yegorov",
    "html_url": "https://github.com/Yegorov",
    "followers_url": "https://api.github.com/users/Yegorov/followers",
    "following_url": "https://api.github.com/users/Yegorov/following{/other_user}",
    "gists_url": "https://api.github.com/users/Yegorov/gists{/gist_id}",
    "starred_url": "https://api.github.com/users/Yegorov/starred{/owner}{/repo}",
    "subscriptions_url": "https://api.github.com/users/Yegorov/subscriptions",
    "organizations_url": "https://api.github.com/users/Yegorov/orgs",
    "repos_url": "https://api.github.com/users/Yegorov/repos",
    "events_url": "https://api.github.com/users/Yegorov/events{/privacy}",
    "received_events_url": "https://api.github.com/users/Yegorov/received_events",
    "type": "User",
    "site_admin": false
  },
  "html_url": "https://github.com/Yegorov/empty-repo",
  "description": null,
  "fork": false,
  "url": "https://api.github.com/repos/Yegorov/empty-repo",
  "forks_url": "https://api.github.com/repos/Yegorov/empty-repo/forks",
  "keys_url": "https://api.github.com/repos/Yegorov/empty-repo/keys{/key_id}",
  "collaborators_url": "https://api.github.com/repos/Yegorov/empty-repo/collaborators{/collaborator}",
  "teams_url": "https://api.github.com/repos/Yegorov/empty-repo/teams",
  "hooks_url": "https://api.github.com/repos/Yegorov/empty-repo/hooks",
  "issue_events_url": "https://api.github.com/repos/Yegorov/empty-repo/issues/events{/number}",
  "events_url": "https://api.github.com/repos/Yegorov/empty-repo/events",
  "assignees_url": "https://api.github.com/repos/Yegorov/empty-repo/assignees{/user}",
  "branches_url": "https://api.github.com/repos/Yegorov/empty-repo/branches{/branch}",
  "tags_url": "https://api.github.com/repos/Yegorov/empty-repo/tags",
  "blobs_url": "https://api.github.com/repos/Yegorov/empty-repo/git/blobs{/sha}",
  "git_tags_url": "https://api.github.com/repos/Yegorov/empty-repo/git/tags{/sha}",
  "git_refs_url": "https://api.github.com/repos/Yegorov/empty-repo/git/refs{/sha}",
  "trees_url": "https://api.github.com/repos/Yegorov/empty-repo/git/trees{/sha}",
  "statuses_url": "https://api.github.com/repos/Yegorov/empty-repo/statuses/{sha}",
  "languages_url": "https://api.github.com/repos/Yegorov/empty-repo/languages",
  "stargazers_url": "https://api.github.com/repos/Yegorov/empty-repo/stargazers",
  "contributors_url": "https://api.github.com/repos/Yegorov/empty-repo/contributors",
  "subscribers_url": "https://api.github.com/repos/Yegorov/empty-repo/subscribers",
  "subscription_url": "https://api.github.com/repos/Yegorov/empty-repo/subscription",
  "commits_url": "https://api.github.com/repos/Yegorov/empty-repo/commits{/sha}",
  "git_commits_url": "https://api.github.com/repos/Yegorov/empty-repo/git/commits{/sha}",
  "comments_url": "https://api.github.com/repos/Yegorov/empty-repo/comments{/number}",
  "issue_comment_url": "https://api.github.com/repos/Yegorov/empty-repo/issues/comments{/number}",
  "contents_url": "https://api.github.com/repos/Yegorov/empty-repo/contents/{+path}",
  "compare_url": "https://api.github.com/repos/Yegorov/empty-repo/compare/{base}...{head}",
  "merges_url": "https://api.github.com/repos/Yegorov/empty-repo/merges",
  "archive_url": "https://api.github.com/repos/Yegorov/empty-repo/{archive_format}{/ref}",
  "downloads_url": "https://api.github.com/repos/Yegorov/empty-repo/downloads",
  "issues_url": "https://api.github.com/repos/Yegorov/empty-repo/issues{/number}",
  "pulls_url": "https://api.github.com/repos/Yegorov/empty-repo/pulls{/number}",
  "milestones_url": "https://api.github.com/repos/Yegorov/empty-repo/milestones{/number}",
  "notifications_url": "https://api.github.com/repos/Yegorov/empty-repo/notifications{?since,all,participating}",
  "labels_url": "https://api.github.com/repos/Yegorov/empty-repo/labels{/name}",
  "releases_url": "https://api.github.com/repos/Yegorov/empty-repo/releases{/id}",
  "deployments_url": "https://api.github.com/repos/Yegorov/empty-repo/deployments",
  "created_at": "2024-08-13T09:14:34Z",
  "updated_at": "2024-08-13T09:14:34Z",
  "pushed_at": "2024-08-13T09:14:34Z",
  "git_url": "git://github.com/Yegorov/empty-repo.git",
  "ssh_url": "git@github.com:Yegorov/empty-repo.git",
  "clone_url": "https://github.com/Yegorov/empty-repo.git",
  "svn_url": "https://github.com/Yegorov/empty-repo",
  "homepage": null,
  "size": 0,
  "stargazers_count": 0,
  "watchers_count": 0,
  "language": null,
  "has_issues": true,
  "has_projects": true,
  "has_downloads": true,
  "has_wiki": true,
  "has_pages": false,
  "has_discussions": false,
  "forks_count": 0,
  "mirror_url": null,
  "archived": false,
  "disabled": false,
  "open_issues_count": 0,
  "license": null,
  "allow_forking": true,
  "is_template": false,
  "web_commit_signoff_required": false,
  "topics": [

  ],
  "visibility": "public",
  "forks": 0,
  "open_issues": 0,
  "watchers": 0,
  "default_branch": "main",
  "temp_clone_token": null,
  "network_count": 0,
  "subscribers_count": 1
}

@Yegorov thanks, you are right


Re-enable UPX on AArch64

Now we have the latest version of UPX we can re-enable executable compression on AArch64.

@willnewton thanks for the PR.
However, the convention we use is not to update meta-resin to anything than a release, so we do this as part of a release PR better.
This PR is superseded by https://github.com/resin-os/resin-artik710/pull/60


Notifications show duplicates in background state

I saw this issue https://github.com/invertase/notifee/issues/690, https://github.com/invertase/notifee/issues/767 and I don't know how to completely solve the above problem when displaying notification from Firebase's setBackgroundMessageHandler. How is this resolved in version 7.0.0+ on notifee?
Before that I was still able to use firebase's onNotificationOpenedApp api and it worked fine.
https://rnfirebase.io/messaging/usage#background--quit-state-messages
My code:
messaging().setBackgroundMessageHandler(
  async (remoteMessage) => await onDisplayNotification(remoteMessage)
);
const onDisplayNotification = async (remoteMessage) => {
  const payload = remoteMessage?.notification;
  const title = payload?.title;
  if (!title) return;

  await notifee.createChannel({
    id: "default",
    name: "ELearning Channel",
    sound: "noti",
    vibration: true,
    importance: AndroidImportance.HIGH,
  });

  await notifee.displayNotification({
    title,
    body: payload?.body ?? "Có một thông báo mới",
    data: remoteMessage?.data,
    android: {
      channelId: "default",
      sound: "noti",
      // importance: AndroidImportance.HIGH,
      category: AndroidCategory.MESSAGE,
      visibility: AndroidVisibility.PUBLIC,
      smallIcon: "notification_icon",
      circularLargeIcon: true,
      largeIcon: 'notification_icon',

      pressAction: {
        launchActivity: "default",
        id: "default",
      },
    },
    ios: {
      // ...
    },
  });
};

Result

@baronha Its happening for me as well but only in iOS. Did you find any solution?

happens in my project too for ios. would appreciate a solution

+1

In my experience, there was a case where I sent a notification object along with data. So one notification was created by Android automatically, and the second was created by setBackgroundMessageHandler. So I switched to data-only notifications.

I found a little hack to make sure duplicates are not sent. It seems work for me, try the following
On your backend server (if you are using one), i'm using c#
`    public async Task SendNotificationAsync(NotificationPayload notificationPayload, string token)
{
var message = new Message()
{
Data = new Dictionary<string, string>()
{
{ "id", Guid.NewGuid().ToString() },
{ "title", notificationPayload.Title },
{ "body", notificationPayload.Body },
},
Token = token,
};
    try
    {
        string response = await FirebaseMessaging.DefaultInstance.SendAsync(message);
        Console.WriteLine("Successfully sent message: " + response);

    }
    catch (Exception ex)
    {
        Console.WriteLine("Error sending message: " + ex.Message);
        throw;
    }
}`

Generate an Id for each notification message, such as `{ "id", Guid.NewGuid().ToString() },`

On your client side (react native),
`messaging().onMessage(async (remoteMessage) => {

if (remoteMessage.data && remoteMessage.data['title']) {
await notifee.displayNotification({
id: remoteMessage.messageId,
title: String(remoteMessage.data['title']),
body: String(remoteMessage.data['body']),
android: {
channelId: '1',
},
});
}
});`
Add id such as id: remoteMessage.messageId,

In my experience, there was a case where I sent a notification object along with data. So one notification was created by Android automatically, and the second was created by setBackgroundMessageHandler. So I switched to data-only notifications.

tried sending data notifications and it works fine for background and foreground states, but cant receive notifications in quit state. How did you manage to make it work when app is closed?


Add an empty constructor

There should be a constructor for the empty set of strings

Thanks for your contribution. This one is also included.


is it possible to install on rpi? its not in package manager, nor does homebrew run on arm

is it possible to install on rpi? its not in package manager, nor does homebrew run on arm

See https://github.com/fastfetch-cli/fastfetch/discussions/1079


Table alignment fails when there are non-latin characters

When there are non-latin characters (eg. é) in an array, align_array_table formatting doesn't work.
Also reproducible with default settings.
only_latin = {
  { 'aaaa', nil },
  { 'e',    nil },
}

with_non_latin = {
  { 'aaaa', nil },
  { 'é', nil }, -- nil should be followed by spaces
}

lua-language-server version: 3.7.0

This is by design, because non-ASCII characters I can't assume how wide they will be rendered on your editor, and in my work environment, non-ASCII characters and general English letters are not the same width, and they simply don't align correctly, so I detect that non-ASCII characters will abandon alignment if there are non-ASCII characters except for end-of-line comments

@CppCXY Thanks for your quick response as always!
What about extending the allowed list of characters from ASCII to UTF-8 Basic Latin (from U+0000 to U+00FF)? I'm pretty sure these characters render the same everywhere.

I need to do a lot of character set work, which C++ naturally lacks, My algorithm also needs to be revised, and my current focus is not on this project, so it will not be updated in such a timely manner

@CppCXY Thanks for your quick response as always!
What about extending the allowed list of characters from ASCII to UTF-8 Basic Latin and Latin-1 Supplement (from U+0000 to U+00FF)? I'm pretty sure these characters render the same everywhere.

but it is rendered as two characters: "¬®", In fact, it is three characters

You can update the latest version from sumneko and then manually update this submodule, I will not release this version for the time being

It took 7-13% more time to implement this feature, and I needed to check if it was necessary

You can update the latest version from sumneko and then manually update this submodule, I will not release this version for the time being

I cloned lua-language-server recursively, updated this submodule (I saw your latest commit in the git log), ran ./make.sh, symlinked the generated bin/lua-language-server to ~/.local/share/nvim/mason/bin/lua-language-server and it behaves the same as before: formatting the snippet I started with in this issue is the same, it is not fixed. Probably I messed up something and its using the old version, I'm not sure.
I'm happy to wait a few weaks until you and sumneko make a new release.

please try https://github.com/CppCXY/lua-language-server/actions/runs/6447382434
I test:


TileMap editor "Delete" shortcut not working

Godot version:
3.0
OS/device including version:
Windows 10
Issue description:
Whenever I attempt the CTRL-D or CTRL-B tilemap hotkeys they fail.
In the case of CTRL-D, the tilemap node is duplicated.
Steps to reproduce:
Open tilemap, attempt to select or duplicate tiles via hotkeys.

Same issue here. My world building time has decreased several times because of this. 🙁

Same issue, apparently only the "Pick Tile" hotkey works.

Another issue that might be related to this is that there seems to be no way to get out of tilemap editing mode. Pressing Q, W, E seems to put you in the respective modes(slect, move, rotate) and the cursor changes, but when you click and drag you just paint tiles.  This happens on 3.0.2 and 3.0.3-rc2 at least.
Let me know if you want me to open a separate issue for this.
Also, the G key is assigned to the paint bucket but also to show grid. Show grid seems to be the action being performed on key press.
Same goes for the Delete key.  If you select some tiles and press Delete you get a popup to delete the selected node(the tilemap) rather than deleting the selected tiles.  This also happens when you select a node, then some file in the file manager and press delete, which has caused me to delete nodes by mistake quite a few times.
I think there's a general issue with shortcuts assigned to more than one action that depend on context to work properly.

Is there an alternative to select, duplicate and move multiple tiles till this gets fixed?

@Omiminpo there is a "Tilemap" drop-down menu in the right part of the top bar when you have a tilemap selected. It has those options.

@noidexe https://snag.gy/Z2mKnw.jpg here's a screen of how it looks for me, I can't find it unless i'm missing something obvious

Still a problem in 3.0.6 even after changing the hot keys from Control+B and Control+D to Alt+B and Alt+D.

After looking around, seems like this is caused by #12505. Maybe the canvas_item_editor changes should be cherrypicked?

CC @groud

Does not work in 3.2 alpha 3 either

Still exists on 3.2.1

@Beliriel Some TileMap editor default shortcuts were changed in 3.2.1, see https://github.com/godotengine/godot/pull/36054.

I want to delete Tiles from Tilesets. Delete doesn't work.

@Beliriel I presume the node deletion dialog is taking over in this case?

Seems fixed in 3.3


AbstractJWKBase Should be an ABC class

Rationale
AbstractJWKBase so far is just a placeholder class that raise not implemented if a method is called in a subclass that doesn't implement, this is exactly why ABC classes in python are for, therefore we should move it that way.
https://github.com/GehirnInc/python-jwt/blob/master/jwt/jwk.py#L53

@yosida95 I would like to work on this issue myself

@sjortiz
Thank you for your suggestion! Your point is correct.
I will wait for your patch on this for a month.


Volatiled disks creates as files for fs_lvm

Description
I'm not sure is it bug or feature, but better to take clear with it.
Volatile disk in fs_lvm creates as file in system datastore.
To Reproduce

Use fs_lvm driver
Create volatiled disk for the VM

Expected behavior
Disk will be created as lvm partition
Details

Affected Component: Storage
Hypervisor: KVM
Version: 5.6.0

Progress Status

[ ] Branch created
[ ] Code committed to development branch
[ ] Testing - QA
[ ] Documentation
[ ] Release notes - resolved issues, compatibility, known issues
[ ] Code committed to upstream release/hotfix branches
[ ] Documentation committed to upstream release/hotfix branches

So is that normal behavior?

It's a normal behavior, volatile disks are created as filesystem images.

We can close this issue if so.

We can leave it opened for tracking purposes. I think it makes sense to improve this, unify the behavior and store also volatile disks on LVM.

merged in master for 5.8


Feature/chunks and multimatch

Introduction
Hello.
In my case, I do often need to do something like that.
  // Load styles
  .sass('resources/assets/sass/client.scss', 'public/assets/client/main.css')
  .sass('resources/assets/sass/support.scss', 'public/assets/client')
  .sass('resources/assets/sass/somethingElse.scss', 'public/assets/client')

  // Load scripts
  .js('resources/assets/js/client/commons.js', 'assets/client/')
  .js('resources/assets/js/client/index.js', 'assets/client/')
  .js('resources/assets/js/client/catalog.js', 'assets/client/')
  .js('resources/assets/js/client/auth.js', 'assets/client/')
  .js('resources/assets/js/client/checkout.js', 'assets/client/')
  .js('resources/assets/js/client/shoppingCart.js', 'assets/client/')
  .js('resources/assets/js/client/product.js', 'assets/client/')
  .js('resources/assets/js/client/feedback.js', 'assets/client/')

And every time when I need to create a new standalone file, I should go into my webpack.mix and refer it according to my workflow.
Now I've prepared a couple of changes.
Features

Add minimatch search pattern to js() and preprocess() (sass, less., etc..) API.
Add node-sass-tilde-importer to handle tilda path with standaloneSass()
Add brand new chunks() method. To handle my chunks in much easier way.

minimatch
Now i can handle all my files from resources/assets/js/client/ with on string -  .js('resources/assets/js/client/*.js', 'assets/client')
node-sass-tilde-importer
That allows me to import vendor libs like @import "~bootstrap/scss/bootstrap" instead of @import "../../../node_modules/bootstrap/scss/bootstrap";
mix.chunks() signature
mix.chunks(
    matchCase: string | RegExp | Array,
    chunkNameOrConfig: string | Object
)

MatchCase will match all of your output js files paths and collect them in a chunk.
chunkNameOrConfig accepts output name(path) or CommonsChunkPlugin config object

Example
Custom chunks
However, sometimes we want to get our reusable code into separate chunks.
For example, we have multiple files that import some code like
import {SomeUtil, AnotherUtil} from '../our-utils';

And we don't wanna store code of every util in every generated file.
Now we can handle this with CommonsChunksPluign like that
mix
    .js('resources/assets/js/client/*.js', 'assets/client')
    .js('resources/assets/js/admin/file-one.js', 'assets/admin')
    .js('resources/assets/js/admin/file-two.js', 'assets/admin')
    .js('resources/assets/js/admin/file-ignored.js', 'assets/admin')
    // Here we collect all files where output path includes - assets/client
    .chunks('assets/client', {
        name: 'assets/client/common',
        minChunks: 2
    })
    // But here we want to collect only file-one and file-two from assets/admin
    .chunks(/^(?!.*ignored).*\\assets\\admin/, { // Backslashes are used in output paths only for Win32
        name: 'assets/admin/common',
        minChunks: 2
    })

Mutiple chunks for admin/client side
It's a common case in my job when I need to build 2 separate apps in one project
Admin Dashboard and ClientSide App. And I also want to extract vendor for both of them.
Now we can do something like that.
const isVendor = (module) => {
    // this assumes your vendor imports exist in the node_modules directory
    return module.context && module.context.indexOf("node_modules") !== -1;
};
mix
.js('resources/assets/js/client/*.js', 'assets/client')
.js('resources/assets/js/admin/*.js', 'assets/admin')
.chunks('assets/client', {
    name: 'assets/client/manifest',
    minChunks: Infinity
  })
  .chunks('assets/admin', {
    name: 'assets/admin/manifest',
    minChunks: Infinity
  })
  .chunks('assets/client', {
    name: 'assets/client/vendor',
    minChunks: isVendor
  })
  .chunks('assets/admin', {
    name: 'assets/admin/vendor',
    minChunks: isVendor
  })
  .chunks('assets/client', {
    name: 'assets/client/commons',
    minChunks: 2
  })
  .chunks('assets/admin', {
    name: 'assets/admin/commons',
    minChunks: 2
  })

Output
         Asset       Size  Chunks                    Chunk Names
      \assets\admin\app2.js    2.79 kB       0  [emitted]         \assets\admin\app2
     \assets\client\app2.js    1.35 kB       2  [emitted]         \assets\client\app2
      \assets\client\app.js    2.54 kB       3  [emitted]         \assets\client\app
       \assets\admin\app.js    2.62 kB       5  [emitted]         \assets\admin\app
     \assets\client\app3.js    1.41 kB       1  [emitted]         \assets\client\app3
    assets/client/vendor.js     467 kB    7, 9  [emitted]  [big]  assets/client/vendor
   assets/client/commons.js     6.1 kB   8, 10  [emitted]         assets/client/commons
     assets/admin/vendor.js     273 kB       9  [emitted]  [big]  assets/admin/vendor
    assets/admin/commons.js    2.29 kB      10  [emitted]         assets/admin/commons
  assets/client/manifest.js    5.91 kB      11  [emitted]         assets/client/manifest
   assets/admin/manifest.js    5.88 kB      12  [emitted]         assets/admin/manifest

Summary
I hope it will solve most of the issues where people have requested this kind of functionality

I'm trying to make the tests run on Windows.
So weird that this workflow works only on *nix systems


I think this is correct?

Attempted to add oredictionary definitions for buffalo meat

Almost correct, just missing the closing parentheses :P


FE BUG: when clicking the copy button in the setup wizard, getting ChunkLoadErrorL Loading chunk 801 failed


[Docs] Revamping the Readme

Hey Kendal, what I am thinking of is updating your Readme for backward-text. In the end it will have Description, GIFs (for demonstration), guidelines to contribiute(if needed). If you want something more lemme know 😉

That should work.
On Fri, 25 Nov 2022, 2:55 pm Atharva Pise, @.***> wrote:

Hey Kendal, what I am thinking of is updating your Readme for
backward-text https://github.com/KendallDoesCoding/backward-text. In
the end it will have Description, GIFs (for demonstration), guidelines to
contribiute(if needed). If you want something more lemme know 😉
—
Reply to this email directly, view it on GitHub
https://github.com/KendallDoesCoding/backward-text/issues/9, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AUGJUTOEARC63KYZICPO5XTWKCAYJANCNFSM6AAAAAASLD24PY
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Hey Kendal, I am so sorry for the huge delay. I have updated your README in this link.
If you like this then I will start a PR

@PiseAtharva - looks good to me. Please create a PR.

Hey Kendal, let me know incase something's off with this PR #18


Avoid getCardinality in RunContainer.toBitmapContainer

SUMMARY
Related to https://github.com/RoaringBitmap/RoaringBitmap/pull/713, RunContainer.getCardinality() dominates CPU time in toBitmapContainer:

We can tally the cardinality as we iterate the runs.
Automated Checks

[x] I have run ./gradlew test and made sure that my PR does not break any unit test.
[x] I have run ./gradlew checkstyleMain or the equivalent and corrected the formatting warnings reported.

I notice that convertToLazyBitmapIfNeeded duplicates this code for specifically this reason, but it could probably call toBitmapContainer now?

Merging.

This will be part of the next release.


Linux and Windows FFI 0.0.3 Have Different Internal Versions

Pact files generated from Windows and from Linux have different Pact metadata using FFI 0.0.3.
In Windows it's 0.1.3:
  "metadata": {
    "pactRust": {
      "version": "0.1.3"
    },
    "pactSpecification": {
      "version": "3.0.0"
    }
  },

On Linux it's 0.1.5:
  "metadata": {
    "pactRust": {
      "version": "0.1.5"
    },
    "pactSpecification": {
      "version": "3.0.0"
    }
  },

We have some integration tests which verify the pact file output and they are passing on Windows but failing on Linux because of the mismatch:
https://github.com/pact-foundation/pact-net/runs/3825949419?check_suite_focus=true#step:8:1905
The version also appears to have gone significantly backwards. It used to be 0.9.x and now it's 0.1.x

That version is the version of the library that wrote the pact file (pact-models). It is concerning that the version is different.
Before the big refactor where the FFI libraries got merged, it would have been the version of the pact matching FFI lib. But it makes sense to set it to the FFI lib version.

Closing as no longer relevant


Some MSSQL strict null check fixes

Going to start poking at getting to enabling strict null checks in the MSSQL extension, this is the first batch. Mostly pretty straightforward although I did uncover some incorrect typings that I fixed up (including some in the published types).
There is a behavior change with having the failed STS requests throw instead of just return undefined - but since the typings currently don't specify undefined as being valid and an error actually occurred it makes sense to me to just pass the error up and let the caller handle it if they choose since that should be the expected behavior.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.002%) to 42.326%

Files with Coverage Reduction
New Missed Lines
%

extensions/machine-learning/src/common/processService.ts
3
77.78%

Totals

Change from base Build<PHONE_NUMBER>:
-0.002%

Covered Lines:
30797

Relevant Lines:
67581

💛  - Coveralls

@aasimkhan30 @alanrenmsft If you get a chance to take a quick look


Passing along a function instead of a context

I'm running into an issue where I need to update a set of contexts dynamically per ping, instead of once when trackPageView is called:
When a website uses something like ajaxify [1], the contexts are not reset when a URL is updated. So, it is sending along incorrect data on subsequent page pings.
My naive solution is to pass along a function to trackPageView, instead of (or alongside) the context param. logPageView() would call the function to generate contexts. heartBeat() would also call this.
Code would look something like this:
function logPageView(customTime, context, contextCallback) {
    var dynamic_context = contextCallback();
    context.push(dynamic_context);
    // later, inside heartBeat()
    logPagePing(pageTitle, context, contextCallback);

}

In regards to ajaxify, contextCallback() could check if the URL had changed, and refresh the context. (I.e., if the URL changes, the function would re-generate the contexts for the new URL).
Wondering a) if this has been discussed before, and/or b) if there is a better way to handle this use case.
Happy to work on a Pull Request given the right direction.
[1] https://github.com/browserstate/ajaxify/blob/master/ajaxify-html5.js

Sounds like a practical solution to me. @yalisassoon, @fblundun thoughts?

This seems good. To be more general, the contextCallback argument could be an array of functions for if you have multiple dynamically updated contexts.

Makes sense. I'd suggest probably a supplementary argument, so that we don't have to check the array contents for strings or functions

(By the way, in the current version of the tracker, if you mutate the contexts array between the page view and a page ping, the changes will be reflected in the event. But the callback solution works in more situations.)

My above approach is actually a bit inflexible. The number of contexts attached to each page ping is always equal to the length of the array of context-generating functions, since there is always exactly one context per function. It's conceivable that you would want the number of contexts generated to be determined dynamically, so maybe we should instead have a single function which can return an arbitrarily long (and possibly empty) array of contexts?
(Or for maximum flexibility we could let people have an array of functions, each of which returns an array of contexts, and then flatMap those contexts. But that might be overcomplicating things.)


Stack overflow when pasting text into find widget

Type: Bug
I accidentally pasted file contents I was moving around into the find widget and noticed it causes a warning notification and a stack overflow error in the developer tools console. Interestingly it complains about an invalid regex when I don't even have the regex option enabled.
Steps to reproduce:

Open the find widget
Disable regex, case matching, and whole world options
Paste text below into the find widget
Notice error in developer tools window "ERR Invalid regular expression: ..."
Press escape to close the find widget
Open the find widget
Notice the warning notification

It can be a little hit or miss. Usually adding more lines of text causes it to happen more reliably.
Text to paste
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Full error text:
Invalid regular expression: /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/gimu: Stack overflow: SyntaxError: Invalid regular expression: /xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/gimu: Stack overflow
    at RegExp.exec (<anonymous>)
    at u.next (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:124:1937)
    at g.b (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:123:51)
    at g.findMatches (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:122:1150)
    at ke (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:732:122)
    at Array.map (<anonymous>)
    at W.findMatches (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:732:182)
    at h.y (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:744:88732)
    at h.n (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:744:84823)
    at h.k (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:744:84452)
    at u.value (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:744:84015)
    at f.y (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:87:1902)
    at f.z (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:87:1972)
    at f.fire (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:87:2188)
    at C.change (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:744:96013)
    at u.value (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:746:1308)
    at f.y (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:87:1902)
    at f.fire (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:87:2119)
    at u.Y (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:245:31526)
    at HTMLTextAreaElement.<anonymous> (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:245:27121)
    at Object.implementation (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:681:60557)
    at s.runCommand (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:681:2782)
    at handler (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:681:2042)
    at g.invokeFunction (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:640:326)
    at y.n (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:1537:12423)
    at y.executeCommand (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:1537:12011)
    at W.L (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:644:14254)
    at W.I (vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:644:11953)
    at vscode-file://vscode-app/c:/Users/abyrd/AppData/Local/Programs/Microsoft%20VS%20Code%20Insiders/resources/app/out/vs/workbench/workbench.desktop.main.js:2376:90613

Warning notification

VS Code version: Code - Insiders 1.84.0-insider (35419fc016b8d3d5dbc59aa11a0be957b0897309, 2023-10-27T10:41:08.734Z)
OS version: Windows_NT x64 10.0.19045
Modes:

System Info

Item
Value

CPUs
AMD Ryzen Threadripper PRO 3945WX 12-Cores      (24 x 3993)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
undefined

Memory (System)
63.86GB (22.74GB free)

Process Argv
--crash-reporter-id 2860e056-a3df-4573-a10a-18ca229997c6

Screen Reader
no

VM
0%

Extensions: none
A/B Experiments
vsliv695:30137379
vsins829:30139715
vsliv368cf:30146710
vsreu685:30147344
python383:30185418
vspor879:30202332
vspor708:30202333
vspor363:30204092
vstes627:30244334
vslsvsres303:30308271
pythontb:30258533
pythonptprofiler:30281269
vshan820:30294714
vscod805cf:30301675
bridge0708:30335490
bridge0723:30353136
vsaa593:30376534
pythonvs932:30404738
py29gd2263:30784851
vscaat:30438846
vsclangdf:30492506
c4g48928:30535728
dsvsc012:30540252
pynewext54:30618038
a9j8j154:30646983
showlangstatbar:30737417
ecj1e332:30687743
pythonfmttext:30716741
fixshowwlkth:30771523
showindicator:30805243
pythongtdpath:30726887
i26e3531:30792625
welcomedialog:30812478
pythonnosmt12:30779711
pythonidxpt:30768918
pythonnoceb:30776497
copilotsettingt:30808721
dsvsc013:30777762
dsvsc014:30777825
pythonmpsinfo:30859869
dsvsc015:30821418
pythontestfixt:30866404
pythonregdiag2cf:30871583
pyreplss1:30865275
pythonmypyd1:30859725
pythoncet0:30859736
pythontbext0:30864172
accentitlementst:30870582

duplicate of https://github.com/microsoft/vscode/issues/183388


[Question] Custom WWW-Authenticate header to suppress browser auth dialog?

I wonder if the WWW-Authenticate header is overridden for 401 responses by this package. I am trying to remove/change this header using a middleware to suppress browsers' auth dialog but it keeps resulting in Basic realm="api" .
I saw in the documentation that the first item of AUTH_HEADER_TYPES will be set as the WWW-Authenticate type if authentication fails, but I cannot receive a value of Bearer despite having it set as the value of AUTH_HEADER_TYPES.
Is it something to do with this package? If so, how can I alter the header specified?
Thank you.

@yeahlowflicker this project does not use middlewares since DRF doesn't include them (I think).

@Andrew-Chen-Wang  I see, thank you.


TourGuideStep's beforeEnter event exits tour if Promise is not resolved when the Promise's function finishes

While using the beforeEnter event in a TourGuideStep, the tour will exit if the promise is not resolved before the Promise's function finishes executing. The backdrop is removed and users can interact with the page. Once the Promise is resolved, the tour starts up again at that step, and the backdrop comes back.
For example:
beforeEnter() {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {  resolve(); }, 10000);
        //the tour exits until the Promise is resolved
    });
}

I would expect the tour to not exit and instead wait for the promise to resolve. In this case, it should continue to show the backdrop while waiting. If the user clicks anywhere during the wait, the tour should exit and not start up again once the Promise is resolved.
I am using TourGuideJs v0.0.10 in Chrome.

Hi @jmanos, thanks for raising the issue. I have just released 0.0.11 to NPM which should address the problem. Re-open the issue if the problem persists. Thanks


Request for Search Debugger Configuration and Compatibility

I recently watched a video on YouTube showcasing the capabilities of the Search Debugger tool, and I am impressed by its potential. Could you please provide a detailed document or guide on how to configure and effectively use the Search Debugger?
Additionally, I have attempted to use the Search Debugger with solver.planning.domains multiple times, but it appears to be incompatible. Does Search Debugger support this solver? If not, could you recommend an alternative planner that is compatible with the Search Debugger function?

Last I recall, none of the publically available planners have implemented the necessary hooks required to make use of the search debugger functionality. The standard is open (@jan-dolejsi can point you to it), but would require planner developers to implement the spec. And, no, the online solver doesn't implement this either.


fix: nix package dependencies

The current hm-modules.nix files won't work on raw NixOS filesystems, because git is missing during build phase - and krew depends on it (and for some reason, default package doesn't provide it). This PR adds it, and ensures it will be available during activation.

This works great for me on NixOS 24.05.

LGTM. I appreciate it guys 🚀


optional ignoring errors by module

Introduce optional ignoring
Readme section
Add OTP 19 for testing
Bump version

I am 👎 on this. This implementation makes things very magical: when I call Rollbax.report/3-5, I now have no idea if this is going to be reported unless I look at the :rollbax config.
The only reporting to Rollbar that happens automatically "behind the scenes" in Rollbax is when Rollbax.Logger is used. Since this PR doesn't deal with that, but only with manual reporting in Rollbax.report/3-5, I don't see what it adds over checking for these exceptions yourself, in your app. Since you're changing Rollbax.report/3-5, I assume somewhere in your app there's a call to Rollbax.report/3-5: I feel that's where this logic belongs:
# config/config.exs
config :my_app, rollbax_skip_exceptions: [Phoenix.NoRouteError]

# web/wherever.ex
def handle_exceptions(exception) do
  unless exception.__struct__ in Application.get_env(:my_app, :rollbax_skip_exceptions, []) do
      Rollbax.report(:error, exception, System.stacktrace())
  end
end

Wdyt?

Up to you. My approach is to stick with ideas of rollbar-gem where boilerplate code is inside the package and config is used instead.
I will continue with my fork. No need to merge this.

I agree on limiting boilerplate code, but not really when it's a very very little amount of code that would make the package a bit more magic :). We can hear @lexmag's opinion as well but I remember discussing this and we pretty much agreed on what I said here 😕


chore: fix repository in package.json

Fix the repository handling in package.json based on the official doc page: https://docs.npmjs.com/cli/v6/configuring-npm/package-json#repository
Add the homepage link to the repository based on https://docs.npmjs.com/cli/v6/configuring-npm/package-json#homepage

Note to the maintainers: you can change the Fork pull request workflows from outside collaborators setting here https://github.com/unjs/defu/settings/actions
from Require approval for first-time contributors to Require approval for first-time contributors who are new to GitHub, to skip the requirement to approve the run for the GH action to non-new GH users.

Thanks for PR @navarroaxel. But as you can spot in the linked docs, shortcut syntax is also supported and I prefer smaller package.json to be shipped:

Thanks for PR @navarroaxel. But as you can spot in the linked docs, shortcut syntax is also supported and I prefer smaller package.json to be shipped:

@pi0 then why the repository link is not listed in the npm page for this page? :thinking:

Maybe the homepage link is required to display the repository link. I always see both links.

I'm aware. Sadly this is a recent UI change that stopped npm from showing using shorthand syntax. And wasn't requiring homepage either. Let me do a quick research if it is an intentional change by npm and if it is, we need to update dozens of unjs repos at least :}

Hi @navarroaxel. I think finally npm folks resolved the issue to show homepage with repository shorthand field. It fixed after recent npm publish.
BTW thanks for caring to make this <3


BEANUTILS-497: Fix javadoc doclint errors

Finally after a ton of changes the build is successful. I double checked all my changes in Javadoc but it would be good if someone would also give a +1.
Build command: mvn clean javadoc:javadoc -DadditionalJOption=-Xdoclint:all

Thanks alot! I'll use this in the site for the 1.9.3 release. I've added you as a contributor in the pom.xml, hope that's OK.


Added missing modelfile.csv after the previous PR

This file somehow got missed in the last PR and the flow broke. For some reason, I had to manually add this file rather from command line since git doesn't recognise this file changes.

Thanks @saicharan0112 !
@joamatab There were a few things that broke after the last PR (generators folders renamed and missing files). Maybe the model file formatting?

Hi Mehdi,
Following standard python packaging all packages that you want to ship with the openfasoc module should be inside the openfasoc module
this includes the generators folder

Thanks @joamatab - I think in your last commit the generators folder was renamed openfasoc. Is that what you meant here?
There is also a top directory called openfasoc. So I just renamed back to generators since the sensors were failing. Not sure if this is what you meant?

you can keep the generator folder name,
but i would move it inside the python package
This is what I would do,
https://github.com/idea-fasoc/OpenFASOC/pull/45
let me know what you think
Joaquin


Replace scipy_stats.t.ppf with native pytorch function (get_t_and_critical_t)

Currently our entire codebase is working based on pytorch - except for this one little function (scipy_stats.t.ppf).
Which exists only in scipy and the entire world is working based on >30 year old C Code so noone needs to implement it again. But we wanna run it on the gpu.
So we should either do a nice fake-implementation like amazon did it in their gluonts project. Or we just implement it properly in pytorch.

We decided to leave it as it does not take as long as we thought.


How to Install

Hi, I'm extremely new to Github and have no idea what to do but i really want to Use Your Anime Downloader... Only problem is i, as mentioned before, have no idea So i was wondering if you could give me a detailed walk through or a short video of how to install it and if i'll need anything specific To install it , if it's not too much hassle.

Detailed installation information is given here. If you have any questions, fell free to ask here.

@Jtgroos That would be nice of you. If you do, I'll make sure that I link it in the docs.

@Jtgroos @vn-ki Has this video been made? Im not as tech smart as I used to feel and im not sure if ive installed correctly. while using diff providers I often get "no connection adapters found". Makin me feel real old, so figured id make an account here and see if I can get some guidance


Simpler version

Hi, thanks for the boilerplate!
I was wondering since I'm recently starting with React and I'm not using Redux for the current project, how could I get a simpler boilerplate?
I'm talking specifically about all the actions, containers, etc. (Sadly AppRouter and App are entangled in there with other containers)
Also, why two entry points for webpack? I'm trying to understand why do I need both Client and Server entry points for just a Cordova app. Do I need both of them just for a simple app?

You can strip the boilerplate a bit by yourself at anytime, it's quiet simple once you understand Webpack, though at the start I remember how much pain it was.
I did a server entry because I wanted to make sure the app also runs in the server, which also gives me the loading page (the one with the logo) before the execution of the scripts.
Multiple entry points also helped me determine which code can only run in the browser, and this is important, if you want to convert your project to react-native while only refactoring some views.
Anything else?

Actually, thank you for the explanation. Webpack is completely inhuman at the start, I agree, so I appreciate the time to explain.
Cheers!

@sebastialonso Sure :smile:


turkingwang pull show-me-the-code

trying to solve those problems.

trying to solve those problems

@Turkingwang  提交到这里吧： https://github.com/Show-Me-the-Code/python

@Yixiaohan 已经提交了，请审核


Crop

Hello! Thanks for your hard work.
A common workflow is to crop black borders from video.  dovi_tool supports this with a --crop switch. Is there such a thing with this tool? Or some other automated way to "crop" the metadata? Or is this not necessary with HDR10+?

There's nothing to adjust for HDR10+, it's resolution/aspect ratio agnostic.

@quietvoid  - Thanks for that clarification. If I understand correctly, HDR10+ can support spatial windows within the frame, do you know how these are defined?

They are defined in the ProcessingWindow struct, in the hdr10plus crate.
Also, they are not supported in version 1 of the HDR10+ spec, which is all of the available content today.
While they are parsed according to spec, the JSON metadata does not include the processing windows.


feat: add session key permissions builder for session key plugin

Pull Request Checklist

[ ] Did you add new tests and confirm existing tests pass? (yarn test)
[ ] Did you update relevant docs? (docs are found in the site folder, and guidelines for updating/adding docs can be found in the contribution guide)
[ ] Do your commits follow the Conventional Commits standard?
[ ] Does your PR title also follow the Conventional Commits standard?
[ ] If you have a breaking change, is it correctly reflected in your commit message? (e.g. feat!: breaking change)
[ ] Did you run lint (yarn lint:check) and fix any issues? (yarn lint:write)
[ ] Did you follow the contribution guidelines?

PR-Codex overview
Focus of the PR:
The focus of this PR is to add a new class SessionKeyPermissionsBuilder in the accounts package. This class allows building and encoding session key permission updates.
Detailed summary:

Added SessionKeyPermissionsBuilder class in accounts/src/msca/plugins/session-key/permissions.ts.
Added SessionKeyPermissionsUpdatesAbi array in accounts/src/msca/plugins/session-key/SessionKeyPermissionsUpdatesAbi.ts.
Added enums, types, and interfaces related to session key permissions.
Implemented methods in SessionKeyPermissionsBuilder to set contract access control type, add contract address access entry, add contract function access entry, set time range, set native token spend limit, add ERC20 token spend limit, set gas spend limit, and set required paymaster.
Implemented encode method in SessionKeyPermissionsBuilder to encode the session key permission updates.
Added utility methods in SessionKeyPermissionsBuilder to encode values if they are defined.

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

how is the SessionKeyPermissionsBuilder going to be used? By the sdk only or the devs too? Do devs now also have a burden create Session Key Permission by themselves? or will the SessionKeySigner MSCA account will abstract out the permissions under the hood exposing certain permission related APIs?

It can be used by devs as well like any other aspect of the SDK and should be able to be done. If we want to add abstractions we can, but at some point a dev needs to understand how session key perms are modeled.
This builder is meant to be the core interface for this and its job is to be the lowest level interface for mapping to the plugin definition for session key perms


Flag to avoid builtin multicast [6450]

This PR addresses ros2/rmw_fastrtps#315 by allowing the user to disable multicast traffic for builtin endpoints.

Not waiting for Mac, as we will do more testing later


improve description text styling and presentation

Fine tuning for worskspaces homepage
Changes
Please list / describe the changes in the codebase for the reviewer(s).

Add block content
Add edit button

How/what to test
A few words about what needs to be tested, along with specific testing instructions if needed.
Screenshots / screencast

I close this PR as the layout of the page already changed in another branch


Automation for Cookbook repos

We frequently have a need to push identical (or very similar) changes out simultaneously to all Cookbook source repos. One example is changing the URL for the binder link in the _config.yml in each repo as discussed in #85
Currently we have no better option than manually edit and opening identical PRs in each repo.
Two possible alternatives for keeping the infrastructure updated across all repos:

Some kind of bot service (like dependabot) that can automatically open PRs across all repos (e.g. when we make a change in the template repo). This still requires people to inspect and approve the PRs for each repo, but would speed things up and help ensure consistency while still allowing individual Cookbook authors to customize their own infrastructure as necessary
Migrating more of the Cookbook infrastructure out of individual repos and into some centralized repository. For example, instead of hard-coding the Binder URL in each repo's _config.yml, there could be a lookup step. This would mean only opening a single PR to change any of the centralized infrastructure across all Cookbooks.

Labeling this medium priority for now, but this will become high priority as gallery grows.

Parallel discussion happening in this discourse post
@ahuang11 suggested actions-template-sync as a possible solution. Looks promising!

Noting here that I experimented a bit with actions-template-sync in a few different repos (see e.g. this workflow in the XGCM Cookbook and this example PR generated by the workflow).
My conclusion for now is that this is not the right tool for us.
The basic reason is that there are too many merge conflicts between an individual cookbook repo and the template repo -- like any line of code in the template where a generic line like
title: Project Pythia Cookbook Template

is replaced with a more meaningful line.
actions-template-sync by default uses a merge strategy that favors the template in any merge conflict situation.
The result (as can be seen in this example) is a PR that tries to replace a lot of useful content in the cookbook with generic boilerplate from the template -- not what we want!
I played around with different git merge strategy flags but wasn't able to get anything working that applies an intelligent auto-merge-conflict resolution.

Of course it is possible to use actions-template-sync to auto-generate a PR, and then manually push changes to that PR before merging. But that seems like more trouble than it's worth.


[RFC] Deserialize request bodies to byte string, not text string (fixes #163).

If you like this fix, please DO NOT MERGE IT yet!! There is unfinished business in my refactoring of vcr.serializers.compat: I refactored convert_body_to_bytes() to be cleaner and simpler, but left convert_body_to_unicode() as-is. I don't need it for this fix, and didn't want to waste time on it in case you reject this PR.
But if you do like this approach, I should finish the refactoring that I started. So please let me know!

Can you check some round tripping of different encodings? Eg if I post something as UTF16

closes #163.
I'll Second what @graingert . I'd generally like to see a bit more testing. This is tricky business.
@kevin1024 Not sure I get the intention behind the original behavior of this function, can you clarify?

I think on serialising vcrpy should decode body bytes using utf8+surrogateescape. This will need a backported implementation for python 2

The commit I just pushed should fix the tests I inadvertently broke. This has nothing to do with @graingert's and @IvanMalison's comments: I'll try to get to them later.

Oh yeah forgot to mention: commit 99770a7 means the refactoring in 778c8bd wasn't necessary after all. However, I still think it's a nice cleanup. But if you want to see a new PR that ditches the refactoring and focuses only on the bug, let me know.

@graingert said:

I think on serialising vcrpy should decode body bytes using utf8+surrogateescape. This will need a backported implementation for python 2

It's unclear if you're asking me to add this as part of this bug fix, or this is a general "we should do this" comment.

New pull request coming with smaller patch, no refactoring required, and more extensive tests.


chore: update docs: link people to anime-dl/anime-downloader (#718)

Closes #718

is there a reason for using a custom hash position rather than letting the title be used instead?

code of conduct is an illusion

I don't think any of us follow that scheme here.

Fix those two issues and I'll merge.

I don't think any of us follow that scheme here.
For commit messages you should try to briefly describe the changes/fixes you did.

Fair enough, I wanted to introduce a template that could be edited per needs

code of conduct is an illusion
LOL
I guess you meant to add one but forgot to?

There ya go -- removed CoC for now, I'll add it in later when I get a feel for how this project treats different actions (as opposed to pulling from a template)

Looks good to go.


Skip through Track by Clicking Anywhere in Playbar

In the default Bandcamp player, to skip forward the playhead must be targeted with the mouse and dragged.
This feature would add youtube like scrubbing:

when user clicks anywhere on the audio timeline of the playing track, the playhead jumps to this location

when i'm scrolling through a lot of music, the requirement to be precise when selecting the playhead is really annoying.

@emcniece this one is really important to me. I'll need some help learning to intercept existing events to learn how seaking in with the playbar works.
This definitely links to https://github.com/sabjorn/BandcampEnhancementSuite/issues/19
and probably we'd want to build our own controller for the player so we can do all sorts of complex new interfaces.

ready in #50


Control facet(row/col) description

Is there any way to control the description of facets? For the moment the convention
facet_name=facet_variable is used. Is there any way to change this pattern to something else? e.g. facet_name:facet_variable

Moreover how we access the properties of this label (e.g. the font size).
Thank you very much. px is an awesome tool and facets are real game changers
Cheers

This is what I've been looking for this exact moment! +1

These are stored as annotations in the resulting figure, and they can be edited after-the-fact in a reasonably easy way, as shown here: https://stackoverflow.com/questions/57202123/editing-facet-headings-on-a-plotly-chart/57207465#57207465

I should note that plotly 4.2 will support .for_each_annotation() just like .for_each_trace() so this will be even more compact soon :)

Exactly what I needed. Thanks a lot! (And sorry for not finding it on stackoverflow).

Thank you @nicolaskruchten ! That's great.

 Stack Overflow upvotes are always appreciated ;P I'm slowly working my way up to a bronze plotly tag badge 🥉

My reputation is too low so my vote won't show :(
Maybe also add a reference to the manual about this. It's quite useful.
Cheers


Execution of contract initialization code

Ports https://github.com/runtimeverification/evm-semantics/pull/2020 to this repo

This should be merged after: https://github.com/runtimeverification/kontrol/pull/63 (and merge conflicts resolved).


Set content-type on YML Files

I recently ran into an issue when attempting to download one of the CloudFormation YAML templates provided in the release via Terraform which is caused by not setting the content-type to text/yaml on the files stored in S3.
Currently the files return application/octet-stream which causes the http datasource in Terraform to report failure as it only allows text/* and application/json.
This PR sets the content type to text/yaml during the upload of the file which happens in a Buildkite step.

thanks!


feat: add possibility to send msg to thread

Add possibility to send msg to thread

@aknysh @osterman @goruha @EladDolev Hi guys! Can you please review PR and make a new release with it?


luci-statistics: rework cpu and memory graph definitions

Simplify CPU and memory definitions, make them FreeBSD compatible
Signed-off-by: Istvan S Sz<EMAIL_ADDRESS>

What do you mean by "FreeBSD compatible" ?
LuCI is just for OpenWrt, which is not FreeBSD.

I am using luci-statistics to collect and display telemetry of very different devices - some running Linux, some running FreeBSD. CPU and memory graphs from FreeBSD devices are not parsed by luci-statistics without this patch because of different nomenclature used by the OS.

Is openwrt still parsed after this patch? If so I think it would be okay to merge.

Welp, in my naïve view, this looks acceptable.
I like the code reduction. Just needs verifying on openwrt :)

@jow-
Any opinion on this?

If it is confirmed to still work normally with/for OpenWrt then I'm fine with merging it.

I tested this.
Works fine but the order of fields has changed (probably due to the use of a dictionary or however hash-maps are called in JS)
But I like the code reduction too.
Before:

After:

OK, I'm satisfied with that.

Based on the screenshots, the display order changes are really bad.
The current orders are based on "system level interrupts" / "used" at bottom, and then having more userland/optional/cached items gradually , and "free" at the top.
The proposed change completely destroys that logic, as it appears to show them in alphabetically sorted :-(    E.g. that memory graph is crazy, as free mem is in the middle.

Does not bother me one bit. Everything is colour coded. Alphabetical order is logical for even a school child.
Have you a suggestion to fix ordering in JS?

Have you a suggestion to fix ordering in JS?

The current status ;-)

@systemcrash Please write the next time why you decided to close this.

Sure: @hnyman (I think) already committed changes which break this update without further changes to the PR and the original committer does not show signs of updating it, where the original intention was incidental ("add this if it's useful"). We can reopen this @hippi-viking should you decide to update this.