From marcel.taeumel@hpi.de Thu Dec 2 13:08:46 2021 From: Marcel Taeumel To: squeak-dev@lists.squeakfoundation.org Subject: [squeak-dev] PSA | Slow .changes access | Real-time protection in Windows Defender Date: Thu, 02 Dec 2021 14:08:31 +0100 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4355846750816762067==" --===============4355846750816762067== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi all -- Provided that you have a .changes file that is bigger than a couple of bytes = (here: ~200 MiB), you might experience a serious lag (here: ~5 seconds) when: - Starting the .image - Evaluating some do-its (or print-its) - Saving a method All operations that typically read from or write to the .changes file. The Windows Defender's "real-time protection service" seems to monitor file a= ccess. Whatever triggers it, the defender might try to get exclusive read acc= ess to a file. Then it scans the last bytes and if it finds something strange= , it will continue, eventually scanning THE ENTIRE FILE! So, what is "something strange"? Well, try to evaluate this: '' size. Now, depending on the size of your .changes file, the Windows Defender will b= egin to scan the entire file for more such patterns. Note that the Defender w= ill never complain or blacklist that file. It is just curious for the moment. Why is the Defender able to get exclusive read access on a do-it? Take a look= at SmalltalkImage >> #forceChangesToDisk. There, you can see that we close a= nd re-open the .changes file. That's exactly the time when the Windows Defend= er kicks in. Avoid closing that file, and you will not experience any lag. Try to save a method with such contents. You will be able to observe the same= amount of extra lag. Why is regular read access during code browsing not affected? Because we alre= ady have the open file handle to the .changes and .sources files. The Defende= r seems to need exclusive read access. In my experience, this happened, for e= xample, during VM/image startup. (Note that this has nothing to do with the Defender sending stuff to Microsof= t via Internet. I did all the tests offline. No Ethernet connection. No WiFi.) *** What can we do about it? Different approaches work: - Save a method (or do-it sth.) to add about 1000 bytes of uninteresting cont= ent to the .changes file; then everything is fast again - Shrink your .changes file via #condenseChanges (and don't forget to save yo= ur image afterwards!!) to speed up the Defender's scan - Disable the "real-time protection service" in the Windows settings (not rec= ommended) - Avoid strange content in your source code (or do-its) - Do not close the file so often. #primFlush: is not affected. Best, Marcel --===============4355846750816762067== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGRpdiBpZD0iX19NYWlsYmlyZFN0eWxlQ29udGVudCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDtm b250LWZhbWlseTogQXJpYWw7Y29sb3I6ICMwMDAwMDA7dGV4dC1hbGlnbjogbGVmdCIgZGlyPSJs dHIiPjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5IaSBhbGwgLS08L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPlByb3ZpZGVk IHRoYXQgeW91IGhhdmUgYSAuY2hhbmdlcyBmaWxlIHRoYXQgaXMgYmlnZ2VyIHRoYW4gYSBjb3Vw bGUgb2YgYnl0ZXMgKGhlcmU6IH4yMDAgTWlCKSwgeW91IG1pZ2h0IGV4cGVyaWVuY2UgYSBzZXJp b3VzIGxhZyAoaGVyZTogfjUgc2Vjb25kcykgd2hlbjo8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBz dHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBz dHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gU3RhcnRpbmcgdGhlIC5pbWFnZTwvc3Bhbj48 L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+LSBFdmFsdWF0aW5n IHNvbWUgZG8taXRzIChvciBwcmludC1pdHMpPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4tIFNhdmluZyBhIG1ldGhvZDwvc3Bhbj48L2Rpdj48ZGl2 PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2 PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+QWxsIG9wZXJhdGlvbnMgdGhhdCB0 eXBpY2FsbHkgcmVhZCBmcm9tIG9yIHdyaXRlIHRvIHRoZSAuY2hhbmdlcyBmaWxlLjwvc3Bhbj48 L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48 L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+VGhlIFdpbmRvd3Mg RGVmZW5kZXIncyAicmVhbC10aW1lIHByb3RlY3Rpb24gc2VydmljZSIgc2VlbXMgdG8gbW9uaXRv ciBmaWxlIGFjY2Vzcy4gV2hhdGV2ZXIgdHJpZ2dlcnMgaXQsIHRoZSBkZWZlbmRlciBtaWdodCB0 cnkgdG8gZ2V0IGV4Y2x1c2l2ZSByZWFkIGFjY2VzcyB0byBhIGZpbGUuIFRoZW4gaXQgc2NhbnMg dGhlIGxhc3QgYnl0ZXMgYW5kIGlmIGl0IGZpbmRzIHNvbWV0aGluZyBzdHJhbmdlLCBpdCB3aWxs IGNvbnRpbnVlLCBldmVudHVhbGx5IHNjYW5uaW5nIFRIRSBFTlRJUkUgRklMRSE8L3NwYW4+PC9k aXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9k aXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPlNvLCB3aGF0IGlzICJz b21ldGhpbmcgc3RyYW5nZSI/IFdlbGwsIHRyeSB0byBldmFsdWF0ZSB0aGlzOjwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+JyZsdDthIGhyZWY9Imh0 dHBzOi8vPC9zcGFuPnd3dy5taWNyb3NvZnQuY29tIiZndDsmbHQ7L2EmZ3Q7JyBzaXplLjwvZGl2 PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2 PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5Ob3csIGRlcGVuZGluZyBv biB0aGUgc2l6ZSBvZiB5b3VyIC5jaGFuZ2VzIGZpbGUsIHRoZSBXaW5kb3dzIERlZmVuZGVyIHdp bGwgYmVnaW4gdG8gc2NhbiB0aGUgZW50aXJlIGZpbGUgZm9yIG1vcmUgc3VjaCBwYXR0ZXJucy4g Tm90ZSB0aGF0IHRoZSBEZWZlbmRlciB3aWxsIG5ldmVyIGNvbXBsYWluIG9yIGJsYWNrbGlzdCB0 aGF0IGZpbGUuIEl0IGlzIGp1c3QgY3VyaW91cyBmb3IgdGhlIG1vbWVudC48L3NwYW4+PC9kaXY+ PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+ PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPldoeSBpcyB0aGUgRGVmZW5k ZXIgYWJsZSB0byBnZXQgZXhjbHVzaXZlIHJlYWQgYWNjZXNzIG9uIGEgZG8taXQ/IFRha2UgYSBs b29rIGF0IFNtYWxsdGFsa0ltYWdlICZndDsmZ3Q7ICNmb3JjZUNoYW5nZXNUb0Rpc2suIFRoZXJl LCB5b3UgY2FuIHNlZSB0aGF0IHdlIGNsb3NlIGFuZCByZS1vcGVuIHRoZSAuY2hhbmdlcyBmaWxl LiBUaGF0J3MgZXhhY3RseSB0aGUgdGltZSB3aGVuIHRoZSBXaW5kb3dzIERlZmVuZGVyIGtpY2tz IGluLiBBdm9pZCBjbG9zaW5nIHRoYXQgZmlsZSwgYW5kIHlvdSB3aWxsIG5vdCBleHBlcmllbmNl IGFueSBsYWcuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMz M3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMz M3B4Ij5UcnkgdG8gc2F2ZSBhIG1ldGhvZCB3aXRoIHN1Y2ggY29udGVudHMuIFlvdSB3aWxsIGJl IGFibGUgdG8gb2JzZXJ2ZSB0aGUgc2FtZSBhbW91bnQgb2YgZXh0cmEgbGFnLjwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+V2h5IGlzIHJlZ3VsYXIg cmVhZCBhY2Nlc3MgZHVyaW5nIGNvZGUgYnJvd3Npbmcgbm90IGFmZmVjdGVkPyBCZWNhdXNlIHdl IGFscmVhZHkgaGF2ZSB0aGUgb3BlbiBmaWxlIGhhbmRsZSB0byB0aGUgLmNoYW5nZXMgYW5kIC5z b3VyY2VzIGZpbGVzLiBUaGUgRGVmZW5kZXIgc2VlbXMgdG8gbmVlZCBleGNsdXNpdmUgcmVhZCBh Y2Nlc3MuIEluIG15IGV4cGVyaWVuY2UsIHRoaXMgaGFwcGVuZWQsIGZvciBleGFtcGxlLCBkdXJp bmcgVk0vaW1hZ2Ugc3RhcnR1cC48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPihOb3RlIHRoYXQgdGhpcyBoYXMgbm90aGluZyB0byBkbyB3aXRoIHRo ZSBEZWZlbmRlciBzZW5kaW5nIHN0dWZmIHRvIE1pY3Jvc29mdCB2aWEgSW50ZXJuZXQuIEkgZGlk IGFsbCB0aGUgdGVzdHMgb2ZmbGluZS4gTm8gRXRoZXJuZXQgY29ubmVjdGlvbi4gTm8gV2lGaS4p PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+ PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4qKio8 L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48 L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPldoYXQg Y2FuIHdlIGRvIGFib3V0IGl0PyBEaWZmZXJlbnQgYXBwcm9hY2hlcyB3b3JrOjwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rp dj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+LSBTYXZlIGEgbWV0aG9k IChvciBkby1pdCBzdGguKSB0byBhZGQgYWJvdXQgMTAwMCBieXRlcyBvZiB1bmludGVyZXN0aW5n IGNvbnRlbnQgdG8gdGhlIC5jaGFuZ2VzIGZpbGU7IHRoZW4gZXZlcnl0aGluZyBpcyBmYXN0IGFn YWluPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4t IFNocmluayB5b3VyIC5jaGFuZ2VzIGZpbGUgdmlhICNjb25kZW5zZUNoYW5nZXMgKGFuZCBkb24n dCBmb3JnZXQgdG8gc2F2ZSB5b3VyIGltYWdlIGFmdGVyd2FyZHMhISkgdG8gc3BlZWQgdXAgdGhl IERlZmVuZGVyJ3Mgc2Nhbjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDEzLjMzMzNweCI+LSBEaXNhYmxlIHRoZSAicmVhbC10aW1lIHByb3RlY3Rpb24gc2VydmljZSIg aW4gdGhlIFdpbmRvd3Mgc2V0dGluZ3MgKG5vdCByZWNvbW1lbmRlZCk8L3NwYW4+PC9kaXY+PGRp dj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gQXZvaWQgc3RyYW5nZSBjb250 ZW50IGluIHlvdXIgc291cmNlIGNvZGUgKG9yIGRvLWl0cyk8L3NwYW4+PC9kaXY+PGRpdj48c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gRG8gbm90IGNsb3NlIHRoZSBmaWxlIHNv IG9mdGVuLiAjcHJpbUZsdXNoOiBpcyBub3QgYWZmZWN0ZWQuPC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNw YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5CZXN0LDwvc3Bhbj48L2Rpdj48ZGl2Pjxz cGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+TWFyY2VsPC9zcGFuPjwvZGl2PjxkaXYg Y2xhc3M9Im1iX3NpZyI+PC9kaXY+PC9kaXY+ --===============4355846750816762067==-- From marcel.taeumel@hpi.de Thu Dec 2 13:31:01 2021 From: Marcel Taeumel To: squeak-dev@lists.squeakfoundation.org Subject: Re: [squeak-dev] PSA | Slow .changes access | Real-time protection in Windows Defender Date: Thu, 02 Dec 2021 14:30:48 +0100 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6070696282837847046==" --===============6070696282837847046== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Oh, this do-it seems to be enough to trigger the Windows Defender: '' size Best, Marcel Am 02.12.2021 14:08:31 schrieb Marcel Taeumel : Hi all -- Provided that you have a .changes file that is bigger than a couple of bytes = (here: ~200 MiB), you might experience a serious lag (here: ~5 seconds) when: - Starting the .image - Evaluating some do-its (or print-its) - Saving a method All operations that typically read from or write to the .changes file. The Windows Defender's "real-time protection service" seems to monitor file a= ccess. Whatever triggers it, the defender might try to get exclusive read acc= ess to a file. Then it scans the last bytes and if it finds something strange= , it will continue, eventually scanning THE ENTIRE FILE! So, what is "something strange"? Well, try to evaluate this: '' size. Now, depending on the size of your .changes file, the Windows Defender will b= egin to scan the entire file for more such patterns. Note that the Defender w= ill never complain or blacklist that file. It is just curious for the moment. Why is the Defender able to get exclusive read access on a do-it? Take a look= at SmalltalkImage >> #forceChangesToDisk. There, you can see that we close a= nd re-open the .changes file. That's exactly the time when the Windows Defend= er kicks in. Avoid closing that file, and you will not experience any lag. Try to save a method with such contents. You will be able to observe the same= amount of extra lag. Why is regular read access during code browsing not affected? Because we alre= ady have the open file handle to the .changes and .sources files. The Defende= r seems to need exclusive read access. In my experience, this happened, for e= xample, during VM/image startup. (Note that this has nothing to do with the Defender sending stuff to Microsof= t via Internet. I did all the tests offline. No Ethernet connection. No WiFi.) *** What can we do about it? Different approaches work: - Save a method (or do-it sth.) to add about 1000 bytes of uninteresting cont= ent to the .changes file; then everything is fast again - Shrink your .changes file via #condenseChanges (and don't forget to save yo= ur image afterwards!!) to speed up the Defender's scan - Disable the "real-time protection service" in the Windows settings (not rec= ommended) - Avoid strange content in your source code (or do-its) - Do not close the file so often. #primFlush: is not affected. Best, Marcel --===============6070696282837847046== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGJvZHk+PGRpdiBpZD0iX19NYWlsYmlyZFN0eWxlQ29udGVudCIgc3R5bGU9ImZvbnQtc2l6ZTog MTBwdDtmb250LWZhbWlseTogQXJpYWw7Y29sb3I6ICMwMDAwMDA7dGV4dC1hbGlnbjogbGVmdCIg ZGlyPSJsdHIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2gsIHRo aXMgZG8taXQgc2VlbXMgdG8gYmUgZW5vdWdoIHRvIHRyaWdnZXIgdGhlIFdpbmRvd3MgRGVmZW5k ZXI6PGRpdj48YnI+PC9kaXY+PGRpdj4nJmx0Oy9hJmd0Oycgc2l6ZTwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+QmVzdCw8L2Rpdj48ZGl2Pk1hcmNlbDwvZGl2PjxkaXYgY2xhc3M9Im1iX3NpZyI+ PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9J2hpc3RvcnlfY29udGFpbmVyJyB0eXBlPSdjaXRlJyBz dHlsZT0nYm9yZGVyLWxlZnQtc3R5bGU6c29saWQ7Ym9yZGVyLXdpZHRoOjFweDsgbWFyZ2luLXRv cDoyMHB4OyBtYXJnaW4tbGVmdDowcHg7cGFkZGluZy1sZWZ0OjEwcHg7Jz4KICAgICAgICAgICAg ICAgICAgICAgICAgPHAgc3R5bGU9J2NvbG9yOiAjQUFBQUFBOyBtYXJnaW4tdG9wOiAxMHB4Oyc+ QW0gMDIuMTIuMjAyMSAxNDowODozMSBzY2hyaWViIE1hcmNlbCBUYWV1bWVsICZsdDttYXJjZWwu dGFldW1lbEBocGkuZGUmZ3Q7OjwvcD48ZGl2IHN0eWxlPSdmb250LWZhbWlseTpBcmlhbCxIZWx2 ZXRpY2Esc2Fucy1zZXJpZic+PGRpdiBpZD0iX19NYWlsYmlyZFN0eWxlQ29udGVudCIgc3R5bGU9 ImZvbnQtc2l6ZTogMTBwdDtmb250LWZhbWlseTogQXJpYWw7Y29sb3I6ICMwMDAwMDA7dGV4dC1h bGlnbjogbGVmdCIgZGlyPSJsdHIiPjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMz M3B4Ij5IaSBhbGwgLS08L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx My4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx My4zMzMzcHgiPlByb3ZpZGVkIHRoYXQgeW91IGhhdmUgYSAuY2hhbmdlcyBmaWxlIHRoYXQgaXMg YmlnZ2VyIHRoYW4gYSBjb3VwbGUgb2YgYnl0ZXMgKGhlcmU6IH4yMDAgTWlCKSwgeW91IG1pZ2h0 IGV4cGVyaWVuY2UgYSBzZXJpb3VzIGxhZyAoaGVyZTogfjUgc2Vjb25kcykgd2hlbjo8L3NwYW4+ PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+ PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gU3RhcnRpbmcg dGhlIC5pbWFnZTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMz MzNweCI+LSBFdmFsdWF0aW5nIHNvbWUgZG8taXRzIChvciBwcmludC1pdHMpPC9zcGFuPjwvZGl2 PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4tIFNhdmluZyBhIG1ldGhv ZDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJy Pjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+QWxs IG9wZXJhdGlvbnMgdGhhdCB0eXBpY2FsbHkgcmVhZCBmcm9tIG9yIHdyaXRlIHRvIHRoZSAuY2hh bmdlcyBmaWxlLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMz MzNweCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMz MzNweCI+VGhlIFdpbmRvd3MgRGVmZW5kZXIncyAicmVhbC10aW1lIHByb3RlY3Rpb24gc2Vydmlj ZSIgc2VlbXMgdG8gbW9uaXRvciBmaWxlIGFjY2Vzcy4gV2hhdGV2ZXIgdHJpZ2dlcnMgaXQsIHRo ZSBkZWZlbmRlciBtaWdodCB0cnkgdG8gZ2V0IGV4Y2x1c2l2ZSByZWFkIGFjY2VzcyB0byBhIGZp bGUuIFRoZW4gaXQgc2NhbnMgdGhlIGxhc3QgYnl0ZXMgYW5kIGlmIGl0IGZpbmRzIHNvbWV0aGlu ZyBzdHJhbmdlLCBpdCB3aWxsIGNvbnRpbnVlLCBldmVudHVhbGx5IHNjYW5uaW5nIFRIRSBFTlRJ UkUgRklMRSE8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMz cHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMz cHgiPlNvLCB3aGF0IGlzICJzb21ldGhpbmcgc3RyYW5nZSI/IFdlbGwsIHRyeSB0byBldmFsdWF0 ZSB0aGlzOjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+JyZsdDthIGhyZWY9Imh0dHBzOi8vPC9zcGFuPnd3dy5taWNyb3NvZnQuY29tIiZndDsmbHQ7 L2EmZ3Q7JyBzaXplLjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4 Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4 Ij5Ob3csIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB5b3VyIC5jaGFuZ2VzIGZpbGUsIHRoZSBX aW5kb3dzIERlZmVuZGVyIHdpbGwgYmVnaW4gdG8gc2NhbiB0aGUgZW50aXJlIGZpbGUgZm9yIG1v cmUgc3VjaCBwYXR0ZXJucy4gTm90ZSB0aGF0IHRoZSBEZWZlbmRlciB3aWxsIG5ldmVyIGNvbXBs YWluIG9yIGJsYWNrbGlzdCB0aGF0IGZpbGUuIEl0IGlzIGp1c3QgY3VyaW91cyBmb3IgdGhlIG1v bWVudC48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgi Pjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgi PldoeSBpcyB0aGUgRGVmZW5kZXIgYWJsZSB0byBnZXQgZXhjbHVzaXZlIHJlYWQgYWNjZXNzIG9u IGEgZG8taXQ/IFRha2UgYSBsb29rIGF0IFNtYWxsdGFsa0ltYWdlICZndDsmZ3Q7ICNmb3JjZUNo YW5nZXNUb0Rpc2suIFRoZXJlLCB5b3UgY2FuIHNlZSB0aGF0IHdlIGNsb3NlIGFuZCByZS1vcGVu IHRoZSAuY2hhbmdlcyBmaWxlLiBUaGF0J3MgZXhhY3RseSB0aGUgdGltZSB3aGVuIHRoZSBXaW5k b3dzIERlZmVuZGVyIGtpY2tzIGluLiBBdm9pZCBjbG9zaW5nIHRoYXQgZmlsZSwgYW5kIHlvdSB3 aWxsIG5vdCBleHBlcmllbmNlIGFueSBsYWcuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5UcnkgdG8gc2F2ZSBhIG1ldGhvZCB3aXRoIHN1Y2ggY29u dGVudHMuIFlvdSB3aWxsIGJlIGFibGUgdG8gb2JzZXJ2ZSB0aGUgc2FtZSBhbW91bnQgb2YgZXh0 cmEgbGFnLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+V2h5IGlzIHJlZ3VsYXIgcmVhZCBhY2Nlc3MgZHVyaW5nIGNvZGUgYnJvd3Npbmcgbm90IGFm ZmVjdGVkPyBCZWNhdXNlIHdlIGFscmVhZHkgaGF2ZSB0aGUgb3BlbiBmaWxlIGhhbmRsZSB0byB0 aGUgLmNoYW5nZXMgYW5kIC5zb3VyY2VzIGZpbGVzLiBUaGUgRGVmZW5kZXIgc2VlbXMgdG8gbmVl ZCBleGNsdXNpdmUgcmVhZCBhY2Nlc3MuIEluIG15IGV4cGVyaWVuY2UsIHRoaXMgaGFwcGVuZWQs IGZvciBleGFtcGxlLCBkdXJpbmcgVk0vaW1hZ2Ugc3RhcnR1cC48L3NwYW4+PC9kaXY+PGRpdj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48 c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPihOb3RlIHRoYXQgdGhpcyBoYXMgbm90 aGluZyB0byBkbyB3aXRoIHRoZSBEZWZlbmRlciBzZW5kaW5nIHN0dWZmIHRvIE1pY3Jvc29mdCB2 aWEgSW50ZXJuZXQuIEkgZGlkIGFsbCB0aGUgdGVzdHMgb2ZmbGluZS4gTm8gRXRoZXJuZXQgY29u bmVjdGlvbi4gTm8gV2lGaS4pPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTMuMzMzM3B4Ij4qKio8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMy4zMzMzcHgiPldoYXQgY2FuIHdlIGRvIGFib3V0IGl0PyBEaWZmZXJlbnQgYXBwcm9hY2hl cyB3b3JrOjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+LSBTYXZlIGEgbWV0aG9kIChvciBkby1pdCBzdGguKSB0byBhZGQgYWJvdXQgMTAwMCBieXRl cyBvZiB1bmludGVyZXN0aW5nIGNvbnRlbnQgdG8gdGhlIC5jaGFuZ2VzIGZpbGU7IHRoZW4gZXZl cnl0aGluZyBpcyBmYXN0IGFnYWluPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTogMTMuMzMzM3B4Ij4tIFNocmluayB5b3VyIC5jaGFuZ2VzIGZpbGUgdmlhICNjb25kZW5z ZUNoYW5nZXMgKGFuZCBkb24ndCBmb3JnZXQgdG8gc2F2ZSB5b3VyIGltYWdlIGFmdGVyd2FyZHMh ISkgdG8gc3BlZWQgdXAgdGhlIERlZmVuZGVyJ3Mgc2Nhbjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+LSBEaXNhYmxlIHRoZSAicmVhbC10aW1lIHBy b3RlY3Rpb24gc2VydmljZSIgaW4gdGhlIFdpbmRvd3Mgc2V0dGluZ3MgKG5vdCByZWNvbW1lbmRl ZCk8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0g QXZvaWQgc3RyYW5nZSBjb250ZW50IGluIHlvdXIgc291cmNlIGNvZGUgKG9yIGRvLWl0cyk8L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gRG8gbm90 IGNsb3NlIHRoZSBmaWxlIHNvIG9mdGVuLiAjcHJpbUZsdXNoOiBpcyBub3QgYWZmZWN0ZWQuPC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5CZXN0LDwv c3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+TWFyY2Vs PC9zcGFuPjwvZGl2PjxkaXYgY2xhc3M9Im1iX3NpZyI+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9j a3F1b3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+PC9i b2R5Pg== --===============6070696282837847046==-- From eliot.miranda@gmail.com Thu Dec 2 15:19:30 2021 From: Eliot Miranda To: squeak-dev@lists.squeakfoundation.org Subject: Re: [squeak-dev] PSA | Slow .changes access | Real-time protection in Windows Defender Date: Thu, 02 Dec 2021 07:19:27 -0800 Message-ID: <114894EE-1493-4884-86D6-2CD226E6C1DC@gmail.com> In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3505034120840424823==" --===============3505034120840424823== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Marcel, > On Dec 2, 2021, at 5:31 AM, Marcel Taeumel wrote: >=20 > =EF=BB=BF > Oh, this do-it seems to be enough to trigger the Windows Defender: >=20 > '' size >=20 > Best, > Marcel >> Am 02.12.2021 14:08:31 schrieb Marcel Taeumel : >>=20 >> Hi all -- >>=20 >> Provided that you have a .changes file that is bigger than a couple of byt= es (here: ~200 MiB), you might experience a serious lag (here: ~5 seconds) wh= en: >>=20 >> - Starting the .image >> - Evaluating some do-its (or print-its) >> - Saving a method >>=20 >> All operations that typically read from or write to the .changes file. >>=20 >> The Windows Defender's "real-time protection service" seems to monitor fil= e access. Whatever triggers it, the defender might try to get exclusive read = access to a file. Then it scans the last bytes and if it finds something stra= nge, it will continue, eventually scanning THE ENTIRE FILE! >>=20 >> So, what is "something strange"? Well, try to evaluate this: >>=20 >> '' size. >>=20 >> Now, depending on the size of your .changes file, the Windows Defender wil= l begin to scan the entire file for more such patterns. Note that the Defende= r will never complain or blacklist that file. It is just curious for the mome= nt. >>=20 >> Why is the Defender able to get exclusive read access on a do-it? Take a l= ook at SmalltalkImage >> #forceChangesToDisk. There, you can see that we clos= e and re-open the .changes file. That's exactly the time when the Windows Def= ender kicks in. Avoid closing that file, and you will not experience any lag. >>=20 >> Try to save a method with such contents. You will be able to observe the s= ame amount of extra lag. >>=20 >> Why is regular read access during code browsing not affected? Because we a= lready have the open file handle to the .changes and .sources files. The Defe= nder seems to need exclusive read access. In my experience, this happened, fo= r example, during VM/image startup. >>=20 >> (Note that this has nothing to do with the Defender sending stuff to Micro= soft via Internet. I did all the tests offline. No Ethernet connection. No Wi= Fi.) >>=20 >> *** >>=20 >> What can we do about it? Different approaches work: >>=20 >> - Save a method (or do-it sth.) to add about 1000 bytes of uninteresting c= ontent to the .changes file; then everything is fast again >> - Shrink your .changes file via #condenseChanges (and don't forget to save= your image afterwards!!) to speed up the Defender's scan >> - Disable the "real-time protection service" in the Windows settings (not = recommended) Much better is to turn it off for a single file: https://support.microsoft.com/en-us/windows/add-an-exclusion-to-windows-secur= ity-811816c0-4dfd-af4a-47e4-c301afe13b26 Go to Start > Settings > Update & Security > Windows Security > Virus & threa= t protection. Under Virus & threat protection settings, select Manage setting= s, and then under Exclusions, select Add or remove exclusions. Select Add an = exclusion, and then select from files, folders, file types, or process. (Me again) now what we really want is some check performed in Windows that ch= ecks Windows Defender=E2=80=99s settings, presumably the registry. eg if an o= peration on the changes file takes too long, or on startup, the image would c= heck if it=E2=80=99s changes file is being monitored and would warn and/or pr= ompt and/or offer to the user to set the exclusion. >> - Avoid strange content in your source code (or do-its) >> - Do not close the file so often. #primFlush: is not affected. >>=20 >> Best, >> Marcel _,,,^..^,,,_ (phone) --===============3505034120840424823== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPjwvaGVhZD48Ym9keSBkaXI9ImF1dG8iPkhpIE1hcmNlbCw8 ZGl2IGRpcj0ibHRyIj48YnI+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+T24gRGVjIDIsIDIwMjEs IGF0IDU6MzEgQU0sIE1hcmNlbCBUYWV1bWVsICZsdDttYXJjZWwudGFldW1lbEBocGkuZGUmZ3Q7 IHdyb3RlOjxicj48YnI+PC9ibG9ja3F1b3RlPjwvZGl2PjxibG9ja3F1b3RlIHR5cGU9ImNpdGUi PjxkaXYgZGlyPSJsdHIiPu+7vzxkaXYgaWQ9Il9fTWFpbGJpcmRTdHlsZUNvbnRlbnQiIHN0eWxl PSJmb250LXNpemU6IDEwcHQ7Zm9udC1mYW1pbHk6IEFyaWFsO2NvbG9yOiAjMDAwMDAwO3RleHQt YWxpZ246IGxlZnQiIGRpcj0ibHRyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE9oLCB0aGlzIGRvLWl0IHNlZW1zIHRvIGJlIGVub3VnaCB0byB0cmlnZ2VyIHRoZSBX aW5kb3dzIERlZmVuZGVyOjxkaXY+PGJyPjwvZGl2PjxkaXY+JyZsdDsvYSZndDsnIHNpemU8L2Rp dj48ZGl2Pjxicj48L2Rpdj48ZGl2PkJlc3QsPC9kaXY+PGRpdj5NYXJjZWw8L2Rpdj48ZGl2IGNs YXNzPSJtYl9zaWciPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJoaXN0b3J5X2NvbnRhaW5lciIg dHlwZT0iY2l0ZSIgc3R5bGU9ImJvcmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDox cHg7IG1hcmdpbi10b3A6MjBweDsgbWFyZ2luLWxlZnQ6MHB4O3BhZGRpbmctbGVmdDoxMHB4OyI+ CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIHN0eWxlPSJjb2xvcjogI0FBQUFBQTsgbWFyZ2lu LXRvcDogMTBweDsiPkFtIDAyLjEyLjIwMjEgMTQ6MDg6MzEgc2NocmllYiBNYXJjZWwgVGFldW1l bCAmbHQ7bWFyY2VsLnRhZXVtZWxAaHBpLmRlJmd0Ozo8L3A+PGRpdiBzdHlsZT0iZm9udC1mYW1p bHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiPjxkaXYgaWQ9Il9fTWFpbGJpcmRTdHlsZUNv bnRlbnQiIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Zm9udC1mYW1pbHk6IEFyaWFsO2NvbG9yOiAj MDAwMDAwO3RleHQtYWxpZ246IGxlZnQiIGRpcj0ibHRyIj48ZGl2PjxzcGFuIHN0eWxlPSJmb250 LXNpemU6IDEzLjMzMzNweCI+SGkgYWxsIC0tPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5Qcm92aWRlZCB0aGF0IHlvdSBoYXZlIGEgLmNoYW5nZXMg ZmlsZSB0aGF0IGlzIGJpZ2dlciB0aGFuIGEgY291cGxlIG9mIGJ5dGVzIChoZXJlOiB+MjAwIE1p QiksIHlvdSBtaWdodCBleHBlcmllbmNlIGEgc2VyaW91cyBsYWcgKGhlcmU6IH41IHNlY29uZHMp IHdoZW46PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4 Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4 Ij4tIFN0YXJ0aW5nIHRoZSAuaW1hZ2U8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOiAxMy4zMzMzcHgiPi0gRXZhbHVhdGluZyBzb21lIGRvLWl0cyAob3IgcHJpbnQtaXRz KTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+LSBT YXZpbmcgYSBtZXRob2Q8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx My4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAx My4zMzMzcHgiPkFsbCBvcGVyYXRpb25zIHRoYXQgdHlwaWNhbGx5IHJlYWQgZnJvbSBvciB3cml0 ZSB0byB0aGUgLmNoYW5nZXMgZmlsZS48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOiAxMy4zMzMzcHgiPlRoZSBXaW5kb3dzIERlZmVuZGVyJ3MgInJlYWwtdGltZSBwcm90 ZWN0aW9uIHNlcnZpY2UiIHNlZW1zIHRvIG1vbml0b3IgZmlsZSBhY2Nlc3MuIFdoYXRldmVyIHRy aWdnZXJzIGl0LCB0aGUgZGVmZW5kZXIgbWlnaHQgdHJ5IHRvIGdldCBleGNsdXNpdmUgcmVhZCBh Y2Nlc3MgdG8gYSBmaWxlLiBUaGVuIGl0IHNjYW5zIHRoZSBsYXN0IGJ5dGVzIGFuZCBpZiBpdCBm aW5kcyBzb21ldGhpbmcgc3RyYW5nZSwgaXQgd2lsbCBjb250aW51ZSwgZXZlbnR1YWxseSBzY2Fu bmluZyBUSEUgRU5USVJFIEZJTEUhPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQt c2l6ZTogMTMuMzMzM3B4Ij5Tbywgd2hhdCBpcyAic29tZXRoaW5nIHN0cmFuZ2UiPyBXZWxsLCB0 cnkgdG8gZXZhbHVhdGUgdGhpczo8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPicmbHQ7YSBocmVmPSJodHRwczovLzwvc3Bhbj53d3cubWljcm9zb2Z0 LmNvbSImZ3Q7Jmx0Oy9hJmd0Oycgc2l6ZS48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNp emU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNp emU6IDEzLjMzMzNweCI+Tm93LCBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgeW91ciAuY2hhbmdl cyBmaWxlLCB0aGUgV2luZG93cyBEZWZlbmRlciB3aWxsIGJlZ2luIHRvIHNjYW4gdGhlIGVudGly ZSBmaWxlIGZvciBtb3JlIHN1Y2ggcGF0dGVybnMuIE5vdGUgdGhhdCB0aGUgRGVmZW5kZXIgd2ls bCBuZXZlciBjb21wbGFpbiBvciBibGFja2xpc3QgdGhhdCBmaWxlLiBJdCBpcyBqdXN0IGN1cmlv dXMgZm9yIHRoZSBtb21lbnQuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTMuMzMzM3B4Ij5XaHkgaXMgdGhlIERlZmVuZGVyIGFibGUgdG8gZ2V0IGV4Y2x1c2l2ZSBy ZWFkIGFjY2VzcyBvbiBhIGRvLWl0PyBUYWtlIGEgbG9vayBhdCBTbWFsbHRhbGtJbWFnZSAmZ3Q7 Jmd0OyAjZm9yY2VDaGFuZ2VzVG9EaXNrLiBUaGVyZSwgeW91IGNhbiBzZWUgdGhhdCB3ZSBjbG9z ZSBhbmQgcmUtb3BlbiB0aGUgLmNoYW5nZXMgZmlsZS4gVGhhdCdzIGV4YWN0bHkgdGhlIHRpbWUg d2hlbiB0aGUgV2luZG93cyBEZWZlbmRlciBraWNrcyBpbi4gQXZvaWQgY2xvc2luZyB0aGF0IGZp bGUsIGFuZCB5b3Ugd2lsbCBub3QgZXhwZXJpZW5jZSBhbnkgbGFnLjwvc3Bhbj48L2Rpdj48ZGl2 PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2 PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+VHJ5IHRvIHNhdmUgYSBtZXRob2Qg d2l0aCBzdWNoIGNvbnRlbnRzLiBZb3Ugd2lsbCBiZSBhYmxlIHRvIG9ic2VydmUgdGhlIHNhbWUg YW1vdW50IG9mIGV4dHJhIGxhZy48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPldoeSBpcyByZWd1bGFyIHJlYWQgYWNjZXNzIGR1cmluZyBjb2RlIGJy b3dzaW5nIG5vdCBhZmZlY3RlZD8gQmVjYXVzZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIG9wZW4gZmls ZSBoYW5kbGUgdG8gdGhlIC5jaGFuZ2VzIGFuZCAuc291cmNlcyBmaWxlcy4gVGhlIERlZmVuZGVy IHNlZW1zIHRvIG5lZWQgZXhjbHVzaXZlIHJlYWQgYWNjZXNzLiBJbiBteSBleHBlcmllbmNlLCB0 aGlzIGhhcHBlbmVkLCBmb3IgZXhhbXBsZSwgZHVyaW5nIFZNL2ltYWdlIHN0YXJ0dXAuPC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4oTm90ZSB0aGF0 IHRoaXMgaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB0aGUgRGVmZW5kZXIgc2VuZGluZyBzdHVmZiB0 byBNaWNyb3NvZnQgdmlhIEludGVybmV0LiBJIGRpZCBhbGwgdGhlIHRlc3RzIG9mZmxpbmUuIE5v IEV0aGVybmV0IGNvbm5lY3Rpb24uIE5vIFdpRmkuKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0 eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0 eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+KioqPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5 bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5XaGF0IGNhbiB3ZSBkbyBhYm91dCBpdD8gRGlmZmVy ZW50IGFwcHJvYWNoZXMgd29yazo8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1z aXplOiAxMy4zMzMzcHgiPi0gU2F2ZSBhIG1ldGhvZCAob3IgZG8taXQgc3RoLikgdG8gYWRkIGFi b3V0IDEwMDAgYnl0ZXMgb2YgdW5pbnRlcmVzdGluZyBjb250ZW50IHRvIHRoZSAuY2hhbmdlcyBm aWxlOyB0aGVuIGV2ZXJ5dGhpbmcgaXMgZmFzdCBhZ2Fpbjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+LSBTaHJpbmsgeW91ciAuY2hhbmdlcyBmaWxl IHZpYSAjY29uZGVuc2VDaGFuZ2VzIChhbmQgZG9uJ3QgZm9yZ2V0IHRvIHNhdmUgeW91ciBpbWFn ZSBhZnRlcndhcmRzISEpIHRvIHNwZWVkIHVwIHRoZSBEZWZlbmRlcidzIHNjYW48L3NwYW4+PC9k aXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gRGlzYWJsZSB0aGUg InJlYWwtdGltZSBwcm90ZWN0aW9uIHNlcnZpY2UiIGluIHRoZSBXaW5kb3dzIHNldHRpbmdzIChu b3QgcmVjb21tZW5kZWQpPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rp dj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRpdj48YnI+PC9kaXY+TXVjaCBiZXR0ZXIgaXMgdG8gdHVy biBpdCBvZmYgZm9yIGEgc2luZ2xlIGZpbGU6PGRpdj48YnI+PC9kaXY+PGRpdj48YSBocmVmPSJo dHRwczovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL2FkZC1hbi1leGNsdXNp b24tdG8td2luZG93cy1zZWN1cml0eS04MTE4MTZjMC00ZGZkLWFmNGEtNDdlNC1jMzAxYWZlMTNi MjYiPmh0dHBzOi8vc3VwcG9ydC5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvYWRkLWFuLWV4 Y2x1c2lvbi10by13aW5kb3dzLXNlY3VyaXR5LTgxMTgxNmMwLTRkZmQtYWY0YS00N2U0LWMzMDFh ZmUxM2IyNjwvYT48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjYXJldC1j b2xvcjogcmdiKDc3LCA4MSwgODYpOyBjb2xvcjogcmdiKDc3LCA4MSwgODYpOyBmb250LWZhbWls eTogUm9ib3RvLCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgQXJpYWwsIHNhbnMtc2VyaWY7 IGZvbnQtc2l6ZTogMThweDsgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAs IDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij5HbyB0byBTdGFy dCAmZ3Q7IFNldHRpbmdzICZndDsgVXBkYXRlICZhbXA7IFNlY3VyaXR5ICZndDsgV2luZG93cyBT ZWN1cml0eSAmZ3Q7IFZpcnVzICZhbXA7IHRocmVhdCBwcm90ZWN0aW9uLiBVbmRlciBWaXJ1cyAm YW1wOyB0aHJlYXQgcHJvdGVjdGlvbiBzZXR0aW5ncywgc2VsZWN0IE1hbmFnZSBzZXR0aW5ncywg YW5kIHRoZW4gdW5kZXIgRXhjbHVzaW9ucywgc2VsZWN0IEFkZCBvciByZW1vdmUgZXhjbHVzaW9u cy4gU2VsZWN0IEFkZCBhbiBleGNsdXNpb24sIGFuZCB0aGVuIHNlbGVjdCBmcm9tIGZpbGVzLCBm b2xkZXJzLCBmaWxlIHR5cGVzLCBvciBwcm9jZXNzLjwvc3Bhbj48L2Rpdj48ZGl2Pjxmb250IGNv bG9yPSIjNGQ1MTU2IiBmYWNlPSJSb2JvdG8sIEhlbHZldGljYSBOZXVlLCBBcmlhbCwgc2Fucy1z ZXJpZiIgc2l6ZT0iNCI+PHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoNzcsIDgxLCA4Nik7 IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsgYmFja2dyb3Vu ZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyI+PGJyPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+PGRp dj48Zm9udCBjb2xvcj0iIzRkNTE1NiIgZmFjZT0iUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwgQXJp YWwsIHNhbnMtc2VyaWYiIHNpemU9IjQiPjxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDc3 LCA4MSwgODYpOyAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7 IGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsiPihNZSBhZ2Fpbikgbm93IHdo YXQgd2UgcmVhbGx5IHdhbnQgaXMgc29tZSBjaGVjayBwZXJmb3JtZWQgaW4gV2luZG93cyB0aGF0 IGNoZWNrcyBXaW5kb3dzIERlZmVuZGVy4oCZcyBzZXR0aW5ncywgcHJlc3VtYWJseSB0aGUgcmVn aXN0cnkuIGVnIGlmIGFuIG9wZXJhdGlvbiBvbiB0aGUgY2hhbmdlcyBmaWxlIHRha2VzIHRvbyBs b25nLCBvciBvbiBzdGFydHVwLCB0aGUgaW1hZ2Ugd291bGQgY2hlY2sgaWYgaXTigJlzIGNoYW5n ZXMgZmlsZSBpcyBiZWluZyBtb25pdG9yZWQgYW5kIHdvdWxkIHdhcm4gYW5kL29yIHByb21wdCBh bmQvb3Igb2ZmZXIgdG8gdGhlIHVzZXIgdG8gc2V0IHRoZSBleGNsdXNpb24uPC9zcGFuPjwvZm9u dD48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjNGQ1MTU2IiBmYWNlPSJSb2JvdG8sIEhlbHZldGlj YSBOZXVlLCBBcmlhbCwgc2Fucy1zZXJpZiIgc2l6ZT0iNCI+PHNwYW4gc3R5bGU9ImNhcmV0LWNv bG9yOiByZ2IoNzcsIDgxLCA4Nik7IC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgw LCAwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyI+PGJyPjwv c3Bhbj48L2ZvbnQ+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+PGRpdiBkaXI9Imx0ciI+PGRpdiBp ZD0iX19NYWlsYmlyZFN0eWxlQ29udGVudCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDtmb250LWZh bWlseTogQXJpYWw7Y29sb3I6ICMwMDAwMDA7dGV4dC1hbGlnbjogbGVmdCIgZGlyPSJsdHIiPjxi bG9ja3F1b3RlIGNsYXNzPSJoaXN0b3J5X2NvbnRhaW5lciIgdHlwZT0iY2l0ZSIgc3R5bGU9ImJv cmRlci1sZWZ0LXN0eWxlOnNvbGlkO2JvcmRlci13aWR0aDoxcHg7IG1hcmdpbi10b3A6MjBweDsg bWFyZ2luLWxlZnQ6MHB4O3BhZGRpbmctbGVmdDoxMHB4OyI+PGRpdiBzdHlsZT0iZm9udC1mYW1p bHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiPjxkaXYgaWQ9Il9fTWFpbGJpcmRTdHlsZUNv bnRlbnQiIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Zm9udC1mYW1pbHk6IEFyaWFsO2NvbG9yOiAj MDAwMDAwO3RleHQtYWxpZ246IGxlZnQiIGRpcj0ibHRyIj48ZGl2PjxzcGFuIHN0eWxlPSJmb250 LXNpemU6IDEzLjMzMzNweCI+LSBBdm9pZCBzdHJhbmdlIGNvbnRlbnQgaW4geW91ciBzb3VyY2Ug Y29kZSAob3IgZG8taXRzKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDEzLjMzMzNweCI+LSBEbyBub3QgY2xvc2UgdGhlIGZpbGUgc28gb2Z0ZW4uICNwcmltRmx1c2g6 IGlzIG5vdCBhZmZlY3RlZC48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXpl OiAxMy4zMzMzcHgiPkJlc3QsPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6 ZTogMTMuMzMzM3B4Ij5NYXJjZWw8L3NwYW4+PC9kaXY+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3Rl PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pl8sLCxe Li5eLCwsXyAocGhvbmUpPC9kaXY+PC9ib2R5PjwvaHRtbD4= --===============3505034120840424823==-- From marcel.taeumel@hpi.de Thu Dec 2 15:42:49 2021 From: Marcel Taeumel To: squeak-dev@lists.squeakfoundation.org Subject: Re: [squeak-dev] PSA | Slow .changes access | Real-time protection in Windows Defender Date: Thu, 02 Dec 2021 16:42:36 +0100 Message-ID: In-Reply-To: <114894EE-1493-4884-86D6-2CD226E6C1DC@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1252124453576735849==" --===============1252124453576735849== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi Eliot -- Since it is that easy for a user to add that exclusion ... yes, we might inde= ed check the performance of #forceChangesToDisk and give advice if it takes t= oo long. We had a similar discussion regarding #isLowerPerformance. A relative measure= ment would be nice. In this case, it would be like: "If writing to a new file= takes this long, your #forceChangesToDisk should take that long." Best, Marcel Am 02.12.2021 16:19:41 schrieb Eliot Miranda : Hi Marcel, On Dec 2, 2021, at 5:31 AM, Marcel Taeumel wrote: =EF=BB=BF Oh, this do-it seems to be enough to trigger the Windows Defender: '' size Best, Marcel Am 02.12.2021 14:08:31 schrieb Marcel Taeumel : Hi all -- Provided that you have a .changes file that is bigger than a couple of bytes = (here: ~200 MiB), you might experience a serious lag (here: ~5 seconds) when: - Starting the .image - Evaluating some do-its (or print-its) - Saving a method All operations that typically read from or write to the .changes file. The Windows Defender's "real-time protection service" seems to monitor file a= ccess. Whatever triggers it, the defender might try to get exclusive read acc= ess to a file. Then it scans the last bytes and if it finds something strange= , it will continue, eventually scanning THE ENTIRE FILE! So, what is "something strange"? Well, try to evaluate this: '' size. Now, depending on the size of your .changes file, the Windows Defender will b= egin to scan the entire file for more such patterns. Note that the Defender w= ill never complain or blacklist that file. It is just curious for the moment. Why is the Defender able to get exclusive read access on a do-it? Take a look= at SmalltalkImage >> #forceChangesToDisk. There, you can see that we close a= nd re-open the .changes file. That's exactly the time when the Windows Defend= er kicks in. Avoid closing that file, and you will not experience any lag. Try to save a method with such contents. You will be able to observe the same= amount of extra lag. Why is regular read access during code browsing not affected? Because we alre= ady have the open file handle to the .changes and .sources files. The Defende= r seems to need exclusive read access. In my experience, this happened, for e= xample, during VM/image startup. (Note that this has nothing to do with the Defender sending stuff to Microsof= t via Internet. I did all the tests offline. No Ethernet connection. No WiFi.) *** What can we do about it? Different approaches work: - Save a method (or do-it sth.) to add about 1000 bytes of uninteresting cont= ent to the .changes file; then everything is fast again - Shrink your .changes file via #condenseChanges (and don't forget to save yo= ur image afterwards!!) to speed up the Defender's scan - Disable the "real-time protection service" in the Windows settings (not rec= ommended) Much better is to turn it off for a single file: https://support.microsoft.com/en-us/windows/add-an-exclusion-to-windows-secur= ity-811816c0-4dfd-af4a-47e4-c301afe13b26 [https://support.microsoft.com/en-us= /windows/add-an-exclusion-to-windows-security-811816c0-4dfd-af4a-47e4-c301afe= 13b26] Go to Start > Settings > Update & Security > Windows Security > Virus & threa= t protection. Under Virus & threat protection settings, select Manage setting= s, and then under Exclusions, select Add or remove exclusions. Select Add an = exclusion, and then select from files, folders, file types, or process. (Me again) now what we really want is some check performed in Windows that ch= ecks Windows Defender=E2=80=99s settings, presumably the registry. eg if an o= peration on the changes file takes too long, or on startup, the image would c= heck if it=E2=80=99s changes file is being monitored and would warn and/or pr= ompt and/or offer to the user to set the exclusion. - Avoid strange content in your source code (or do-its) - Do not close the file so often. #primFlush: is not affected. Best, Marcel _,,,^..^,,,_ (phone) --===============1252124453576735849== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGRpdiBpZD0iX19NYWlsYmlyZFN0eWxlQ29udGVudCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDtm b250LWZhbWlseTogQXJpYWw7Y29sb3I6ICMwMDAwMDA7dGV4dC1hbGlnbjogbGVmdCIgZGlyPSJs dHIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGkgRWxpb3QgLS08 ZGl2Pjxicj48L2Rpdj48ZGl2PlNpbmNlIGl0IGlzIHRoYXQgZWFzeSBmb3IgYSB1c2VyIHRvIGFk ZCB0aGF0IGV4Y2x1c2lvbiAuLi4geWVzLCB3ZSBtaWdodCBpbmRlZWQgY2hlY2sgdGhlIHBlcmZv cm1hbmNlIG9mICNmb3JjZUNoYW5nZXNUb0Rpc2sgYW5kIGdpdmUgYWR2aWNlIGlmIGl0IHRha2Vz IHRvbyBsb25nLjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+V2UgaGFkIGEgc2ltaWxhciBkaXNj dXNzaW9uIHJlZ2FyZGluZyAjaXNMb3dlclBlcmZvcm1hbmNlLiBBIHJlbGF0aXZlIG1lYXN1cmVt ZW50IHdvdWxkIGJlIG5pY2UuIEluIHRoaXMgY2FzZSwgaXQgd291bGQgYmUgbGlrZTogIklmIHdy aXRpbmcgdG8gYSBuZXcgZmlsZSB0YWtlcyB0aGlzIGxvbmcsIHlvdXIgI2ZvcmNlQ2hhbmdlc1Rv RGlzayBzaG91bGQgdGFrZSB0aGF0IGxvbmcuIjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+QmVz dCw8L2Rpdj48ZGl2Pk1hcmNlbDwvZGl2PjxkaXYgY2xhc3M9Im1iX3NpZyI+PC9kaXY+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YmxvY2txdW90ZSBjbGFzcz0iaGlz dG9yeV9jb250YWluZXIiIHR5cGU9ImNpdGUiIHN0eWxlPSJib3JkZXItbGVmdC1zdHlsZTogc29s aWQ7Ym9yZGVyLXdpZHRoOiAxcHg7bWFyZ2luLXRvcDogMjBweDttYXJnaW4tbGVmdDogMHB4O3Bh ZGRpbmctbGVmdDogMTBweDttaW4td2lkdGg6IDUwMHB4Ij4KICAgICAgICAgICAgICAgICAgICAg ICAgPHAgc3R5bGU9ImNvbG9yOiAjQUFBQUFBOyBtYXJnaW4tdG9wOiAxMHB4OyI+QW0gMDIuMTIu MjAyMSAxNjoxOTo0MSBzY2hyaWViIEVsaW90IE1pcmFuZGEgJmx0O2VsaW90Lm1pcmFuZGFAZ21h aWwuY29tJmd0Ozo8L3A+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNh bnMtc2VyaWYiPkhpIE1hcmNlbCw8ZGl2IGRpcj0ibHRyIj48YnI+PGJsb2NrcXVvdGUgdHlwZT0i Y2l0ZSIgc3R5bGU9Im1pbi13aWR0aDogNTAwcHgiPk9uIERlYyAyLCAyMDIxLCBhdCA1OjMxIEFN LCBNYXJjZWwgVGFldW1lbCAmbHQ7bWFyY2VsLnRhZXVtZWxAaHBpLmRlJmd0OyB3cm90ZTo8YnI+ PGJyPjwvYmxvY2txdW90ZT48L2Rpdj48YmxvY2txdW90ZSB0eXBlPSJjaXRlIiBzdHlsZT0ibWlu LXdpZHRoOiA1MDBweCI+PGRpdiBkaXI9Imx0ciI+77u/PGRpdiBpZD0iX19NYWlsYmlyZFN0eWxl Q29udGVudCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDtmb250LWZhbWlseTogQXJpYWw7Y29sb3I6 ICMwMDAwMDA7dGV4dC1hbGlnbjogbGVmdCIgZGlyPSJsdHIiPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT2gsIHRoaXMgZG8taXQgc2VlbXMgdG8gYmUgZW5vdWdoIHRv IHRyaWdnZXIgdGhlIFdpbmRvd3MgRGVmZW5kZXI6PGRpdj48YnI+PC9kaXY+PGRpdj4nJmx0Oy9h Jmd0Oycgc2l6ZTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+QmVzdCw8L2Rpdj48ZGl2Pk1hcmNl bDwvZGl2PjxkaXYgY2xhc3M9Im1iX3NpZyI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9Imhpc3Rv cnlfY29udGFpbmVyIiB0eXBlPSJjaXRlIiBzdHlsZT0iYm9yZGVyLWxlZnQtc3R5bGU6IHNvbGlk O2JvcmRlci13aWR0aDogMXB4O21hcmdpbi10b3A6IDIwcHg7bWFyZ2luLWxlZnQ6IDBweDtwYWRk aW5nLWxlZnQ6IDEwcHg7bWluLXdpZHRoOiA1MDBweCI+CiAgICAgICAgICAgICAgICAgICAgICAg IDxwIHN0eWxlPSJjb2xvcjogI0FBQUFBQTsgbWFyZ2luLXRvcDogMTBweDsiPkFtIDAyLjEyLjIw MjEgMTQ6MDg6MzEgc2NocmllYiBNYXJjZWwgVGFldW1lbCAmbHQ7bWFyY2VsLnRhZXVtZWxAaHBp LmRlJmd0Ozo8L3A+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6QXJpYWwsSGVsdmV0aWNhLHNhbnMt c2VyaWYiPjxkaXYgaWQ9Il9fTWFpbGJpcmRTdHlsZUNvbnRlbnQiIHN0eWxlPSJmb250LXNpemU6 IDEwcHQ7Zm9udC1mYW1pbHk6IEFyaWFsO2NvbG9yOiAjMDAwMDAwO3RleHQtYWxpZ246IGxlZnQi IGRpcj0ibHRyIj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+SGkgYWxs IC0tPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48 YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5Q cm92aWRlZCB0aGF0IHlvdSBoYXZlIGEgLmNoYW5nZXMgZmlsZSB0aGF0IGlzIGJpZ2dlciB0aGFu IGEgY291cGxlIG9mIGJ5dGVzIChoZXJlOiB+MjAwIE1pQiksIHlvdSBtaWdodCBleHBlcmllbmNl IGEgc2VyaW91cyBsYWcgKGhlcmU6IH41IHNlY29uZHMpIHdoZW46PC9zcGFuPjwvZGl2PjxkaXY+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4tIFN0YXJ0aW5nIHRoZSAuaW1hZ2U8 L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gRXZh bHVhdGluZyBzb21lIGRvLWl0cyAob3IgcHJpbnQtaXRzKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+LSBTYXZpbmcgYSBtZXRob2Q8L3NwYW4+PC9k aXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3NwYW4+PC9k aXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPkFsbCBvcGVyYXRpb25z IHRoYXQgdHlwaWNhbGx5IHJlYWQgZnJvbSBvciB3cml0ZSB0byB0aGUgLmNoYW5nZXMgZmlsZS48 L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48 L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPlRoZSBX aW5kb3dzIERlZmVuZGVyJ3MgInJlYWwtdGltZSBwcm90ZWN0aW9uIHNlcnZpY2UiIHNlZW1zIHRv IG1vbml0b3IgZmlsZSBhY2Nlc3MuIFdoYXRldmVyIHRyaWdnZXJzIGl0LCB0aGUgZGVmZW5kZXIg bWlnaHQgdHJ5IHRvIGdldCBleGNsdXNpdmUgcmVhZCBhY2Nlc3MgdG8gYSBmaWxlLiBUaGVuIGl0 IHNjYW5zIHRoZSBsYXN0IGJ5dGVzIGFuZCBpZiBpdCBmaW5kcyBzb21ldGhpbmcgc3RyYW5nZSwg aXQgd2lsbCBjb250aW51ZSwgZXZlbnR1YWxseSBzY2FubmluZyBUSEUgRU5USVJFIEZJTEUhPC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5Tbywgd2hh dCBpcyAic29tZXRoaW5nIHN0cmFuZ2UiPyBXZWxsLCB0cnkgdG8gZXZhbHVhdGUgdGhpczo8L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPicmbHQ7YSBo cmVmPSJodHRwczovLzwvc3Bhbj53d3cubWljcm9zb2Z0LmNvbSImZ3Q7Jmx0Oy9hJmd0Oycgc2l6 ZS48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bh bj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+Tm93LCBkZXBl bmRpbmcgb24gdGhlIHNpemUgb2YgeW91ciAuY2hhbmdlcyBmaWxlLCB0aGUgV2luZG93cyBEZWZl bmRlciB3aWxsIGJlZ2luIHRvIHNjYW4gdGhlIGVudGlyZSBmaWxlIGZvciBtb3JlIHN1Y2ggcGF0 dGVybnMuIE5vdGUgdGhhdCB0aGUgRGVmZW5kZXIgd2lsbCBuZXZlciBjb21wbGFpbiBvciBibGFj a2xpc3QgdGhhdCBmaWxlLiBJdCBpcyBqdXN0IGN1cmlvdXMgZm9yIHRoZSBtb21lbnQuPC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFu PjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij5XaHkgaXMgdGhl IERlZmVuZGVyIGFibGUgdG8gZ2V0IGV4Y2x1c2l2ZSByZWFkIGFjY2VzcyBvbiBhIGRvLWl0PyBU YWtlIGEgbG9vayBhdCBTbWFsbHRhbGtJbWFnZSAmZ3Q7Jmd0OyAjZm9yY2VDaGFuZ2VzVG9EaXNr LiBUaGVyZSwgeW91IGNhbiBzZWUgdGhhdCB3ZSBjbG9zZSBhbmQgcmUtb3BlbiB0aGUgLmNoYW5n ZXMgZmlsZS4gVGhhdCdzIGV4YWN0bHkgdGhlIHRpbWUgd2hlbiB0aGUgV2luZG93cyBEZWZlbmRl ciBraWNrcyBpbi4gQXZvaWQgY2xvc2luZyB0aGF0IGZpbGUsIGFuZCB5b3Ugd2lsbCBub3QgZXhw ZXJpZW5jZSBhbnkgbGFnLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6 IDEzLjMzMzNweCI+VHJ5IHRvIHNhdmUgYSBtZXRob2Qgd2l0aCBzdWNoIGNvbnRlbnRzLiBZb3Ug d2lsbCBiZSBhYmxlIHRvIG9ic2VydmUgdGhlIHNhbWUgYW1vdW50IG9mIGV4dHJhIGxhZy48L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPldoeSBpcyBy ZWd1bGFyIHJlYWQgYWNjZXNzIGR1cmluZyBjb2RlIGJyb3dzaW5nIG5vdCBhZmZlY3RlZD8gQmVj YXVzZSB3ZSBhbHJlYWR5IGhhdmUgdGhlIG9wZW4gZmlsZSBoYW5kbGUgdG8gdGhlIC5jaGFuZ2Vz IGFuZCAuc291cmNlcyBmaWxlcy4gVGhlIERlZmVuZGVyIHNlZW1zIHRvIG5lZWQgZXhjbHVzaXZl IHJlYWQgYWNjZXNzLiBJbiBteSBleHBlcmllbmNlLCB0aGlzIGhhcHBlbmVkLCBmb3IgZXhhbXBs ZSwgZHVyaW5nIFZNL2ltYWdlIHN0YXJ0dXAuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9 ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4oTm90ZSB0aGF0IHRoaXMgaGFzIG5vdGhpbmcgdG8gZG8g d2l0aCB0aGUgRGVmZW5kZXIgc2VuZGluZyBzdHVmZiB0byBNaWNyb3NvZnQgdmlhIEludGVybmV0 LiBJIGRpZCBhbGwgdGhlIHRlc3RzIG9mZmxpbmUuIE5vIEV0aGVybmV0IGNvbm5lY3Rpb24uIE5v IFdpRmkuKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNw eCI+KioqPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4 Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4 Ij5XaGF0IGNhbiB3ZSBkbyBhYm91dCBpdD8gRGlmZmVyZW50IGFwcHJvYWNoZXMgd29yazo8L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPjxicj48L3Nw YW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPi0gU2F2ZSBh IG1ldGhvZCAob3IgZG8taXQgc3RoLikgdG8gYWRkIGFib3V0IDEwMDAgYnl0ZXMgb2YgdW5pbnRl cmVzdGluZyBjb250ZW50IHRvIHRoZSAuY2hhbmdlcyBmaWxlOyB0aGVuIGV2ZXJ5dGhpbmcgaXMg ZmFzdCBhZ2Fpbjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEzLjMz MzNweCI+LSBTaHJpbmsgeW91ciAuY2hhbmdlcyBmaWxlIHZpYSAjY29uZGVuc2VDaGFuZ2VzIChh bmQgZG9uJ3QgZm9yZ2V0IHRvIHNhdmUgeW91ciBpbWFnZSBhZnRlcndhcmRzISEpIHRvIHNwZWVk IHVwIHRoZSBEZWZlbmRlcidzIHNjYW48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iZm9u dC1zaXplOiAxMy4zMzMzcHgiPi0gRGlzYWJsZSB0aGUgInJlYWwtdGltZSBwcm90ZWN0aW9uIHNl cnZpY2UiIGluIHRoZSBXaW5kb3dzIHNldHRpbmdzIChub3QgcmVjb21tZW5kZWQpPC9zcGFuPjwv ZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PGRp dj48YnI+PC9kaXY+TXVjaCBiZXR0ZXIgaXMgdG8gdHVybiBpdCBvZmYgZm9yIGEgc2luZ2xlIGZp bGU6PGRpdj48YnI+PC9kaXY+PGRpdj48YSBocmVmPSJodHRwczovL3N1cHBvcnQubWljcm9zb2Z0 LmNvbS9lbi11cy93aW5kb3dzL2FkZC1hbi1leGNsdXNpb24tdG8td2luZG93cy1zZWN1cml0eS04 MTE4MTZjMC00ZGZkLWFmNGEtNDdlNC1jMzAxYWZlMTNiMjYiPmh0dHBzOi8vc3VwcG9ydC5taWNy b3NvZnQuY29tL2VuLXVzL3dpbmRvd3MvYWRkLWFuLWV4Y2x1c2lvbi10by13aW5kb3dzLXNlY3Vy aXR5LTgxMTgxNmMwLTRkZmQtYWY0YS00N2U0LWMzMDFhZmUxM2IyNjwvYT48L2Rpdj48ZGl2Pjxi cj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjYXJldC1jb2xvcjogcmdiKDc3LCA4MSwgODYpO2Nv bG9yOiByZ2IoNzcsIDgxLCA4Nik7Zm9udC1mYW1pbHk6IFJvYm90bywgJnF1b3Q7SGVsdmV0aWNh IE5ldWUmcXVvdDssIEFyaWFsLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZTogMThweDstd2Via2l0LXRh cC1oaWdobGlnaHQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMCk7YmFja2dyb3VuZC1jb2xvcjogcmdi KDI1NSwgMjU1LCAyNTUpIj5HbyB0byBTdGFydCAmZ3Q7IFNldHRpbmdzICZndDsgVXBkYXRlICZh bXA7IFNlY3VyaXR5ICZndDsgV2luZG93cyBTZWN1cml0eSAmZ3Q7IFZpcnVzICZhbXA7IHRocmVh dCBwcm90ZWN0aW9uLiBVbmRlciBWaXJ1cyAmYW1wOyB0aHJlYXQgcHJvdGVjdGlvbiBzZXR0aW5n cywgc2VsZWN0IE1hbmFnZSBzZXR0aW5ncywgYW5kIHRoZW4gdW5kZXIgRXhjbHVzaW9ucywgc2Vs ZWN0IEFkZCBvciByZW1vdmUgZXhjbHVzaW9ucy4gU2VsZWN0IEFkZCBhbiBleGNsdXNpb24sIGFu ZCB0aGVuIHNlbGVjdCBmcm9tIGZpbGVzLCBmb2xkZXJzLCBmaWxlIHR5cGVzLCBvciBwcm9jZXNz Ljwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogIzRkNTE1Njtmb250LWZhbWls eTogUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwgQXJpYWwsIHNhbnMtc2VyaWY7Zm9udC1zaXplOiAx NHB0Ij48c3BhbiBzdHlsZT0iY2FyZXQtY29sb3I6IHJnYig3NywgODEsIDg2KTsgLXdlYmtpdC10 YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAsIDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiBy Z2IoMjU1LCAyNTUsIDI1NSk7Ij48YnI+PC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0 eWxlPSJjb2xvcjogIzRkNTE1Njtmb250LWZhbWlseTogUm9ib3RvLCBIZWx2ZXRpY2EgTmV1ZSwg QXJpYWwsIHNhbnMtc2VyaWY7Zm9udC1zaXplOiAxNHB0Ij48c3BhbiBzdHlsZT0iY2FyZXQtY29s b3I6IHJnYig3NywgODEsIDg2KTsgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiByZ2JhKDAs IDAsIDAsIDApOyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7Ij4oTWUgYWdh aW4pIG5vdyB3aGF0IHdlIHJlYWxseSB3YW50IGlzIHNvbWUgY2hlY2sgcGVyZm9ybWVkIGluIFdp bmRvd3MgdGhhdCBjaGVja3MgV2luZG93cyBEZWZlbmRlcuKAmXMgc2V0dGluZ3MsIHByZXN1bWFi bHkgdGhlIHJlZ2lzdHJ5LiBlZyBpZiBhbiBvcGVyYXRpb24gb24gdGhlIGNoYW5nZXMgZmlsZSB0 YWtlcyB0b28gbG9uZywgb3Igb24gc3RhcnR1cCwgdGhlIGltYWdlIHdvdWxkIGNoZWNrIGlmIGl0 4oCZcyBjaGFuZ2VzIGZpbGUgaXMgYmVpbmcgbW9uaXRvcmVkIGFuZCB3b3VsZCB3YXJuIGFuZC9v ciBwcm9tcHQgYW5kL29yIG9mZmVyIHRvIHRoZSB1c2VyIHRvIHNldCB0aGUgZXhjbHVzaW9uLjwv c3Bhbj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICM0ZDUxNTY7Zm9udC1m YW1pbHk6IFJvYm90bywgSGVsdmV0aWNhIE5ldWUsIEFyaWFsLCBzYW5zLXNlcmlmO2ZvbnQtc2l6 ZTogMTRwdCI+PHNwYW4gc3R5bGU9ImNhcmV0LWNvbG9yOiByZ2IoNzcsIDgxLCA4Nik7IC13ZWJr aXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwKTsgYmFja2dyb3VuZC1jb2xv cjogcmdiKDI1NSwgMjU1LCAyNTUpOyI+PGJyPjwvc3Bhbj48L3NwYW4+PGJsb2NrcXVvdGUgdHlw ZT0iY2l0ZSIgc3R5bGU9Im1pbi13aWR0aDogNTAwcHgiPjxkaXYgZGlyPSJsdHIiPjxkaXYgaWQ9 Il9fTWFpbGJpcmRTdHlsZUNvbnRlbnQiIHN0eWxlPSJmb250LXNpemU6IDEwcHQ7Zm9udC1mYW1p bHk6IEFyaWFsO2NvbG9yOiAjMDAwMDAwO3RleHQtYWxpZ246IGxlZnQiIGRpcj0ibHRyIj48Ymxv Y2txdW90ZSBjbGFzcz0iaGlzdG9yeV9jb250YWluZXIiIHR5cGU9ImNpdGUiIHN0eWxlPSJib3Jk ZXItbGVmdC1zdHlsZTogc29saWQ7Ym9yZGVyLXdpZHRoOiAxcHg7bWFyZ2luLXRvcDogMjBweDtt YXJnaW4tbGVmdDogMHB4O3BhZGRpbmctbGVmdDogMTBweDttaW4td2lkdGg6IDUwMHB4Ij48ZGl2 IHN0eWxlPSJmb250LWZhbWlseTpBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiI+PGRpdiBpZD0i X19NYWlsYmlyZFN0eWxlQ29udGVudCIgc3R5bGU9ImZvbnQtc2l6ZTogMTBwdDtmb250LWZhbWls eTogQXJpYWw7Y29sb3I6ICMwMDAwMDA7dGV4dC1hbGlnbjogbGVmdCIgZGlyPSJsdHIiPjxkaXY+ PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4tIEF2b2lkIHN0cmFuZ2UgY29udGVu dCBpbiB5b3VyIHNvdXJjZSBjb2RlIChvciBkby1pdHMpPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMTMuMzMzM3B4Ij4tIERvIG5vdCBjbG9zZSB0aGUgZmlsZSBzbyBv ZnRlbi4gI3ByaW1GbHVzaDogaXMgbm90IGFmZmVjdGVkLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu IHN0eWxlPSJmb250LXNpemU6IDEzLjMzMzNweCI+QmVzdCw8L3NwYW4+PC9kaXY+PGRpdj48c3Bh biBzdHlsZT0iZm9udC1zaXplOiAxMy4zMzMzcHgiPk1hcmNlbDwvc3Bhbj48L2Rpdj48L2Rpdj48 L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJy PjwvZGl2PjxkaXY+XywsLF4uLl4sLCxfIChwaG9uZSk8L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+ PC9kaXY+ --===============1252124453576735849==-- From tim@rowledge.org Thu Dec 2 19:12:08 2021 From: tim Rowledge To: squeak-dev@lists.squeakfoundation.org Subject: Re: [squeak-dev] PSA | Slow .changes access | Real-time protection in Windows Defender Date: Thu, 02 Dec 2021 11:12:03 -0800 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3842270436031563392==" --===============3842270436031563392== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit > On 2021-12-02, at 5:08 AM, Marcel Taeumel wrote: > > What can we do about it? Different approaches work: There's always the sage advice "Don't. Use. Windows." tim -- tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim Useful random insult:- Understands English as well as any parrot. --===============3842270436031563392==-- From smalltalker2@mac.com Sun Sep 25 04:22:14 2022 From: John Pfersich To: squeak-dev@lists.squeakfoundation.org Subject: Re: [squeak-dev] PSA | Slow .changes access | Real-time protection in Windows Defender Date: Sat, 24 Sep 2022 21:21:59 -0700 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2738897066160920882==" --===============2738897066160920882== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit I know I shouldn’t be replying to a 10 month old entry, but touché Tim. /*—————————————————-*/ Sent from my iPhone https://boincstats.com/signature/-1/user/51616339056/sig.png See https://objectnets.net and https://objectnets.org > On Dec 2, 2021, at 11:12, tim Rowledge wrote: > >  > >> On 2021-12-02, at 5:08 AM, Marcel Taeumel wrote: >> >> What can we do about it? Different approaches work: > > There's always the sage advice "Don't. Use. Windows." > > > tim > -- > tim Rowledge; tim(a)rowledge.org; http://www.rowledge.org/tim > Useful random insult:- Understands English as well as any parrot. > > > --===============2738897066160920882== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0 L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPjwvaGVhZD48Ym9keSBkaXI9ImF1dG8iPkkga25vdyBJIHNo b3VsZG7igJl0IGJlIHJlcGx5aW5nIHRvIGEgMTAgbW9udGggb2xkIGVudHJ5LCBidXQgdG91Y2jD qSBUaW0uJm5ic3A7PGJyPjxicj48ZGl2IGRpcj0ibHRyIj4vKuKAlOKAlOKAlOKAlOKAlOKAlOKA lOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlC0qLzxkaXY+U2VudCBmcm9tIG15IGlQaG9u ZTxkaXY+PGEgaHJlZj0iaHR0cHM6Ly9ib2luY3N0YXRzLmNvbS9zaWduYXR1cmUvLTEvdXNlci81 MTYxNjMzOTA1Ni9zaWcucG5nIj5odHRwczovL2JvaW5jc3RhdHMuY29tL3NpZ25hdHVyZS8tMS91 c2VyLzUxNjE2MzM5MDU2L3NpZy5wbmc8L2E+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iYmFja2dy b3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTsiPlNlZSBodHRwczovL29iamVjdG5l dHMubmV0IGFuZCBodHRwczovL29iamVjdG5ldHMub3JnPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2 PjxkaXYgZGlyPSJsdHIiPjxicj48YmxvY2txdW90ZSB0eXBlPSJjaXRlIj5PbiBEZWMgMiwgMjAy MSwgYXQgMTE6MTIsIHRpbSBSb3dsZWRnZSAmbHQ7dGltQHJvd2xlZGdlLm9yZyZndDsgd3JvdGU6 PGJyPjxicj48L2Jsb2NrcXVvdGU+PC9kaXY+PGJsb2NrcXVvdGUgdHlwZT0iY2l0ZSI+PGRpdiBk aXI9Imx0ciI+77u/PHNwYW4+PC9zcGFuPjxicj48c3Bhbj48L3NwYW4+PGJyPjxibG9ja3F1b3Rl IHR5cGU9ImNpdGUiPjxzcGFuPk9uIDIwMjEtMTItMDIsIGF0IDU6MDggQU0sIE1hcmNlbCBUYWV1 bWVsICZsdDttYXJjZWwudGFldW1lbEBocGkuZGUmZ3Q7IHdyb3RlOjwvc3Bhbj48YnI+PC9ibG9j a3F1b3RlPjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPjxzcGFuPjwvc3Bhbj48YnI+PC9ibG9ja3F1 b3RlPjxibG9ja3F1b3RlIHR5cGU9ImNpdGUiPjxzcGFuPldoYXQgY2FuIHdlIGRvIGFib3V0IGl0 PyBEaWZmZXJlbnQgYXBwcm9hY2hlcyB3b3JrOjwvc3Bhbj48YnI+PC9ibG9ja3F1b3RlPjxzcGFu Pjwvc3Bhbj48YnI+PHNwYW4+VGhlcmUncyBhbHdheXMgdGhlIHNhZ2UgYWR2aWNlICZuYnNwOyJE b24ndC4gVXNlLiBXaW5kb3dzLiI8L3NwYW4+PGJyPjxzcGFuPjwvc3Bhbj48YnI+PHNwYW4+PC9z cGFuPjxicj48c3Bhbj50aW08L3NwYW4+PGJyPjxzcGFuPi0tPC9zcGFuPjxicj48c3Bhbj50aW0g Um93bGVkZ2U7IHRpbUByb3dsZWRnZS5vcmc7IGh0dHA6Ly93d3cucm93bGVkZ2Uub3JnL3RpbTwv c3Bhbj48YnI+PHNwYW4+VXNlZnVsIHJhbmRvbSBpbnN1bHQ6LSBVbmRlcnN0YW5kcyBFbmdsaXNo IGFzIHdlbGwgYXMgYW55IHBhcnJvdC48L3NwYW4+PGJyPjxzcGFuPjwvc3Bhbj48YnI+PHNwYW4+ PC9zcGFuPjxicj48c3Bhbj48L3NwYW4+PGJyPjwvZGl2PjwvYmxvY2txdW90ZT48L2JvZHk+PC9o dG1sPg== --===============2738897066160920882==--