[Proposal] Allow adding members to orphaned spaces using an n-key-system

There are cases when a the all space-manages of a space are unable to perform their management duties on said space (e.g. death, left company, etc).
In those cases the administrators of the instance need a way to add a new manager to the affected space. To prevent a malicious actor to grant those privileges to somebody without verification we propose to have an n-key-system, meaning that those actions need a defined number of votes to go into effect.
Example:
We have an orphaned spaces, usually it would fall into the responsibility of the instance admins to grant space-manager privileges to another trusted person. To avoid abuse this must not be done by only a single administrator. So the request for promoting a trusted person to space-manager for the orphaned space is created by a instance admin. n-administrators need to approve this request for the trusted person to become the new space manager.
Technical proposal:

n-Users (n>1) are defined as voters for promtion requests in case of orphaned spaces
Admin A creates the request to promote User B to space-manager
an event is emmited which creates a modal in the user interface of the previously defined voters
if m voters (m is a configurable quorum of voters) approve the request, User B is promoted to space admin for the orphaned spaces
votes need to be logged into the audit service

/cc @kobergj @mmattel @micbar

What about granting this privilege to the sysadmin? The sysadmin can read files anyway. In big organizations the Admin user (who can't read content of a space and can't manage members if not a member themselves) is usually not also a sysadmin, for a good reason. But there always is a sysadmin. I'd suggest implementing a CLI command to solve this particular issue.

@kulmann
I am curious because a sysadmin would need to authenticate himself via a CLI command for security reasons. That would require also a new role. If no authentication is defined, I wonder how to prevent misuse of an completely open command line tool if you get shell access. Maybe I do not see the full picture.
On the other hand side, using a voting system as proposed minimizes the risk of misuse as all steps are logged. That alone is a big prevention as it involves n>1 users. Beside the technical view, such a capability is a sales driver/differenciator.

I see even bigger potential for misuse in such a voting system. Imagine a teacher peer-pressuring students into voting for him getting access to a space. Sounds more likely to me than getting shell access in the first place.
The voting system leaves me with the impression of being overengineered for a problem that we don’t have yet. Introducing a permission and giving that to a special role is far easier. Then you don’t even need to do that via CLI.

Like I said, file system access would grant all the rights to fiddle with everything at the moment. So an unprotected CLI command would be no risk increase compared to now, or am I missing something? Doesn’t make it good of course…

I see even bigger potential for misuse in such a voting system. Imagine a teacher peer-pressuring students into voting for him getting access to a space. Sounds more likely to me than getting shell access in the first place.
The voting system leaves me with the impression of being overengineered for a problem that we don’t have yet. Introducing a permission and giving that to a special role is far easier. Then you don’t even need to do that via CLI.

You have the same problem with your option, the teacher would simply ask the admin to grant him access, would probably be easier then manipulating students. The risk you are sketching here is more an administrative problem, you have to pick your voters wisely.... In the scenario of a school/university/etc. you would restrict your voters to members of the faculty to avoid abuse by a single malicious actor. Which is the whole purpose of the proposal.

The sysadmin can read files anyway.

This is not correct. One can use security measures (eg. encrypting discs) to avoid giving the sysadmin access to all files.

Imagine a teacher peer-pressuring students into voting for him getting access to a space.

Students should not be made voters. Voter should be high level representatives of the organization (ceos, presidents,  prime ministers, starship captains, ...) If one can "peer-pressure" one of these persons the organization has bigger problems than orphan files

I fully agree with that. But now again, someone needs to make the respective users the CEO / president / starship captain / ... and who defines the number of votes necessary for taking over an orphaned space? I guess that is likely someone who is sysadmin anyway.

Not necessarily. But a sysadmin could probably change the values if they are just defined by envvars. We would need to protect changing them also. Probably with an n-key-system.  Which leads to:

I still get the feeling that the voting system is over-engineered.

You are probably right. But such a system could maybe reused for other sensitive configuration values.

What do you guys think about a permission for space membership management in combination with full audit log of space membership modifications and a notification about space membership modifications to all managers of the space (relevant for the evil case of someone sneaking into a space that doesn't match your "orphaned" criteria)?

The audit measures are anyways necessary, no matter which way we choose. But I don't feel very good having one user who can add members to all spaces at any time. Imo there needs to be some sort of verification beforehand. We could have a user role that can add managers to orphaned spaces. But then again an admin could give itself this role too sneak into an orphaned space.

Users running into this issue now: https://github.com/owncloud/ocis/issues/7265

This is just security theater.
If you dont trust your sysadmins, you have bigger issues at hand than lost spaces.
Arbitrary restrictions wont prevent any abuse.
On the other hand: such a design possibly makes the software ineligible to use in bigger companies, as security audits become infeasible or impossible.

I'm sorry but I strongly disagree with everything you say.

This is just security theater.
If you dont trust your sysadmins, you have bigger issues at hand than lost spaces.

One of the most common misconceptions in software security. No, you do not NEED to trust your sysadmins. Yes, you CAN write software that is even secure with malicious admins. Malicious admins are (besides social engineering) one of the biggest threads for software applications.  I strongly believe one should not give to much power to one person, as it will be abused sooner or later.

Arbitrary restrictions wont prevent any abuse.

This seems to be more of a philosophical statement. But in this special case I don't see this as an "arbitrary restriction". It is precisely tailored to our needs.

On the other hand: such a design possibly makes the software ineligible to use in bigger companies, as security audits become infeasible or impossible.

You couldn't be more wrong. Security audits will be much easier because you can see which users voted which user to become the new space manager. So if this feature is missused you see exactly who was involved.
And btw: security audits are only the snakeoil you use to avoid having to do real security. :wink:

You need to state further axioms or assumptions, but your statement is objectively wrong in general.
Ranging from family+friends setups, (atechnical) teams/groups, small to big companies and even universities, users will absolutely have to trust their sysadmins. Either because of social standing or because of policy. This will always enable the possibility of abuse and you need policy and social norms to deal with that. That goes far beyond what any software can do.
If there is no policy and/or no means to make sure the policy is upheld abusive sysadmins have to be regarded as omnipotent attackers, who can ignore legal frameworks, will always have plausible deniability, can push arbitrary policies onto users, can severely limit the users and can prevent users from establishing external trust-anchors.
From an external POV the servers, the network and the client devices are to be viewed as compromised.
Not sure how you think that it is possible to deploy a piece of software into such an environment that can prevent the omnipotent attacker from breaking security (in the commonly understood terms) of said software, because general consensus seems to be that there is no technical way to do this.
Or put in the philosophical way: There cannot be a technical solution to a social issue.
I can only think of very few very niche use cases where the users dont need to trust their sysadmins and usually these systems are not intended (and are suboptimal) for internal use, but mostly for providing a service to the general public.
Lets break this proposal:
n-Users (n>1) are defined as voters for promtion requests in case of orphaned spaces and m is a configurable quorum of voters
Who defines who the users are? Can an admin create 10 users and define these as the only eligible voters and set the quorum to 10?

If yes: why even bother?
If no:

Who can? Having to vote on every setting change is getting nowhere and basically has the same issues as voting for space managers.
How to ensure that quorum will ever be reached?

And in a timely manner?

How to prevent random or disgruntled users from holding the data hostage/ransom?
How to ensure that sensitive information is not disclosed by revealing the space name and the to be added username to less trusted accounts? Disclosing this info to everyone seems like a big security and privacy issue to me.
How can sibyl attacks be prevented?
How can an omnipotent attacker (sysadmin; see above) be stopped by this? Think of injection of javascript into the page that asks for a vote form the haproxy or nginx serving the vote page and/or intercepting the xhr request or getting the user credentials, or the sysadmin taking a snapshot of the file-system staring a vote and in the case of it failing, rolls back the snapshot and retrying ... you cant even prevent the sysadmin from tampering audit logs...
How can this hold up with legal basics? A court requesting access to all of the files uploaded (even for files uploaded in the future) by some user is a thing. Having the sysadmins to make a vote for every relevant space where the user is a member of will really likely be seen as obstructing justice, as it will warn/tip off the user and possible accomplices. Also disclosing the reason alone can be an issue. Involving space managers wont work either. These are top-down processes that cant be democratized.

Also this proposal tries to fix only a tiny portion of permission issues of spaces and for example doesnt take into consideration the administrative demotion and removal of users and groups from spaces.
I stand by my previous claim: it is security theater not solving issues, but only introducing new issues.

On the other hand: such a design possibly makes the software ineligible to use in bigger companies, as security audits become infeasible or impossible.

You couldn't be more wrong. Security audits will be much easier because you can see which users voted which user to become the new space manager. So if this feature is missused you see exactly who was involved.

Nothing prevents you to log admins grating themselves space manager rights, without all the other stuff. Disclosing who voted (and therefore disclosing who did not) in the audit log seems problematic too. Is the auditlog public or not? If not: who, but the malicious admin will ever see it?
Also software wanting to influence internal policies and hinder compliance as directed by law for no good reason is definitely a no-go for audits. :)
This "feature" is the reason why we will no longer consider ocis as a candidate for the replacement of owncloud for our 30k+ people institution as it weakens our internal policies and/or prevents us from doing our work.

I'm sorry but I strongly disagree with everything you say. [...]
You couldn't be more wrong. [...]

Since you seem to want to get personal: For more than 10 years I have been part of an academic hacking team ranking consistently first or second in their country and in the top worldwide on ctftime, worked in cyber-security relevant fields and was teaching cyber-security at university. Whats your expertise? ;)

[...] to avoid having to do real security. 😉

Thats a ... "strong" statement after defending this "feature" ...

@someone-somenet-org first of all: Sorry for overexaggerating in my response. I never meant to offend you personally nor question your expertise. I do 100% respect you and your opinion. Please accept my apologies, I really have no hard feelings against you.
Please also note that this feature is just a proposal. Until now there is no intend to implement it.

abusive sysadmins have to be regarded as omnipotent attackers

I'm not 100% convinced a sys admin always needs to be a omnipotent user. You could hypothetically have several permissions sets like system-configurator, log-reader, voter, audit-log-overseer. These roles could all be assigned to the same user (in case of a simple family/friends setup) or to multiple users in case of a big installation. A user with only one of these roles can not do as much damage as a user with all of the roles. Therefore you could use this to increase your security.

There cannot be a technical solution to a social issue.

I 100% agree. You can only have a secure system if your users do know how to behave securely.  There is no away around processes for deployment and configuration. After all a sysadmin could just install a completely different build from his personal fork. But with features like this you could give your users some extra tools to stay on the right path.

If yes: why even bother?

Maybe to take work from the sysadmins? If users can self-repair their space without the sysadmin having to do something that is a win I would say.

If no:
Who defines who the users are?

Good question. Also Who defines how many users there are? is a valid question. But even if sysadmins can do this (as a first iteration) they would still only have to do this once and then they cannot add themselves later.

How can this hold up with legal basics? A court requesting access to all of the files uploaded (even for files uploaded in the future) by some user is a thing.

Interesting question. I didn't think about that. What if I would store all files encrypted and store the key at the user somehow? I could not give the data out even if I wanted to. Wouldn't it be a similar case here? If I can't access the data I cannot give it to the court?

How to prevent random or disgruntled users from holding the data hostage/ransom?

Also interesting question. I would say you cannot. It is their data. They can do with it whatever they want?

How to ensure that sensitive information is not disclosed by revealing the space name and the to be added username to less trusted accounts? Disclosing this info to everyone seems like a big security and privacy issue to me.

Yes we need to avoid that :+1:

This "feature" is the reason why we will no longer consider ocis as a candidate for the replacement of owncloud for our 30k+ people institution as it weakens our internal policies and/or prevents us from doing our work.

It should not! This feature is a proposal that is NOT on any roadmap. If and when it will be implemented is unclear. And even if it is implemented there will be a simple option for installation that don't want to bother with it. (e.g. n=1).

Since you seem to want to get personal:

was never my intend.  Sorry again

[...] to avoid having to do real security. 😉

Thats a ... "strong" statement after defending this "feature" ...

was just a joke. I do understand the need of having security audits. They are just used way to often as an excuse for accepting security flaws.


#225 add link highlighting

Fixes:  #225
Description
Implemented Intersection Observer to detect which section is currently visible in the viewport.
Automatically applies an "active" class to the corresponding navbar link when a section is in view, allowing the user to see which part of the page they are on.

Type of PR

[x] Feature enhancement

Screenshots / videos (if applicable)

Checklist:

[x] I have made this change from my own.
[x] My code follows the style guidelines of this project.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generate no new warnings.
[x] I have tested the changes thoroughly before submitting this pull request.
[x] I have provided relevant issue numbers and screenshots after making the changes.

Could you please give level2 or level3 for this as it required some coding

@Nimrat0199 Please see the conflicts highlighted in the image above. Resolve the conflicts in the mentioned files. Ensure you pull all the latest changes before pushing your feature/bug fixes to the main branch. After resolving the conflicts, please open a new PR for review.
Thank you!


parse metadata in utils.parsing.parse_eyelink

Description of the problem
The header of an asc file has a lot of metadata which we can parse.
Description of a solution
Instead of just returning a dataframe, the function then should return a tuple of a dataframe and a dictionary with parsed info
Minimum acceptance criteria

[ ] parsing recording datetime
[ ] parse eye tracker model and version
[ ] parse tracker mount info
[ ] parse display resolution
[ ] get pupil size data type
[ ] parse sampling rate
[ ] parse filter setting
[ ] parse TRACKING
[ ] parse CR
[ ] parse VEL
[ ] parse RES
[ ] parse HTARG
[ ] parse INPUT
[ ] parse BUTTONS
[ ] parse LEFT
[ ] parse RIGHT
[ ] infer if monocular

Context
the eyelink_parser from  eyelinker is a good reference for implementation:
https://github.com/cran/eyelinker/blob/master/R/eyelink_parser.R
https://cran.r-project.org/web/packages/eyelinker/vignettes/format.html

This is the current signature:
https://github.com/aeye-lab/pymovements/blob/9eb46c56230cbe5deebbc7af6797745a46af1613/src/pymovements/utils/parsing.py#L110-L114
It should be changed to:
 def parse_eyelink(
         filepath: Path | str,
         patterns: list | None = None,
         schema: dict | None = None,
 ) -> tuple[pl.DataFrame, dict[str, Any]] :

The keys of the dictionary should resemble the metadata.

[ ] In parsing.py you can create a global dictionary EYELINK_META_REGEXES: list[str] where each string will be a simple string holding the regex.
The group name in the regex will then be used as a key in the output meta dictionary
(e.g. SAMPLES\s+GAZE\s+LEFT\s+RATE\s+(?P<sampling_rate>[-]?\d*[.]\d*)\s+TRACKING\s+(?P<tracking>\S+)\s+FILTER\s+(?P<tracking>\d+)\s+	INPUT would write to the keys samping_rate, tracking, and filter.

[ ] Compile all the strings in EYELINK_META_REGEXES with re.compile in the parse_eyelink() method, not the global context, otherwise each pymovements import will slow down because of compiling all the regexes. (the way EYE_TRACKING_SAMPLE is defined is not optimal, compile shouldn't be done in the global context)

[ ] you can use Match.groupdict() to get the names and values of your match and put it into the output meta dictionary

[ ] Don't care about integrating this into the 'gaze.from_asc()` function yet. you can just ignore the meta tuple in that function so we can focus on parse_eyelink first


[BUG] Entitlements on a subaccount under a managed directory

If entitlements are created for a subaccount that is under a directory with managed entitlements, the entitlement runs into a timeout.
Example: entitlement of HANA Cloud

Analysis result: the check if an entitlement is available or not is executed via the listing of entitlements for a subaccount applying the filtering of a subaccount ID (see facade_accounts_entitlement.go).
The results of this call differ depending on the subaccount coordinates:

If the subaccount is located directly under the global account or under a directory without entitlement feature enabled, the result object (cis_entitlements.EntitledAndAssignedServicesResponseObject) contains the relevant entries for the assigned services in the AssignedServices slice.
If the subaccount is located under a directory with entitlement feature enabled, the AssignedServices slice remains empty even if the assignment of the entitlement was executed successfully.

The later scenario leads to the aforementioned timeout as no assignment could be identified by the provider.

For SAP internal: filed the issue via NGPBUG-365260


az ad app create  invalid Key type error

This is autogenerated. Please review and update as needed.
Describe the bug
MS documentation and --help command describe that --key-type can be set as one of three values  {AsymmetricX509Cert, Password, Symmetric}. However, trying to set value as Password led to error. It's funny because if you make a typo and set value of --key-type as for example Passwor it will ask if I had in mind Password. But providing Password will throw Invalid key Type
Command Name
az ad app create
Errors:
Invalid key type.

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

az ad app create --display-name {} --key-type  --key-value {} --key-display-name {}

Expected Behavior
Create app registration containing password secret.
Environment Summary
Linux-<IP_ADDRESS>-microsoft-standard-WSL2-x86_64-with-glibc2.31, Ubuntu 20.04.5 LTS
Python 3.10.5
Installer: DEB

azure-cli 2.40.0

Extensions:
interactive 0.4.5

Dependencies:
msal 1.18.0b1
azure-mgmt-resource 21.1.0b1

Additional Context

@jiasli for awareness

Hi, is there any update?

The same issue is present with the az ad app update command so that cannot be used as a workaround.

Indeed, the help message shows acceptable values are AsymmetricX509Cert, Password, Symmetric.
> az ad app create --help
...
    --key-type                     : The type of the key credentials associated with the
                                     application.  Allowed values: AsymmetricX509Cert, Password,
                                     Symmetric.  Default: AsymmetricX509Cert.

I did a git blame and saw key_type with its value Password was firstly introduced by https://github.com/Azure/azure-cli/commit/6b906d6b49ca73931120c986a40ba3d3650719d3 6 years ago on 2016-08-10:
https://github.com/Azure/azure-cli/blob/6b906d6b49ca73931120c986a40ba3d3650719d3/src/command_modules/azure-cli-role/azure/cli/command_modules/role/_params.py#L20
However, the swagger for AD Graph declares it only supports AsymmetricX509Cert and Symmetric:
https://github.com/Azure/azure-rest-api-specs/blob/8a6dd3376d8a5481be5d5de469cba3f9825a8a63/specification/graphrbac/data-plane/Microsoft.GraphRbac/stable/1.6/graphrbac.json#L2931-L2934
        "type": {
          "type": "string",
          "description": "Type. Acceptable values are 'AsymmetricX509Cert' and 'Symmetric'."
        },

The MS Graph API doc shows the same:
https://learn.microsoft.com/en-us/graph/api/resources/keycredential?view=graph-rest-1.0#properties

So I guess Password is never a valid option for --key-type.
Solution
The correct way to create a password credential is to use az ad app credential reset. Due to MS Graph API design, it is not allowed to specify your own password when creating/updating an app. This behavior is described in detail in https://learn.microsoft.com/en-us/cli/azure/microsoft-graph-migration.


Fix ui-extensions-cli-go Windows integration tests

https://github.com/Shopify/cli/pull/308

https://github.com/Shopify/cli/pull/308


[DesignProposal]: Do you have a plan to make an example for "video question answer"?

Background and Motivation
No response
Design
I saw that we provided the model for "video question answer"， but  I can't use the towhee to realize it. Can you let me know Do you have a plan to make an example for "video question answer"? Thank you for your answer.
Pros and Cons
No response
Anything else? (Additional Context)
No response

@wbc110460 Check this operator out: https://towhee.io/towhee/vilt-vqa . You can find examples in the README.


publish<EMAIL_ADDRESS>

Requested by: @keeakita
Merge target: (default)
Quick links:

View changes
View check runs

Assign the accepted label to this issue to approve the release.
Leave a comment containing #retract under this issue to retract the release (original issuer only).
Targets

[x] pypi
[x] sentry-pypi

Targets marked with a checkbox have already been executed.  Administrators can manually tick a checkbox to force craft to skip it.

#retract


Documented examples for common denormalizations

I'm principally interested in using this library for denormalizations - thinks like:
class BlogEntry(Model)
    # ...
    num_comments = IntegerField()

class Comment(Model):
    entry = ForeignKey(BlogEntry)
    # ...

Where that num_comments column stores the number of comments, and is updated by a trigger any time a comment is added or deleted.
It would be great if the documentation included some examples of these! Happy to contribute some if I end up figuring this out for my project.

I think something like this does what you're after:
@pgtrigger.register(
    pgtrigger.Trigger(
        name='keep_num_comments_in_sync',
        operation=pgtrigger.Update | pgtrigger.Insert | pgtrigger.Delete,
        when=pgtrigger.After,
        func='''
        IF TG_OP IN ('DELETE', 'UPDATE') THEN
            UPDATE blog_blogentry SET num_comments = num_comments - 1 WHERE id = OLD.entry_id;
        END IF;
        IF TG_OP IN ('INSERT', 'UPDATE') THEN
            UPDATE blog_blogentry SET num_comments = num_comments + 1 WHERE id = NEW.entry_id;
        END IF;
        RETURN NULL;
        ''',
    )
)

Deals with someone moving a comment from one blog entry to another as well.

@dracos very clever for the update case! Yes, you can do three as well and then have a condition on the update to only fire when the entry has been changed.
@simonw Did this address your issue? I can add it as a more advanced use case to the docs since this is also a problem I address with pgtrigger all the time (precomputing balances, etc).
I'm open to ideas of adding something like this as a core trigger if it can be generalized too.

I have a similar need with a twist: we have several "container" models that need to do things like "this object's price is the sum of all its components' prices" etc, so I can't directly use the examples I've seen around the web, as they all seem to directly use the individual value of the row being updated.
My initial attempt is this (note that I will need to add Delete support as well, but first I should get it to work)
UpdateContainer = pgtrigger.Trigger(
    name="update_price_after_tax",
    when=pgtrigger.After,
    operation=pgtrigger.Insert | pgtrigger.UpdateOf("_after_tax"),
    condition=pgtrigger.Q(new__container__isnull=False),
    func="""UPDATE
    app_container t set price_after_tax=sub_q.SUM_price_after_tax
    FROM (
        SELECT SUM(price_after_tax) as SUM_price_after_tax, container_id from app_component
        GROUP BY container_id
        ) sub_q
    WHERE sub_q.container_id=t.uuid;
    RETURN NULL;
    """,
)

There are several omissions (eg. it's not generalized at all, and I think I might have to add a filter to ensure only the relevant container is updated) but the main problem is that the above doesn't include the current component being saved - that is, if I save component1 with price_after_tax=100 and component2 with price_after_tax=50, the container ends up having price_after_tax=100 rather than 150. On the other hand, when I save component2 the second time, the sum is correct.
From what I can understand, the SUM operates on already existing rows (possibly because the component save() is wrapped in a transaction) - and I have no idea whatsoever how to include the current row.


Bug - default account permissions

Description
account permissions used on login should be set and used for signing transactions. currently, signing tx defaults to 'active' whether or not a user is signed in as 'owner'. This can cause unintended tx failures if 'active' status doesn't have permission to sign tx.
Describe the solution you'd like
Default to same permissions on login ('owner'/'active') when signing transactions.

Closing this because if you sign in with owner and it requires active, Anchor does it seamlessly for you and asks for the active permission.

@karynemayer re-opened as bug with clarification.


Allow sorting on interactions count

Could later also include comment count from #85

Thanks again for this! Another cool PR! 😄


Missing documentation in API client

Problem
Document DockerCli methods or make them private function in api/client/cli.go.
Solution
Make methods not used outside package private, document remained public methods in godoc-style.

#dibs

@robzhu when you do a PR, can you please add fixes or closes keyword to it? Thanks!

According to https://godoc.org/github.com/docker/docker/api/client#DockerCli, is this one closed or does it still need work ?

ping @icecrime do you still think additional changes are require?
(thanks, @vdemeester)

Sounds good! Thanks,


plicate keys detected: 'Playground'. This may cause an update error.

Description
a duplicated sidebar tab of the Playground key returned an error, maybe this issue happened because of the fix of this issue

Steps to reproduce

run the project locally, and open the console

Logs/Alerts

Status: Pr merged, waiting for the release

Verified on devnet.
The old playground was changed to legacy playground as seen in https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/dashboard/src/Dashboard.vue#L460&L478
And no errors appear in the console while navigating to these links.
Screencast from 01-06-23 18:08:20.webm


Purpose of itemSelectText "Click to select"

This is not really a bug, I try to understand the sense of the itemSelectText "Click to select".
Imagine each single button on the web and your OS have this text inside.
For me, this is an 100% self-evident UI-action, that doesnt need any explaination.
Or is it an accessibility option? If it is, there is maybe a better way to solve this, instead wasting so much space? (aria-label, ...?)

I agree. FYI you can disable this mechanism with the following config:
new Choices(..., {
  itemSelectText: "",
});

.choices__list--dropdown .choices__item--selectable,
.choices__list[aria-expanded] .choices__item--selectable {
  /* Choices.js sets this to 100px to account for itemSelectText. But we disable that,
    so we want to use the normal padding it would otherwise use of 10px. */
  padding-right: 10px;
}

With v11.0.0, just setting itemSelectText to an empty string is enough as the css rules have been updated to only match if the data-select-text attribute has contents/exists


fix: correct type file

:tada: This PR is included in version 1.1.1 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Consistently causing solver to terminate with "Infeasible LNS solution".

What version of OR-Tools and what language are you using?
Version: main/v9.7
Language: MiniZinc
Which solver are you using (e.g. CP-SAT, Routing Solver, GLOP, BOP, Gurobi)
CP-SAT
What operating system (Linux, Windows, ...) and version?
Windows
What did you do?
I've been working on a model for a while now.   Recently I added a few constraints that suddenly caused the whole model to start terminating with the "Infeasible LNS solution!" error message.  It typically finds ~50 solutions before terminating with this error message.  The solver consistently converges onto the error-state.
What did you expect to see
Is it necessary to terminate if LNS solution is infeasible? Would it be possible to continue trying different neighbourhoods rather than terminating or skipping the infeasible solution and trying a different LNS parameter combination instead?
Example of error message
FZN solver plugin, compiled  Jun 20 2023  16:29:07
F1027 06:59:35.933344   14600 cp_model_solver.cc:3237] Infeasible LNS solution! graph_dec_lns(d=0.94 s=338 t=0.10 p=0.64 stall=0) solved with params log_search_progress: false max_deterministic_time: 0.1 cp_model_presolve: true stop_after_first_solution: false num_search_workers: 20 cp_model_probing_level: 0 symmetry_level: 0 log_to_stdout: false max_domain_size_when_encoding_eq_neq_constraints: 32 solution_pool_size: 1 num_workers: 20 find_big_linear_overlap: false
*** Check failure stack trace: ***
@   00007FF642F8C2F9  (unknown)
@   00007FF642B0CDF2  (unknown)
@   00007FF642B81A7F  (unknown)
@   00007FF642CF90A4  (unknown)
@   00007FF642CF887F  (unknown)
@   00007FFB97171BB2  (unknown)
@   00007FFB98887614  (unknown)
@   00007FFB993026B1  (unknown)
%%%mzn-stat: nSolutions=57
%%%mzn-stat-end
In this example the graph_dec_lns failed, but it varies for different runs.  I've attached this particular proto as example together with a feasible result (graph_cst_lns).
Anything else we should know about your project / environment
I'm using MiniZinc 2.7.6 with -O1 optimisation level (higher level optimisation does not influence outcome).
lns_examples.zip

If I run both model on the main branch, I get an OPTIMAL solution.
Do you get something different ?
Can you send me the (mzn,dzn) or fzn model?

Dear Laurent,
Thank you so much for such a quick reply!   It is strange; the version I'm using is the release version.   I typically run it from the MiniZinc IDE.  Here is a typical output that I generate when using sat_runner.exe from the command line:
c:\MiniZinc\or-tools_x64_VisualStudio2022_cpp_v9.7.2996\bin>sat_runner.exe --input=lns_338_graph_dec_lns.pb.problematic.txt
Starting CP-SAT solver v9.7.2996
Parameters: log_search_progress: true
Setting number of workers to 24
Initial optimization model 'lns_338_graph_dec_lns': (model_fingerprint: 0x381c2eed80102c23)
#Variables: 319'938 (#bools: 1'003 #ints: 1'299 in objective)

188'893 Booleans in [0,1]
2'261 different domains in [-546,90420] with a largest complexity of 45.
113203 constants in {-326,-320,-300,-280,-248, ... 20,325,338,370,490,608,623,624,631,636,881,1148}
#kAtMostOne: 772 (#literals: 7'738)
#kBoolAnd: 24'799 (#enforced: 24'432 #multi: 7'407) (#literals: 325'696)
#kBoolOr: 31'231 (#literals: 318'743)
#kExactlyOne: 4'865 (#literals: 158'234)
#kIntDiv: 783
#kIntProd: 305
#kLinMax: 1'252 (#expressions: 2'960)
#kLinear1: 335'221 (#enforced: 311'268 #multi: 102)
#kLinear2: 36'782 (#enforced: 34'775)
#kLinear3: 1'586 (#enforced: 371)
#kLinearN: 484 (#terms: 2'364)

Starting presolve at 0.12s
[ExtractEncodingFromLinear] #potential_supersets=1035 #potential_subsets=1 #at_most_one_encodings=0 #exactly_one_encodings=0 #unique_terms=0 #multiple_terms=0 #literals=0 time=0.00933303s
[SAT presolve] num removable Booleans: 310834 / 322040
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:8973 literals:21979 vars:5275 one_side_vars:1859 simple_definition:1034 singleton_clauses:0
[SAT presolve] [0.003094s] clauses:7832 literals:18644 vars:5248 one_side_vars:2214 simple_definition:1075 singleton_clauses:371
[SAT presolve] [0.0137767s] clauses:7316 literals:17556 vars:4981 one_side_vars:2219 simple_definition:994 singleton_clauses:362
[Probing] implications and bool_or (work_done=31558).
[MaxClique] Merged 5177(10757 literals) into 4947(10417 literals) at_most_ones. time=0.02165s
[AllDiffInference] #different=8 #cliques=0 #size=0 time=0.0648558s
[DetectDuplicateConstraints] #duplicates=593 #without_enforcements=53 time=0.0844038s
[DetectDominatedLinearConstraints] #relevant_constraints=90 #work_done=947 #num_inclusions=11 #num_redundant=10 time=0.00806398s
[ProcessSetPPC] #relevant_constraints=783 #num_inclusions=186 work=9083 time=0.0266318s
[FindBigHorizontalLinearOverlap] #blocks=0 #saved_nz=0 #linears=4 #work_done=46/1e+09 time=0.0049856s
[FindBigVerticalLinearOverlap] #blocks=0 #nz_reduction=0 #work_done=13664 time=0.00586663s
[MergeClauses] #num_collisions=16 #num_merges=16 #num_saved_literals=32 work=710/100000000 time=0.0132695s
[SAT presolve] num removable Booleans: 317777 / 322327
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:723 literals:1678 vars:642 one_side_vars:454 simple_definition:109 singleton_clauses:0
[SAT presolve] [0.0017627s] clauses:661 literals:1519 vars:642 one_side_vars:454 simple_definition:119 singleton_clauses:0
[SAT presolve] [0.00949869s] clauses:641 literals:1477 vars:632 one_side_vars:456 simple_definition:109 singleton_clauses:0
[Probing] implications and bool_or (work_done=10708).
[MaxClique] Merged 522(1147 literals) into 386(979 literals) at_most_ones. time=0.0183601s
[AllDiffInference] #different=3 #cliques=0 #size=0 time=0.0669139s
[DetectDuplicateConstraints] #duplicates=63 #without_enforcements=52 time=0.0867184s
[DetectDominatedLinearConstraints] #relevant_constraints=80 #work_done=808 #num_inclusions=1 #num_redundant=0 time=0.00930203s
[ProcessSetPPC] #relevant_constraints=538 #num_inclusions=69 work=5809 time=0.0314859s
[FindBigHorizontalLinearOverlap] #blocks=0 #saved_nz=0 #linears=3 #work_done=41/1e+09 time=0.00428981s
[FindBigVerticalLinearOverlap] #blocks=0 #nz_reduction=0 #work_done=12003 time=0.00513726s
[MergeClauses] #num_collisions=13 #num_merges=13 #num_saved_literals=26 work=534/100000000 time=0.0137932s
[SAT presolve] num removable Booleans: 317939 / 322327
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:301 literals:782 vars:346 one_side_vars:246 simple_definition:63 singleton_clauses:0
[SAT presolve] [0.0016307s] clauses:274 literals:728 vars:346 one_side_vars:246 simple_definition:64 singleton_clauses:0
[SAT presolve] [0.00983137s] clauses:274 literals:728 vars:346 one_side_vars:246 simple_definition:64 singleton_clauses:0
[Probing] implications and bool_or (work_done=9101).
[MaxClique] Merged 160(415 literals) into 159(421 literals) at_most_ones. time=0.0190469s
[AllDiffInference] #different=3 #cliques=0 #size=0 time=0.0666784s
[DetectDuplicateConstraints] #duplicates=1 #without_enforcements=52 time=0.0856812s
[DetectDominatedLinearConstraints] #relevant_constraints=80 #work_done=808 #num_inclusions=1 #num_redundant=0 time=0.00835218s
[ProcessSetPPC] #relevant_constraints=499 #num_inclusions=34 work=4933 time=0.0355717s
[FindBigHorizontalLinearOverlap] #blocks=0 #saved_nz=0 #linears=3 #work_done=41/1e+09 time=0.00382808s
[FindBigVerticalLinearOverlap] #blocks=0 #nz_reduction=0 #work_done=11989 time=0.00510274s
[MergeClauses] #num_collisions=13 #num_merges=13 #num_saved_literals=26 work=534/100000000 time=0.0123504s
[ExpandObjective] #propagations=0 #entries=2078 #tight_variables=741 #tight_constraints=219 #expands=51 #issues=0 time=0.0146865s
3 affine relations still in the model.
Presolve summary:

9495 affine relations were detected.
rule 'TODO dual: add implied bound' was applied 1914 times.
rule 'TODO dual: make linear1 equiv' was applied 1662 times.
rule 'TODO dual: only one blocking constraint?' was applied 6167 times.
rule 'TODO dual: only one blocking enforced constraint?' was applied 4575 times.
rule 'TODO dual: only one unspecified blocking constraint?' was applied 69 times.
rule 'TODO dual: tighten at most one' was applied 84 times.
rule 'TODO duplicate: identical constraint with different enforcements' was applied 157 times.
rule 'TODO linear2: contains a Boolean.' was applied 2738 times.
rule 'TODO variables: only used in linear1.' was applied 648 times.
rule 'affine: fixed' was applied 36 times.
rule 'affine: new relation' was applied 9495 times.
rule 'at_most_one: dominated singleton' was applied 1 time.
rule 'at_most_one: empty or all false' was applied 557 times.
rule 'at_most_one: removed literals' was applied 1995 times.
rule 'at_most_one: resolved two constraints with opposite literal' was applied 44 times.
rule 'at_most_one: satisfied' was applied 3395 times.
rule 'at_most_one: singleton' was applied 6 times.
rule 'at_most_one: size one' was applied 1991 times.
rule 'at_most_one: transformed into max clique.' was applied 3 times.
rule 'at_most_one: x and not(x)' was applied 43 times.
rule 'bool_and: always false' was applied 9960 times.
rule 'bool_and: cannot be enforced' was applied 22 times.
rule 'bool_and: fixed literals' was applied 10182 times.
rule 'bool_and: non-reified.' was applied 21931 times.
rule 'bool_and: removed duplicate literal' was applied 1 time.
rule 'bool_and: x => not x' was applied 5 times.
rule 'bool_and: x => x' was applied 3016 times.
rule 'bool_or: always true' was applied 16836 times.
rule 'bool_or: fixed literals' was applied 5204 times.
rule 'bool_or: implications' was applied 9047 times.
rule 'bool_or: only one literal' was applied 93281 times.
rule 'bool_or: removed enforcement literal' was applied 158 times.
rule 'bool_or: singleton' was applied 2342 times.
rule 'deductions: 338042 stored' was applied 1 time.
rule 'deductions: reduced variable domain' was applied 10 times.
rule 'domination: fixed to lb.' was applied 35 times.
rule 'domination: in exactly one' was applied 43 times.
rule 'domination: in implication' was applied 18 times.
rule 'domination: reduced ub.' was applied 7 times.
rule 'dual: add implication' was applied 140 times.
rule 'dual: affine relation' was applied 17 times.
rule 'dual: enforced equivalence' was applied 1238 times.
rule 'dual: fix variable' was applied 1209 times.
rule 'dual: make encoding equiv' was applied 1779 times.
rule 'dual: reduced domain' was applied 492 times.
rule 'duplicate: merged rhs of linear constraint' was applied 8 times.
rule 'duplicate: removed constraint' was applied 657 times.
rule 'enforcement: can never be true' was applied 24 times.
rule 'enforcement: false literal' was applied 92888 times.
rule 'enforcement: literal not used' was applied 4869 times.
rule 'enforcement: literal with unique direction' was applied 3 times.
rule 'enforcement: true literal' was applied 176246 times.
rule 'exactly_one: removed literals' was applied 5324 times.
rule 'exactly_one: satisfied' was applied 2570 times.
rule 'exactly_one: simplified objective' was applied 14 times.
rule 'exactly_one: singleton' was applied 27 times.
rule 'exactly_one: size one' was applied 294 times.
rule 'exactly_one: size two' was applied 1694 times.
rule 'exactly_one: x and not(x)' was applied 934 times.
rule 'incompatible linear: add implication' was applied 85 times.
rule 'int_abs: converted to equality' was applied 262 times.
rule 'int_abs: fixed expression' was applied 9 times.
rule 'int_abs: fixed target' was applied 12 times.
rule 'int_abs: propagate domain from abs(x) to x' was applied 6 times.
rule 'int_abs: propagate domain from x to abs(x)' was applied 235 times.
rule 'int_abs: store abs(x) == y' was applied 289 times.
rule 'int_abs: unused target' was applied 6 times.
rule 'int_div: always true' was applied 330 times.
rule 'int_div: linearize positive division with a constant divisor' was applied 181 times.
rule 'int_div: rewrite to equality' was applied 146 times.
rule 'int_div: target and divisor are fixed' was applied 26 times.
rule 'int_div: target has been fixed by propagating X / cte' was applied 162 times.
rule 'int_div: updated domain of target in target = X / cte' was applied 177 times.
rule 'int_prod: constant product' was applied 148 times.
rule 'int_prod: divide product by constant factor' was applied 1 time.
rule 'int_prod: expression is constant.' was applied 10 times.
rule 'int_prod: linearize product by constant.' was applied 147 times.
rule 'int_prod: reduced target domain.' was applied 388 times.
rule 'int_prod: removed constant expressions.' was applied 412 times.
rule 'lin_max: all Booleans.' was applied 42 times.
rule 'lin_max: always satisfied' was applied 24 times.
rule 'lin_max: converted to equality' was applied 598 times.
rule 'lin_max: fixed target and all booleans' was applied 3 times.
rule 'lin_max: reduced expression domain.' was applied 189 times.
rule 'lin_max: removed exprs' was applied 874 times.
rule 'lin_max: target domain reduced' was applied 1936 times.
rule 'lin_max: unused affine target' was applied 7 times.
rule 'lin_max: x = max(x, ...)' was applied 309 times.
rule 'linear inclusion: redundant included constraint' was applied 6 times.
rule 'linear inclusion: subset + singleton is equality' was applied 4 times.
rule 'linear1: always true' was applied 31 times.
rule 'linear1: is boolean implication' was applied 2017 times.
rule 'linear1: remove abs from abs(x) in domain' was applied 444 times.
rule 'linear1: transformed to implication' was applied 21041 times.
rule 'linear1: without enforcement' was applied 40622 times.
rule 'linear2: Boolean with one feasible value.' was applied 40 times.
rule 'linear2: contains a Boolean.' was applied 87 times.
rule 'linear2: implied ax + by = cte has only one solution' was applied 388 times.
rule 'linear: always true' was applied 130027 times.
rule 'linear: coefficient strenghtening.' was applied 63 times.
rule 'linear: divide by GCD' was applied 34358 times.
rule 'linear: empty' was applied 8295 times.
rule 'linear: enforcement literal in expression' was applied 1348 times.
rule 'linear: extracted enforcement literal' was applied 27 times.
rule 'linear: fixed or dup variables' was applied 127519 times.
rule 'linear: infeasible' was applied 70076 times.
rule 'linear: negative clause' was applied 2 times.
rule 'linear: negative equal one' was applied 27 times.
rule 'linear: only two odd Booleans in equality' was applied 2 times.
rule 'linear: positive clause' was applied 1 time.
rule 'linear: positive equal one' was applied 20 times.
rule 'linear: reduce rhs with DP' was applied 8 times.
rule 'linear: reduced variable domains' was applied 55728 times.
rule 'linear: reduced variable domains in derived constraint' was applied 2 times.
rule 'linear: remapped using affine relations' was applied 130651 times.
rule 'linear: remove irrelevant part' was applied 11 times.
rule 'linear: simplified rhs' was applied 195688 times.
rule 'linear: simplify using approximate gcd' was applied 36 times.
rule 'linear: singleton column' was applied 19 times.
rule 'linear: small Boolean expression' was applied 44 times.
rule 'linear: variable substitution 0' was applied 61 times.
rule 'linear: variable substitution 1' was applied 65 times.
rule 'linear: variable substitution 2' was applied 33 times.
rule 'linear: variable substitution 3' was applied 23 times.
rule 'objective: expanded via tight equality' was applied 51 times.
rule 'objective: shifted cost with exactly ones' was applied 35 times.
rule 'objective: variable not used elsewhere' was applied 6 times.
rule 'presolve: 312053 unused variables removed.' was applied 1 time.
rule 'presolve: iteration' was applied 3 times.
rule 'probing: bool_or reduced to implication' was applied 538 times.
rule 'probing: simplified clauses.' was applied 40 times.
rule 'setppc: bool_or in at_most_one.' was applied 113 times.
rule 'setppc: removed dominated constraints' was applied 78 times.
rule 'variables with 2 values: create encoding literal' was applied 368 times.
rule 'variables with 2 values: fixed encoding' was applied 45 times.
rule 'variables with 2 values: merge encoding literals' was applied 153 times.
rule 'variables with 2 values: new affine relation' was applied 706 times.
rule 'variables with 2 values: register other encoding' was applied 73 times.
rule 'variables: add encoding constraint' was applied 1453 times.
rule 'variables: canonicalize affine domain' was applied 271 times.
rule 'variables: canonicalize domain' was applied 297 times.
rule 'variables: detect fully reified value encoding' was applied 134182 times.
rule 'variables: detect half reified value encoding' was applied 285377 times.
rule 'variables: only used in encoding' was applied 1326 times.
rule 'variables: only used in objective and in encoding' was applied 5 times.
rule 'variables: removable enforcement literal' was applied 117 times.

Presolved optimization model 'lns_338_graph_dec_lns': (model_fingerprint: 0x7c6b4c7dee718657)
#Variables: 1'046 (#bools: 162 #ints: 155 in objective)

558 Booleans in [0,1]
179 different domains in [-320,1600] with a largest complexity of 8.
#kAtMostOne: 63 (#literals: 220)
#kBoolAnd: 104 (#enforced: 104 #multi: 6) (#literals: 242)
#kBoolOr: 158 (#literals: 477)
#kExactlyOne: 163 (#literals: 608)
#kIntDiv: 88
#kLinMax: 119 (#expressions: 238)
#kLinear1: 1'162 (#enforced: 1'162)
#kLinear2: 231 (#enforced: 210)
#kLinear3: 46
#kLinearN: 16 (#terms: 93)

Preloading model.
#Bound   5.47s best:-inf  next:[2425670,2521860] initial_domain
#Model   5.48s var:1046/1046 constraints:2150/2150 compo:915,22,18,17,13,8,8,7,7,7,...
Starting search at 5.48s with 24 workers.
13 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp, no_lp, objective_lb_search, objective_shaving_search, probing, probing_max_lp, pseudo_costs, quick_restart, quick_restart_no_lp, reduced_costs]
9 first solution subsolvers: [jump, jump_decay_no_rst, jump_decay_perturb, jump_decay_rnd_on_rst, jump_no_rst, random(2), random_quick_restart(2)]
8 incomplete subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns, graph_dec_lns, graph_var_lns, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent, update_gap_integral]
#Bound   5.50s best:-inf  next:[2425670,2521855] objective_shaving_search #vars=1047 #csts=2151
#Bound   5.51s best:-inf  next:[2425675,2521660] no_lp initial_propagation
#1       5.51s best:2501710 next:[2501715,2521660] no_lp [hint] fixed_bools:0/898
#2       5.51s best:2502235 next:[2502240,2521660] no_lp fixed_bools:0/909
#Bound   5.51s best:2502235 next:[2502240,2517055] objective_lb_search initial_propagation
#Bound   5.52s best:2502235 next:[2502240,2515295] objective_lb_search
#Bound   5.53s best:2502235 next:[2502240,2513010] objective_lb_search
#Bound   5.54s best:2502235 next:[2502240,2512500] probing
#Bound   5.55s best:2502235 next:[2502240,2512445] probing
#Bound   5.55s best:2502235 next:[2502240,2512395] probing
#3       5.59s best:2502485 next:[2502490,2512395] rnd_cst_lns(d=0.81 s=38 t=0.10 p=1.00 stall=2) [hint]
#Bound   5.60s best:2502485 next:[2502490,2506605] lb_tree_search initial_propagation
#4       5.67s best:2503235 next:[2503240,2506605] graph_cst_lns(d=0.71 s=49 t=0.10 p=1.00 stall=1)
#Bound   5.70s best:2503235 next:[2503240,2505275] max_lp
#5       5.73s best:2504225 next:[2504230,2505275] graph_var_lns(d=0.71 s=47 t=0.10 p=1.00 stall=1)
#6       5.87s best:2504475 next:[2504480,2505275] rnd_var_lns(d=0.94 s=61 t=0.10 p=1.00 stall=5)
#Bound   5.88s best:2504475 next:[2504480,2504685] lb_tree_search
#Bound   6.04s best:2504475 next:[2504480,2504565] lb_tree_search
#Bound   6.12s best:2504475 next:[2504480,2504515] lb_tree_search
#Done    6.16s lb_tree_search
#Done    6.16s quick_restart_no_lp
#Done    6.16s core
#Done    6.17s probing
Task timing                           n [     min,      max]      avg      dev     time         n [     min,      max]      avg      dev    dtime
'synchronization_agent':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
'neighborhood_helper':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
'default_lp':         1 [683.95ms, 683.95ms] 683.95ms   0.00ns 683.95ms         1 [  8.45ms,   8.45ms]   8.45ms   0.00ns   8.45ms
'no_lp':         1 [683.75ms, 683.75ms] 683.75ms   0.00ns 683.75ms         1 [ 94.19ms,  94.19ms]  94.19ms   0.00ns  94.19ms
'max_lp':         1 [693.80ms, 693.80ms] 693.80ms   0.00ns 693.80ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
'core':         1 [681.68ms, 681.68ms] 681.68ms   0.00ns 681.68ms         1 [ 36.26ms,  36.26ms]  36.26ms   0.00ns  36.26ms
'reduced_costs':         1 [686.55ms, 686.55ms] 686.55ms   0.00ns 686.55ms         1 [ 10.77ms,  10.77ms]  10.77ms   0.00ns  10.77ms
'pseudo_costs':         1 [687.65ms, 687.65ms] 687.65ms   0.00ns 687.65ms         1 [  5.40ms,   5.40ms]   5.40ms   0.00ns   5.40ms
'quick_restart':         1 [684.95ms, 684.95ms] 684.95ms   0.00ns 684.95ms         1 [  9.98ms,   9.98ms]   9.98ms   0.00ns   9.98ms
'quick_restart_no_lp':         1 [680.67ms, 680.67ms] 680.67ms   0.00ns 680.67ms         1 [ 24.91ms,  24.91ms]  24.91ms   0.00ns  24.91ms
'lb_tree_search':         1 [686.22ms, 686.22ms] 686.22ms   0.00ns 686.22ms         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
'objective_lb_search':         1 [684.68ms, 684.68ms] 684.68ms   0.00ns 684.68ms         1 [ 21.23ms,  21.23ms]  21.23ms   0.00ns  21.23ms
'probing':         1 [687.29ms, 687.29ms] 687.29ms   0.00ns 687.29ms         1 [ 11.54ms,  11.54ms]  11.54ms   0.00ns  11.54ms
'probing_max_lp':         1 [692.73ms, 692.73ms] 692.73ms   0.00ns 692.73ms         1 [  6.94ms,   6.94ms]   6.94ms   0.00ns   6.94ms
'objective_shaving_search':         7 [ 15.79ms, 179.69ms]  96.67ms  50.13ms 676.68ms         6 [233.48us, 287.13us] 260.21us  20.29us   1.56ms
'feasibility_pump':         8 [  9.63ms,  57.77ms]  37.09ms  13.71ms 296.73ms         7 [  5.98ms,  11.33ms]   6.78ms   1.86ms  47.49ms
'rins/rens':         8 [ 13.48ms,  87.72ms]  41.53ms  27.43ms 332.27ms         6 [ 31.77us, 579.05us] 237.38us 214.70us   1.42ms
'rnd_var_lns':         7 [ 10.25ms, 143.14ms]  56.81ms  44.54ms 397.67ms         6 [  8.11us,   5.55ms]   1.19ms   2.02ms   7.16ms
'rnd_cst_lns':         7 [ 12.01ms, 173.67ms]  74.97ms  58.38ms 524.79ms         7 [439.40ns,   3.56ms] 997.88us   1.48ms   6.99ms
'graph_var_lns':         7 [  8.48ms, 313.29ms] 210.81ms 102.20ms    1.48s         7 [  9.70us,  14.90ms]   7.02ms   4.86ms  49.16ms
'graph_arc_lns':         7 [  4.32ms, 610.04ms] 300.57ms 235.86ms    2.10s         4 [834.40ns,  84.69ms]  22.56ms  35.93ms  90.25ms
'graph_cst_lns':         7 [ 43.44ms, 500.29ms] 163.66ms 152.11ms    1.15s         5 [201.60us,  38.27ms]   8.17ms  15.05ms  40.86ms
'graph_dec_lns':         7 [  8.58ms, 373.58ms]  97.50ms 116.94ms 682.51ms         6 [ 21.38us,  15.14ms]   2.79ms   5.53ms  16.77ms
'update_gap_integral':         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns         0 [  0.00ns,   0.00ns]   0.00ns   0.00ns   0.00ns
Search stats              Bools  Conflicts  Branches  Restarts  BoolPropag  IntegerPropag
'default_lp':    873        121     1'955     1'699      25'697         65'591
'no_lp':    943      6'511    10'367     1'697     589'453      1'270'902
'max_lp':    909          0     1'690     1'690      11'537         26'613
'core':  1'308        287    51'662     2'182     260'320        475'349
'reduced_costs':    961          8     1'909     1'691      12'493         29'745
'pseudo_costs':    961          7     1'910     1'691      12'491         29'627
'quick_restart':    876         93     2'103     1'701      21'097         53'812
'quick_restart_no_lp':  1'021      1'479    12'183     1'839     171'622        477'818
'lb_tree_search':    909          0     1'696     1'690      11'540         26'666
'objective_lb_search':    874        414     2'304     1'694      60'477        169'833
'probing':    876         95     2'002     1'719      24'230         59'100
'probing_max_lp':    961          6     1'908     1'691      12'920         30'478
LNS stats           Improv/Calls  Closed  Difficulty  TimeLimit
'rins/rens':           0/8     88%        0.96       0.10
'rnd_var_lns':           1/7    100%        0.97       0.10
'rnd_cst_lns':           1/7    100%        0.97       0.10
'graph_var_lns':           4/7     86%        0.94       0.10
'graph_arc_lns':           3/7     43%        0.53       0.10
'graph_cst_lns':           3/7     57%        0.78       0.10
'graph_dec_lns':           1/7     86%        0.94       0.10
Solutions (6)       Num   Rank
'graph_cst_lns':    1  [4,4]
'graph_var_lns':    1  [5,5]
'no_lp':    2  [1,2]
'rnd_cst_lns':    1  [3,3]
'rnd_var_lns':    1  [6,6]
Objective bounds               Num
'initial_domain':    1
'lb_tree_search':    4
'max_lp':    1
'no_lp':    1
'objective_lb_search':    3
'objective_shaving_search':    1
'probing':    3
Solution repositories    Added  Queried  Ignored  Synchro
'feasible solutions':     44      107        3       33
'lp solutions':      6        8        0        3
'pump':      0        0
Improving bounds shared    Num
'core':   10
'default_lp':   77
'max_lp':    1
'no_lp':    5
'objective_lb_search':   22
'quick_restart':    9
'quick_restart_no_lp':   12
'reduced_costs':  145
Clauses shared            Num
'core':   10
'no_lp':    2
'probing':   26
'quick_restart':    1
'quick_restart_no_lp':    4
F1027 15:47:57.454898   37648 cp_model_solver.cc:4380] Check failed: SolutionIsFeasible( model_proto, std::vector<int64_t>(response->solution().begin(), response->solution().end()), mapping_proto, &postsolve_mapping) postsolved solution
*** Check failure stack trace: ***
@   00007FF62D59A3F9  (unknown)
@   00007FF62D0FD262  (unknown)
@   00007FF62D19E617  (unknown)
@   00007FF62D19DD7A  (unknown)
@   00007FF62D10D647  (unknown)
@   00007FF62D0A9D02  (unknown)
@   00007FF62DDC6AF8  (unknown)
@   00007FFB98887614  (unknown)
@   00007FFB993026B1  (unknown)
I've appended three more pb files, which on my side cause a similar error in sat_runner; and, also the compiled fzn.  In the most recent run I tried, it crashed after finding 24 solutions:
minizinc --json-stream --push-working-directory C:/b_v4.0 --param-file-no-push C:/Users/v/AppData/Local/Temp/mzn_YPLBGj.mpc --pop-working-directory C:/b_v4.0/full_model_v402.mzn C:/b_v4.0/example_data_2023_10_27T06_00_00.dzn
...
CompilePass: Flatten with 'c:\MiniZinc\or-tools_x64_VisualStudio2022_cpp_v9.7.2996\share\minizinc\ortools' library ...

% SOLVING PHASE
FZN solver plugin, compiled  Jun 20 2023  16:29:07
F1027 15:57:24.217621    3336 cp_model_solver.cc:3237] Infeasible LNS solution! rnd_cst_lns(d=0.97 s=234 t=0.10 p=0.89 stall=0) solved with params log_search_progress: false max_deterministic_time: 0.1 cp_model_presolve: true stop_after_first_solution: false num_search_workers: 22 cp_model_probing_level: 0 symmetry_level: 0 log_to_stdout: false max_domain_size_when_encoding_eq_neq_constraints: 32 solution_pool_size: 1 num_workers: 22 find_big_linear_overlap: false
*** Check failure stack trace: ***
@   00007FF642F8C2F9  (unknown)
@   00007FF642B0CDF2  (unknown)
@   00007FF642B81A7F  (unknown)
@   00007FF642CF90A4  (unknown)
@   00007FF642CF887F  (unknown)
@   00007FFB97171BB2  (unknown)
@   00007FFB98887614  (unknown)
@   00007FFB993026B1  (unknown)
%%%mzn-stat: nSolutions=24
%%%mzn-stat-end
fzn_more_pb_examples.zip

I am on main which is ahead of 9.7
Laurent Perron | Operations Research | @.*** | (33) 1 42 68 53
00
Le ven. 27 oct. 2023 à 18:12, forceoffire @.***> a
écrit :

Dear Laurent,
Thank you so much for such a quick reply! It is strange; the version I'm
using is the release version. I typically run it from the MiniZinc IDE.
Here is a typical output that I generate when using sat_runner.exe from the
command line:
c:\MiniZinc\or-tools_x64_VisualStudio2022_cpp_v9.7.2996\bin>sat_runner.exe
--input=lns_338_graph_dec_lns.pb.problematic.txt
Starting CP-SAT solver v9.7.2996
Parameters: log_search_progress: true
Setting number of workers to 24
Initial optimization model 'lns_338_graph_dec_lns': (model_fingerprint:
0x381c2eed80102c23)
#Variables: 319'938 (#bools: 1'003 #ints: 1'299 in objective)

188'893 Booleans in [0,1]
2'261 different domains in [-546,90420] with a largest complexity of

113203 constants in {-326,-320,-300,-280,-248, ...
20,325,338,370,490,608,623,624,631,636,881,1148}
#kAtMostOne: 772 (#literals: 7'738)
#kBoolAnd: 24'799 (#enforced: 24'432 #multi: 7'407) (#literals:
325'696)
#kBoolOr: 31'231 (#literals: 318'743)
#kExactlyOne: 4'865 (#literals: 158'234)
#kIntDiv: 783
#kIntProd: 305
#kLinMax: 1'252 (#expressions: 2'960)
#kLinear1: 335'221 (#enforced: 311'268 #multi: 102)
#kLinear2: 36'782 (#enforced: 34'775)
#kLinear3: 1'586 (#enforced: 371)
#kLinearN: 484 (#terms: 2'364)

Starting presolve at 0.12s
[ExtractEncodingFromLinear] #potential_supersets=1035 #potential_subsets=1
#at_most_one_encodings=0 #exactly_one_encodings=0 #unique_terms=0
#multiple_terms=0 #literals=0 time=0.00933303s
[SAT presolve] num removable Booleans: 310834 / 322040
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:8973 literals:21979 vars:5275
one_side_vars:1859 simple_definition:1034 singleton_clauses:0
[SAT presolve] [0.003094s] clauses:7832 literals:18644 vars:5248
one_side_vars:2214 simple_definition:1075 singleton_clauses:371
[SAT presolve] [0.0137767s] clauses:7316 literals:17556 vars:4981
one_side_vars:2219 simple_definition:994 singleton_clauses:362
[Probing] implications and bool_or (work_done=31558).
[MaxClique] Merged 5177(10757 literals) into 4947(10417 literals)
at_most_ones. time=0.02165s
[AllDiffInference] #different=8 #cliques=0 #size=0 time=0.0648558s
[DetectDuplicateConstraints] #duplicates=593 #without_enforcements=53
time=0.0844038s
[DetectDominatedLinearConstraints] #relevant_constraints=90 #work_done=947
#num_inclusions=11 #num_redundant=10 time=0.00806398s
[ProcessSetPPC] #relevant_constraints=783 #num_inclusions=186 work=9083
time=0.0266318s
[FindBigHorizontalLinearOverlap] #blocks=0 #saved_nz=0 #linears=4
#work_done=46/1e+09 time=0.0049856s
[FindBigVerticalLinearOverlap] #blocks=0 #nz_reduction=0 #work_done=13664
time=0.00586663s
[MergeClauses] #num_collisions=16 #num_merges=16 #num_saved_literals=32
work=710/100000000 time=0.0132695s
[SAT presolve] num removable Booleans: 317777 / 322327
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:723 literals:1678 vars:642 one_side_vars:454
simple_definition:109 singleton_clauses:0
[SAT presolve] [0.0017627s] clauses:661 literals:1519 vars:642
one_side_vars:454 simple_definition:119 singleton_clauses:0
[SAT presolve] [0.00949869s] clauses:641 literals:1477 vars:632
one_side_vars:456 simple_definition:109 singleton_clauses:0
[Probing] implications and bool_or (work_done=10708).
[MaxClique] Merged 522(1147 literals) into 386(979 literals) at_most_ones.
time=0.0183601s
[AllDiffInference] #different=3 #cliques=0 #size=0 time=0.0669139s
[DetectDuplicateConstraints] #duplicates=63 #without_enforcements=52
time=0.0867184s
[DetectDominatedLinearConstraints] #relevant_constraints=80 #work_done=808
#num_inclusions=1 #num_redundant=0 time=0.00930203s
[ProcessSetPPC] #relevant_constraints=538 #num_inclusions=69 work=5809
time=0.0314859s
[FindBigHorizontalLinearOverlap] #blocks=0 #saved_nz=0 #linears=3
#work_done=41/1e+09 time=0.00428981s
[FindBigVerticalLinearOverlap] #blocks=0 #nz_reduction=0 #work_done=12003
time=0.00513726s
[MergeClauses] #num_collisions=13 #num_merges=13 #num_saved_literals=26
work=534/100000000 time=0.0137932s
[SAT presolve] num removable Booleans: 317939 / 322327
[SAT presolve] num trivial clauses: 0
[SAT presolve] [0s] clauses:301 literals:782 vars:346 one_side_vars:246
simple_definition:63 singleton_clauses:0
[SAT presolve] [0.0016307s] clauses:274 literals:728 vars:346
one_side_vars:246 simple_definition:64 singleton_clauses:0
[SAT presolve] [0.00983137s] clauses:274 literals:728 vars:346
one_side_vars:246 simple_definition:64 singleton_clauses:0
[Probing] implications and bool_or (work_done=9101).
[MaxClique] Merged 160(415 literals) into 159(421 literals) at_most_ones.
time=0.0190469s
[AllDiffInference] #different=3 #cliques=0 #size=0 time=0.0666784s
[DetectDuplicateConstraints] #duplicates=1 #without_enforcements=52
time=0.0856812s
[DetectDominatedLinearConstraints] #relevant_constraints=80 #work_done=808
#num_inclusions=1 #num_redundant=0 time=0.00835218s
[ProcessSetPPC] #relevant_constraints=499 #num_inclusions=34 work=4933
time=0.0355717s
[FindBigHorizontalLinearOverlap] #blocks=0 #saved_nz=0 #linears=3
#work_done=41/1e+09 time=0.00382808s
[FindBigVerticalLinearOverlap] #blocks=0 #nz_reduction=0 #work_done=11989
time=0.00510274s
[MergeClauses] #num_collisions=13 #num_merges=13 #num_saved_literals=26
work=534/100000000 time=0.0123504s
[ExpandObjective] #propagations=0 #entries=2078 #tight_variables=741
#tight_constraints=219 #expands=51 #issues=0 time=0.0146865s
3 affine relations still in the model.
Presolve summary:

9495 affine relations were detected.
rule 'TODO dual: add implied bound' was applied 1914 times.
rule 'TODO dual: make linear1 equiv' was applied 1662 times.
rule 'TODO dual: only one blocking constraint?' was applied 6167
times.
rule 'TODO dual: only one blocking enforced constraint?' was applied
4575 times.
rule 'TODO dual: only one unspecified blocking constraint?' was
applied 69 times.
rule 'TODO dual: tighten at most one' was applied 84 times.
rule 'TODO duplicate: identical constraint with different
enforcements' was applied 157 times.
rule 'TODO linear2: contains a Boolean.' was applied 2738 times.
rule 'TODO variables: only used in linear1.' was applied 648 times.
rule 'affine: fixed' was applied 36 times.
rule 'affine: new relation' was applied 9495 times.
rule 'at_most_one: dominated singleton' was applied 1 time.
rule 'at_most_one: empty or all false' was applied 557 times.
rule 'at_most_one: removed literals' was applied 1995 times.
rule 'at_most_one: resolved two constraints with opposite literal'
was applied 44 times.
rule 'at_most_one: satisfied' was applied 3395 times.
rule 'at_most_one: singleton' was applied 6 times.
rule 'at_most_one: size one' was applied 1991 times.
rule 'at_most_one: transformed into max clique.' was applied 3 times.
rule 'at_most_one: x and not(x)' was applied 43 times.
rule 'bool_and: always false' was applied 9960 times.
rule 'bool_and: cannot be enforced' was applied 22 times.
rule 'bool_and: fixed literals' was applied 10182 times.
rule 'bool_and: non-reified.' was applied 21931 times.
rule 'bool_and: removed duplicate literal' was applied 1 time.
rule 'bool_and: x => not x' was applied 5 times.
rule 'bool_and: x => x' was applied 3016 times.
rule 'bool_or: always true' was applied 16836 times.
rule 'bool_or: fixed literals' was applied 5204 times.
rule 'bool_or: implications' was applied 9047 times.
rule 'bool_or: only one literal' was applied 93281 times.
rule 'bool_or: removed enforcement literal' was applied 158 times.
rule 'bool_or: singleton' was applied 2342 times.
rule 'deductions: 338042 stored' was applied 1 time.
rule 'deductions: reduced variable domain' was applied 10 times.
rule 'domination: fixed to lb.' was applied 35 times.
rule 'domination: in exactly one' was applied 43 times.
rule 'domination: in implication' was applied 18 times.
rule 'domination: reduced ub.' was applied 7 times.
rule 'dual: add implication' was applied 140 times.
rule 'dual: affine relation' was applied 17 times.
rule 'dual: enforced equivalence' was applied 1238 times.
rule 'dual: fix variable' was applied 1209 times.
rule 'dual: make encoding equiv' was applied 1779 times.
rule 'dual: reduced domain' was applied 492 times.
rule 'duplicate: merged rhs of linear constraint' was applied 8
times.
rule 'duplicate: removed constraint' was applied 657 times.
rule 'enforcement: can never be true' was applied 24 times.
rule 'enforcement: false literal' was applied 92888 times.
rule 'enforcement: literal not used' was applied 4869 times.
rule 'enforcement: literal with unique direction' was applied 3
times.
rule 'enforcement: true literal' was applied 176246 times.
rule 'exactly_one: removed literals' was applied 5324 times.
rule 'exactly_one: satisfied' was applied 2570 times.
rule 'exactly_one: simplified objective' was applied 14 times.
rule 'exactly_one: singleton' was applied 27 times.
rule 'exactly_one: size one' was applied 294 times.
rule 'exactly_one: size two' was applied 1694 times.
rule 'exactly_one: x and not(x)' was applied 934 times.
rule 'incompatible linear: add implication' was applied 85 times.
rule 'int_abs: converted to equality' was applied 262 times.
rule 'int_abs: fixed expression' was applied 9 times.
rule 'int_abs: fixed target' was applied 12 times.
rule 'int_abs: propagate domain from abs(x) to x' was applied 6
times.
rule 'int_abs: propagate domain from x to abs(x)' was applied 235
times.
rule 'int_abs: store abs(x) == y' was applied 289 times.
rule 'int_abs: unused target' was applied 6 times.
rule 'int_div: always true' was applied 330 times.
rule 'int_div: linearize positive division with a constant divisor'
was applied 181 times.
rule 'int_div: rewrite to equality' was applied 146 times.
rule 'int_div: target and divisor are fixed' was applied 26 times.
rule 'int_div: target has been fixed by propagating X / cte' was
applied 162 times.
rule 'int_div: updated domain of target in target = X / cte' was
applied 177 times.
rule 'int_prod: constant product' was applied 148 times.
rule 'int_prod: divide product by constant factor' was applied 1
time.
rule 'int_prod: expression is constant.' was applied 10 times.
rule 'int_prod: linearize product by constant.' was applied 147
times.
rule 'int_prod: reduced target domain.' was applied 388 times.
rule 'int_prod: removed constant expressions.' was applied 412 times.
rule 'lin_max: all Booleans.' was applied 42 times.
rule 'lin_max: always satisfied' was applied 24 times.
rule 'lin_max: converted to equality' was applied 598 times.
rule 'lin_max: fixed target and all booleans' was applied 3 times.
rule 'lin_max: reduced expression domain.' was applied 189 times.
rule 'lin_max: removed exprs' was applied 874 times.
rule 'lin_max: target domain reduced' was applied 1936 times.
rule 'lin_max: unused affine target' was applied 7 times.
rule 'lin_max: x = max(x, ...)' was applied 309 times.
rule 'linear inclusion: redundant included constraint' was applied 6
times.
rule 'linear inclusion: subset + singleton is equality' was applied
4 times.
rule 'linear1: always true' was applied 31 times.
rule 'linear1: is boolean implication' was applied 2017 times.
rule 'linear1: remove abs from abs(x) in domain' was applied 444
times.
rule 'linear1: transformed to implication' was applied 21041 times.
rule 'linear1: without enforcement' was applied 40622 times.
rule 'linear2: Boolean with one feasible value.' was applied 40
times.
rule 'linear2: contains a Boolean.' was applied 87 times.
rule 'linear2: implied ax + by = cte has only one solution' was
applied 388 times.
rule 'linear: always true' was applied 130027 times.
rule 'linear: coefficient strenghtening.' was applied 63 times.
rule 'linear: divide by GCD' was applied 34358 times.
rule 'linear: empty' was applied 8295 times.
rule 'linear: enforcement literal in expression' was applied 1348
times.
rule 'linear: extracted enforcement literal' was applied 27 times.
rule 'linear: fixed or dup variables' was applied 127519 times.
rule 'linear: infeasible' was applied 70076 times.
rule 'linear: negative clause' was applied 2 times.
rule 'linear: negative equal one' was applied 27 times.
rule 'linear: only two odd Booleans in equality' was applied 2 times.
rule 'linear: positive clause' was applied 1 time.
rule 'linear: positive equal one' was applied 20 times.
rule 'linear: reduce rhs with DP' was applied 8 times.
rule 'linear: reduced variable domains' was applied 55728 times.
rule 'linear: reduced variable domains in derived constraint' was
applied 2 times.
rule 'linear: remapped using affine relations' was applied 130651
times.
rule 'linear: remove irrelevant part' was applied 11 times.
rule 'linear: simplified rhs' was applied 195688 times.
rule 'linear: simplify using approximate gcd' was applied 36 times.
rule 'linear: singleton column' was applied 19 times.
rule 'linear: small Boolean expression' was applied 44 times.
rule 'linear: variable substitution 0' was applied 61 times.
rule 'linear: variable substitution 1' was applied 65 times.
rule 'linear: variable substitution 2' was applied 33 times.
rule 'linear: variable substitution 3' was applied 23 times.
rule 'objective: expanded via tight equality' was applied 51 times.
rule 'objective: shifted cost with exactly ones' was applied 35
times.
rule 'objective: variable not used elsewhere' was applied 6 times.
rule 'presolve: 312053 unused variables removed.' was applied 1 time.
rule 'presolve: iteration' was applied 3 times.
rule 'probing: bool_or reduced to implication' was applied 538 times.
rule 'probing: simplified clauses.' was applied 40 times.
rule 'setppc: bool_or in at_most_one.' was applied 113 times.
rule 'setppc: removed dominated constraints' was applied 78 times.
rule 'variables with 2 values: create encoding literal' was applied
368 times.
rule 'variables with 2 values: fixed encoding' was applied 45 times.
rule 'variables with 2 values: merge encoding literals' was applied
153 times.
rule 'variables with 2 values: new affine relation' was applied 706
times.
rule 'variables with 2 values: register other encoding' was applied
73 times.
rule 'variables: add encoding constraint' was applied 1453 times.
rule 'variables: canonicalize affine domain' was applied 271 times.
rule 'variables: canonicalize domain' was applied 297 times.
rule 'variables: detect fully reified value encoding' was applied
134182 times.
rule 'variables: detect half reified value encoding' was applied
285377 times.
rule 'variables: only used in encoding' was applied 1326 times.
rule 'variables: only used in objective and in encoding' was applied
5 times.
rule 'variables: removable enforcement literal' was applied 117
times.

Presolved optimization model 'lns_338_graph_dec_lns': (model_fingerprint:
0x7c6b4c7dee718657)
#Variables: 1'046 (#bools: 162 #ints: 155 in objective)

558 Booleans in [0,1]
179 different domains in [-320,1600] with a largest complexity of 8.
#kAtMostOne: 63 (#literals: 220)
#kBoolAnd: 104 (#enforced: 104 #multi: 6) (#literals: 242)
#kBoolOr: 158 (#literals: 477)
#kExactlyOne: 163 (#literals: 608)
#kIntDiv: 88
#kLinMax: 119 (#expressions: 238)
#kLinear1: 1'162 (#enforced: 1'162)
#kLinear2: 231 (#enforced: 210)
#kLinear3: 46
#kLinearN: 16 (#terms: 93)

Preloading model.
#Bound 5.47s best:-inf next:[2425670,2521860] initial_domain
#Model 5.48s var:1046/1046 constraints:2150/2150
compo:915,22,18,17,13,8,8,7,7,7,...
Starting search at 5.48s with 24 workers.
13 full problem subsolvers: [core, default_lp, lb_tree_search, max_lp,
no_lp, objective_lb_search, objective_shaving_search, probing,
probing_max_lp, pseudo_costs, quick_restart, quick_restart_no_lp,
reduced_costs]
9 first solution subsolvers: [jump, jump_decay_no_rst, jump_decay_perturb,
jump_decay_rnd_on_rst, jump_no_rst, random(2), random_quick_restart(2)]
8 incomplete subsolvers: [feasibility_pump, graph_arc_lns, graph_cst_lns,
graph_dec_lns, graph_var_lns, rins/rens, rnd_cst_lns, rnd_var_lns]
3 helper subsolvers: [neighborhood_helper, synchronization_agent,
update_gap_integral]
#Bound 5.50s best:-inf next:[2425670,2521855] objective_shaving_search
#vars=1047 #csts=2151
#Bound 5.51s best:-inf next:[2425675,2521660] no_lp initial_propagation
#1 https://github.com/google/or-tools/pull/1 5.51s best:2501710
next:[2501715,2521660] no_lp [hint] fixed_bools:0/898
#2 https://github.com/google/or-tools/pull/2 5.51s best:2502235
next:[2502240,2521660] no_lp fixed_bools:0/909
#Bound 5.51s best:2502235 next:[2502240,2517055] objective_lb_search
initial_propagation
#Bound 5.52s best:2502235 next:[2502240,2515295] objective_lb_search
#Bound 5.53s best:2502235 next:[2502240,2513010] objective_lb_search
#Bound 5.54s best:2502235 next:[2502240,2512500] probing
#Bound 5.55s best:2502235 next:[2502240,2512445] probing
#Bound 5.55s best:2502235 next:[2502240,2512395] probing
#3 https://github.com/google/or-tools/pull/3 5.59s best:2502485
next:[2502490,2512395] rnd_cst_lns(d=0.81 s=38 t=0.10 p=1.00 stall=2) [hint]
#Bound 5.60s best:2502485 next:[2502490,2506605] lb_tree_search
initial_propagation
#4 https://github.com/google/or-tools/pull/4 5.67s best:2503235
next:[2503240,2506605] graph_cst_lns(d=0.71 s=49 t=0.10 p=1.00 stall=1)
#Bound 5.70s best:2503235 next:[2503240,2505275] max_lp
#5 https://github.com/google/or-tools/pull/5 5.73s best:2504225
next:[2504230,2505275] graph_var_lns(d=0.71 s=47 t=0.10 p=1.00 stall=1)
#6 https://github.com/google/or-tools/pull/6 5.87s best:2504475
next:[2504480,2505275] rnd_var_lns(d=0.94 s=61 t=0.10 p=1.00 stall=5)
#Bound 5.88s best:2504475 next:[2504480,2504685] lb_tree_search
#Bound 6.04s best:2504475 next:[2504480,2504565] lb_tree_search
#Bound 6.12s best:2504475 next:[2504480,2504515] lb_tree_search
#Done 6.16s lb_tree_search
#Done 6.16s quick_restart_no_lp
#Done 6.16s core
#Done 6.17s probing
Task timing n [ min, max] avg dev time n [ min, max] avg dev dtime
'synchronization_agent': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [
0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'neighborhood_helper': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [
0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'default_lp': 1 [683.95ms, 683.95ms] 683.95ms 0.00ns 683.95ms 1 [ 8.45ms,
8.45ms] 8.45ms 0.00ns 8.45ms
'no_lp': 1 [683.75ms, 683.75ms] 683.75ms 0.00ns 683.75ms 1 [ 94.19ms,
94.19ms] 94.19ms 0.00ns 94.19ms
'max_lp': 1 [693.80ms, 693.80ms] 693.80ms 0.00ns 693.80ms 0 [ 0.00ns,
0.00ns] 0.00ns 0.00ns 0.00ns
'core': 1 [681.68ms, 681.68ms] 681.68ms 0.00ns 681.68ms 1 [ 36.26ms,
36.26ms] 36.26ms 0.00ns 36.26ms
'reduced_costs': 1 [686.55ms, 686.55ms] 686.55ms 0.00ns 686.55ms 1 [
10.77ms, 10.77ms] 10.77ms 0.00ns 10.77ms
'pseudo_costs': 1 [687.65ms, 687.65ms] 687.65ms 0.00ns 687.65ms 1 [
5.40ms, 5.40ms] 5.40ms 0.00ns 5.40ms
'quick_restart': 1 [684.95ms, 684.95ms] 684.95ms 0.00ns 684.95ms 1 [
9.98ms, 9.98ms] 9.98ms 0.00ns 9.98ms
'quick_restart_no_lp': 1 [680.67ms, 680.67ms] 680.67ms 0.00ns 680.67ms 1 [
24.91ms, 24.91ms] 24.91ms 0.00ns 24.91ms
'lb_tree_search': 1 [686.22ms, 686.22ms] 686.22ms 0.00ns 686.22ms 0 [
0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
'objective_lb_search': 1 [684.68ms, 684.68ms] 684.68ms 0.00ns 684.68ms 1 [
21.23ms, 21.23ms] 21.23ms 0.00ns 21.23ms
'probing': 1 [687.29ms, 687.29ms] 687.29ms 0.00ns 687.29ms 1 [ 11.54ms,
11.54ms] 11.54ms 0.00ns 11.54ms
'probing_max_lp': 1 [692.73ms, 692.73ms] 692.73ms 0.00ns 692.73ms 1 [
6.94ms, 6.94ms] 6.94ms 0.00ns 6.94ms
'objective_shaving_search': 7 [ 15.79ms, 179.69ms] 96.67ms 50.13ms
676.68ms 6 [233.48us, 287.13us] 260.21us 20.29us 1.56ms
'feasibility_pump': 8 [ 9.63ms, 57.77ms] 37.09ms 13.71ms 296.73ms 7 [
5.98ms, 11.33ms] 6.78ms 1.86ms 47.49ms
'rins/rens': 8 [ 13.48ms, 87.72ms] 41.53ms 27.43ms 332.27ms 6 [ 31.77us,
579.05us] 237.38us 214.70us 1.42ms
'rnd_var_lns': 7 [ 10.25ms, 143.14ms] 56.81ms 44.54ms 397.67ms 6 [ 8.11us,
5.55ms] 1.19ms 2.02ms 7.16ms
'rnd_cst_lns': 7 [ 12.01ms, 173.67ms] 74.97ms 58.38ms 524.79ms 7
[439.40ns, 3.56ms] 997.88us 1.48ms 6.99ms
'graph_var_lns': 7 [ 8.48ms, 313.29ms] 210.81ms 102.20ms 1.48s 7 [ 9.70us,
14.90ms] 7.02ms 4.86ms 49.16ms
'graph_arc_lns': 7 [ 4.32ms, 610.04ms] 300.57ms 235.86ms 2.10s 4
[834.40ns, 84.69ms] 22.56ms 35.93ms 90.25ms
'graph_cst_lns': 7 [ 43.44ms, 500.29ms] 163.66ms 152.11ms 1.15s 5
[201.60us, 38.27ms] 8.17ms 15.05ms 40.86ms
'graph_dec_lns': 7 [ 8.58ms, 373.58ms] 97.50ms 116.94ms 682.51ms 6 [
21.38us, 15.14ms] 2.79ms 5.53ms 16.77ms
'update_gap_integral': 0 [ 0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns 0 [
0.00ns, 0.00ns] 0.00ns 0.00ns 0.00ns
Search stats Bools Conflicts Branches Restarts BoolPropag IntegerPropag
'default_lp': 873 121 1'955 1'699 25'697 65'591
'no_lp': 943 6'511 10'367 1'697 589'453 1'270'902
'max_lp': 909 0 1'690 1'690 11'537 26'613
'core': 1'308 287 51'662 2'182 260'320 475'349
'reduced_costs': 961 8 1'909 1'691 12'493 29'745
'pseudo_costs': 961 7 1'910 1'691 12'491 29'627
'quick_restart': 876 93 2'103 1'701 21'097 53'812
'quick_restart_no_lp': 1'021 1'479 12'183 1'839 171'622 477'818
'lb_tree_search': 909 0 1'696 1'690 11'540 26'666
'objective_lb_search': 874 414 2'304 1'694 60'477 169'833
'probing': 876 95 2'002 1'719 24'230 59'100
'probing_max_lp': 961 6 1'908 1'691 12'920 30'478
LNS stats Improv/Calls Closed Difficulty TimeLimit
'rins/rens': 0/8 88% 0.96 0.10
'rnd_var_lns': 1/7 100% 0.97 0.10
'rnd_cst_lns': 1/7 100% 0.97 0.10
'graph_var_lns': 4/7 86% 0.94 0.10
'graph_arc_lns': 3/7 43% 0.53 0.10
'graph_cst_lns': 3/7 57% 0.78 0.10
'graph_dec_lns': 1/7 86% 0.94 0.10
Solutions (6) Num Rank
'graph_cst_lns': 1 [4,4]
'graph_var_lns': 1 [5,5]
'no_lp': 2 [1,2]
'rnd_cst_lns': 1 [3,3]
'rnd_var_lns': 1 [6,6]
Objective bounds Num
'initial_domain': 1
'lb_tree_search': 4
'max_lp': 1
'no_lp': 1
'objective_lb_search': 3
'objective_shaving_search': 1
'probing': 3
Solution repositories Added Queried Ignored Synchro
'feasible solutions': 44 107 3 33
'lp solutions': 6 8 0 3
'pump': 0 0
Improving bounds shared Num
'core': 10
'default_lp': 77
'max_lp': 1
'no_lp': 5
'objective_lb_search': 22
'quick_restart': 9
'quick_restart_no_lp': 12
'reduced_costs': 145
Clauses shared Num
'core': 10
'no_lp': 2
'probing': 26
'quick_restart': 1
'quick_restart_no_lp': 4
F1027 15:47:57.454898 37648 cp_model_solver.cc:4380] Check failed:
SolutionIsFeasible( model_proto,
std::vector<int64_t>(response->solution().begin(),
response->solution().end()), mapping_proto, &postsolve_mapping) postsolved
solution
*** Check failure stack trace: ***
@ 00007FF62D59A3F9 (unknown)
@ 00007FF62D0FD262 (unknown)
@ 00007FF62D19E617 (unknown)
@ 00007FF62D19DD7A (unknown)
@ 00007FF62D10D647 (unknown)
@ 00007FF62D0A9D02 (unknown)
@ 00007FF62DDC6AF8 (unknown)
@ 00007FFB98887614 (unknown)
@ 00007FFB993026B1 (unknown)
I've appended three more pb files, which on my side cause a similar error
in sat_runner; and, also the compiled fzn. In the most recent run I tried,
it crashed after finding 24 solutions:
minizinc --json-stream --push-working-directory C:/b_v4.0
--param-file-no-push C:/Users/v/AppData/Local/Temp/mzn_YPLBGj.mpc
--pop-working-directory C:/b_v4.0/full_model_v402.mzn
C:/b_v4.0/example_data_2023_10_27T06_00_00.dzn
...
CompilePass: Flatten with
'c:\MiniZinc\or-tools_x64_VisualStudio2022_cpp_v9.7.2996\share\minizinc\ortools'
library ...

You are receiving this because you were assigned.Message ID:
@.***>

I can reproduce it from the fzn. Thanks

Thank you.  I thought I might be flagging something you already addressed.

Thanks again for the report.
This was a nasty one.


Avoid plaintext configuration of password

I don't know any better solution that works with homebridge at the moment. Do you have a recommendation?

Maybe we can look at the oAuth based authentication provided by the Neato Developer accounts, along with the use of Neato SDK.

I used the existing npm library "node-botvac" for the neato communication because I have no time to develop one on my own atm. That library sadly does not support oAuth yet. If you want to dedicate some spare time that would be awesome. The author of the library accepts pull requests.

It seems like node-botvac now supports oauth tokens: https://github.com/Pmant/node-botvac/commit/4ec89aefe3527985aef4fb59d73a4f176f0a9385


Hackathon submission state buttons are visually confusing

The admin hackathon show page contains buttons to transition the state of a hackathon submission (Approve, Reject, and Hold for Review). It's a bit confusing because all the buttons appear at once (similar to https://github.com/hackclub/hackathons-backend/issues/401)

We should hide certain buttons depending on the current state. For example, approve -> approve should not be a valid state transition; thus, we should hide the approve button if the current state is approved.
---
title: Hackathon Submission State Diagram
---
stateDiagram-v2
    [*] --> Pending
    Pending --> Approved
    Pending --> Rejected
    Approved --> Pending: Hold for Review
    Rejected --> Pending: Hold for Review

Those buttons should be disabled, but they're not showing up visually for some reason.


Linearization adjustment

Could you please explain the purpose of the adjustment present in https://github.com/alexliniger/MPCC/blob/master/Matlab/DiscretizedLinearizedModel.m#L54-L62. Thanks

The issue is that the model has a singularity at v_x = 0, which is clear when you look at the slip angle definition. This results in the errors even if the car is driving very slow.
For the miniature race car application, this is not a bit issue since the cars are nearly never driving slow. To still avoid issues when starting, I added this statement.
The if loop does two things:

if the car is driving slower than 0.5 m/s, v_y, r, and delta are set zero for the linearization, which corresponds to assuming small steering angles and slip angles (linear tire forces).
if the car is even driving slower than 0.3 m/s, additionally the forward velocity is set to 0.3.

This is a hack and if driving slow is important I suggest using a kinematic car model. Or the mixed kinematic-dynamic model proposed in the AMZ Driverless paper.
Best,
Alex

Thank you, that clear things up.


st_folium map update after add_to(m)

Hi! Im trying to apply superior interactivity of st_folium module to get data on map according the screen bounds but the original st_folium map wont show the added layer when the code reruns. Not sure if this is an issue at all or am I just doing something wrong here (still quite newbie in python&streamlit..). Something related to reruns? How could/should I workaround here? 🙏
See test & code: https://share.streamlit.io/teemuja/st_folium_test/main/app1.py

Well probably doable with session_state way so this was more "lack-of-streamlit-know-how -issue" than an issue for st_folium.. Will close this.

Agreed. Definitely doable with session_state.


Autocompletion doesn't work for Relm4

Hi, I am trying to get the auto-completion work in my editors (vscode, nvim, or gnome-builder).
Although all other crates get showed in general (include Gtk4), but entries are not shown if I add Relm4 in the code.
I have these versions:

rustup: 1.24.3
cargo: 1.61.0
rust-analyzer (bin): rust-analyzer 0.0.0 (https://github.com/rust-lang/rust-analyzer/commit/427061da19723f2206fe4dcb175c9c43b9a6193d 2022-06-19)
rust-analyzer (vscode insider extension): v0.3.1099

It seems like the indexing gets well done during the project loading as below.

This might not be a well written report. Please let me know if I can share anything else.

I guess the autocompletion doesn't work well with macros...
https://github.com/intellij-rust/intellij-rust/issues/2755


Creation of groups via comma separated list does not seem to work

Destination server: Ubuntu 18:04 LTS.
When trying to create group membership via this module, error messages like:
groupadd: '['users', 'sudo']' is not a valid group name\n are shown.
I tried adding the comma separated list with all the groups multiple ways, but it always reverts to this error, looking to me like Ansible is not understanding the format of the comma separated input. There is no example in the documentation stating the correct input format. and i have too little experience with ansible yet, to be able to reverse engineer this.
My apologies for this.

Thanks for reporting this bug.
It's fixed.


Update docker configuration

Docker configuration was created when tyr has run on thorntail. Update the configuration for quarkus

Fixed in #165


Pear channel/domain doesn't exist anymore

When trying to add the PEAR channel from pear.kotowicz.net, the domain doesn't exist anymore.

Hello. I've created a fork with updated building and installation instructions.
The package still works correctly even with PHP 7.


Replacing a DataFrame column doesn't work

using System.IO;
using System.Net.Http;

string housingPath = "housing.csv";
if (!File.Exists(housingPath))
{
    var contents = new HttpClient()
        .GetStringAsync("https://raw.githubusercontent.com/ageron/handson-ml2/master/datasets/housing/housing.csv").Result;

    File.WriteAllText("housing.csv", contents);
}

var housingData = DataFrame.ReadCsv(housingPath);

housingData["population"] = housingData["population"] > 500;

throws an exception:
System.ArgumentException: Table already contains a column called population
   at Microsoft.Data.DataFrameTable.SetColumn(Int32 columnIndex, BaseColumn column)
   at Microsoft.Data.DataFrame.set_Item(String columnName, BaseColumn value)
   at Submission#19.<<Initialize>>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.CodeAnalysis.Scripting.ScriptExecutionState.RunSubmissionsAsync[TResult](ImmutableArray`1 precedingExecutors, Func`2 currentExecutor, StrongBox`1 exceptionHolderOpt, Func`2 catchExceptionOpt, CancellationToken cancellationToken)

Fixed with https://github.com/dotnet/corefxlab/pull/2740

Hmmm, let me try it locally

oops


Create SECURITY.md

The first security policy is now in place.

:tada: This PR is included in version 6.2.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Change Readme links to point to codemirror-vim repo

Since Obsidian now uses CM 6 and codemirror-vim rather than the vim code built into CM 5, links for the demo, issues and PR have been updated to point to the codemirror-vim repo rather than the CM 5 docs.

Thank you!


[question] opening dialogs without textfield

Is it possible to use the modal dialog pickers without the text field? I'd like to trigger a data picker dialog on button click. I looked at the guide in the documentation to programmatically opening the dialog, but it's just triggering the dialog from the text field.

hi @laurie71
could you provide fiddle? i'm struggling to custom TextField


Updating an offer gives Failure Notification

Describe the bug
When updating an offer an error is displayed although it has been updated
To Reproduce
Steps to reproduce the behavior:

Select an offer in the overview view
Click the edit button
Update the offer
Save the offer
Observe the error

Expected behavior
A successful update should be reflected as such
Additional context
This might be related to issue #320 or #325

solved in #337


docs(community): add nest logo

@aglover, @danielpeach FYI

Received a different image from nest, closing this and will submit a new one


Restore changelog for 4.0.4

Description
Something strange happened and we lost the changelog for v4.0.4.
Checklist:

[x] Securely signed commits

Oh, damn, I bet that's related to me prepping the user guide for release on the 4.0.4 release. The old admin scripts would reset that. All the more reason we need to get the remaining pieces of userguide automation in place before the next release :)
Glad you caught this and were able to fix. Sorry about that.


TypeError: init() takes at least 3 positional arguments (2 given)

When I was training ava dataset, the following error occurred. How should I solve it?

I have also encountered this problem. Have you solved it?


[BUG] - Many component styles break when adding custom colours to tailwind

NextUI Version
2.x
Describe the bug
Multiple NextUI visual styles break when adding a custom colour to tailwind's config, for example:
import {nextui} from '@nextui-org/theme'

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    './pages/**/*.{js,ts,jsx,tsx,mdx}',
    './components/**/*.{js,ts,jsx,tsx,mdx}',
    './app/**/*.{js,ts,jsx,tsx,mdx}',
    './node_modules/@nextui-org/theme/dist/**/*.{js,ts,jsx,tsx}'
  ],

  // Everything is fine here:
  // theme: {
  //   extend: {},
  // },

  // With this styles break
  theme: {
    colors: {
      'my-gray': '#4A4A4A',
    },
    extend: {}
  },

  darkMode: "class",
  plugins: [nextui()],
}

With colour enabled the menu button is invisible and inputs are broken:

With basic config everything is fine:

Your Example Website or App
https://github.com/Nick-Lucas/nextui-nextjs-custom-colors-broken
Steps to Reproduce the Bug or Issue

Start a project using the nextui nextjs starter here: https://github.com/nextui-org/next-app-template
Add a custom color to the tailwind config
Breaks

Expected behavior
Custom extensions to tailwind work
Screenshots or Videos
No response
Operating System Version
macOS
Browser
Chrome

Nevermind, after a day of head-scratching, finally realised these are meant to go inside the extends: { colors: {} } object rather than at the root level


No leather type under animal stats or misc.

The newest update is supposed to allow us to show leather type in the wildlife tab but it is not available in the list of stats.

0763655


added list_namespaces.  Fixes #165

This PR adds list_namespaces(), which pretty-prints the set of available namespaces.

As part of this, I think it might be useful to shorten the description fields of namespaces wherever possible to keep things readable.  What do yall think?


Rewrite webapp maven plugin documentation

Rewrite webapp maven plugin documentation
Update web app sample doc, add more appsettings config

Codecov Report

Merging #580 into develop will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #580   +/-   ##
========================================
  Coverage    35.58%   35.58%
========================================
  Files           72       72
  Lines         2785     2785
  Branches       374      374
========================================
  Hits           991      991
  Misses        1723     1723
  Partials        71       71

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update acc9230...4979fa0. Read the comment docs.

I don't read all details but focus on the beginning part and new goal. @Matthew-Dong , do you want to have a review since those contents will be synced up to docs? Thank you.


Error with bash process substitution on Linux

Version(s)
1.0.0-RC1
Describe the bug
To Reproduce
Getting the following when trying to use process substitution on Linux (didn't try yet on other distributions than the AWS Linux I'm using right now)
$ scala-cli <(echo 'println("Hello")')
[error]  /proc/self/fd/11: unrecognized source type (expected .scala or .sc extension, or a directory).
If /proc/self/fd/11 is meant to be treated as a script, add a shebang header in its top line.
  #!/usr/bin/env -S scala-cli shebang
When a shebang header is provided, the script can then be run with the 'shebang' sub-command, even if no file extension is present.
  scala-cli shebang /proc/self/fd/11

Expected behaviour
Like for me on macOS, Scala CLI should compile and run the snippet it gets from process substitution:
$ scala-cli  <(echo 'println("Hello")')
Compiling project (Scala 3.2.2, JVM)
Compiled project (Scala 3.2.2, JVM)
Hello

-e works fine as a workaround though


[Feature Request] Add translation option to add language for Next and prev buttons.

I was wondering is there any option to add i18n translation to at least translate buttons next and previous. Of course I can try to do it on my own. I know I can hardcode this oj file, but you know that this approach is not something that I want to achieve. Besides adding a language file is much easier for average user.
Originally posted by @sysadmin-info in https://github.com/anvithks/hugo-embed-pdf-shortcode/discussions/24#discussioncomment-5377101

I was wondering is there any option to add i18n translation to at least translate buttons next and previous. Of course I can try to do it on my own. I know I can hardcode this oj file, but you know that this approach is not something that I want to achieve. Besides adding a language file is much easier for average user.
Originally posted by @sysadmin-info in #24 (comment)

The solution is quite simple. All you have to do is to create a i18n directory inside your plugin, where README.md is located. Then put inside the i18n directory file en.toml, pl.toml, fr.toml etc. for each language.
Example content of en.toml
[embed-pdf-next]
other = "Next"

[embed-pdf-prev]
other = "Previous"

Example content of pl.toml
[embed-pdf-next]
other = "Następna"

[embed-pdf-prev]
other = "Poprzednia"

Then in your file embed-pdf.html inside the shortcodes directory you have to change Next and Previous to this:
        <button id="pdf-prev-{{ substr (.Get "url" | md5) 0 8 }}">{{ i18n "embed-pdf-prev" }}</button>
        <button id="pdf-next-{{ substr (.Get "url" | md5) 0 8 }}">{{ i18n "embed-pdf-next" }}</button>

Would you be able to raise a PR for this solution? I can test it out.

The problem is that I have no idea how to raise a PR. I already tested it on my side and it is working as expected.

The problem is that I have no idea how to raise a PR. I already tested it on my side and it is working as expected.

Sure. No worries .
Let me check how it's done and will push these changes


images

Hi,
Could you please give me the images from the code? Thank you

Greetings!
Sry for a long-time reply!
I have updated some test data and maybe you can check them.
Thanks for your mail and have a nice day!
Best!

From: andrean123 @.>
Sent: Saturday, July 30, 2022 0:20
To: Yoooohan/A-cloud-detection-method-based-on-feature-fusion-via-PCA @.>
Cc: Subscribed @.***>
Subject: [Yoooohan/A-cloud-detection-method-based-on-feature-fusion-via-PCA] images (Issue #2)
Hi,
Could you please give me the images from the code? Thank you
—
Reply to this email directly, view it on GitHubhttps://github.com/Yoooohan/A-cloud-detection-method-based-on-feature-fusion-via-PCA/issues/2, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AYITZ7PCB27JHAK5HCQNLQDVWSURPANCNFSM55CSHVMA.
You are receiving this because you are subscribed to this thread.Message ID: @.***>