From unknown Thu Mar 28 17:21:25 2024 X-Loop: owner@bugs.x2go.org Subject: Bug#1476: x2goclient interface code needs refactoring to make it more accessible and make improvements easier to implement and test Reply-To: Dave Chamberlin-Kidd , 1476@bugs.x2go.org Resent-From: Dave Chamberlin-Kidd Resent-To: x2go-dev@lists.x2go.org Resent-CC: X2Go Developers X-Loop: owner@bugs.x2go.org Resent-Date: Sun, 07 Jun 2020 15:55:01 +0000 Resent-Message-ID: Resent-Sender: owner@bugs.x2go.org X-X2Go-PR-Message: report 1476 X-X2Go-PR-Package: x2goclient X-X2Go-PR-Keywords: Received: via spool by submit@bugs.x2go.org id=B.15915450125544 (code B); Sun, 07 Jun 2020 15:55:01 +0000 Received: (at submit) by bugs.x2go.org; 7 Jun 2020 15:50:12 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on ymir.das-netzwerkteam.de X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,HTML_MESSAGE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-io1-f47.google.com (mail-io1-f47.google.com [209.85.166.47]) by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id 01E925DAD6 for ; Sun, 7 Jun 2020 17:49:35 +0200 (CEST) Received: by mail-io1-f47.google.com with SMTP id r2so15936992ioo.4 for ; Sun, 07 Jun 2020 08:49:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=ZMel9S6wzUy5POCC0cAMbg5065jWLOdu/7Zo3sVUXNM=; b=TlmQ/ua2dVmDqYQQcaUqSTqb2qPsQxC2brTJJR1InTDECUvkD7cNJ31cAXIZnhGcTN 8/irdKy14XlNrTscja3LljqetBlHKdu+j9OfO9RnqcRLs+TAsO7aoyDTVQRx0ViCDHyM BGLwQgVntqe3UZGvQv/Io17dV+ZhBk710v/GnK4B5RRAKsd5whZpPYlfoRhU+v+S1QQg Sp7NbeyzajJlJ7LozA+wsJIXjGJdwm8zxz7udepe3g3XC8leSFTlvN5RJSbzNqZHCBVL qUQPSXSudZquR0YWB72o8qKnYBpWVTYZOdKzmCgf4zkJbOnwNeDt5/bUALf3OI2vpFne 6oaw== X-Gm-Message-State: AOAM532C6i1Qc1SVglCWkCH7/YtEfnHSwxi6aZVBGBRwWiHoRZuJ9j81 +YpbXv3ssJpdDL3dQGTmkYC5JND3t9zg9ChqfnliSg== X-Google-Smtp-Source: ABdhPJyr4KNCKpOLjOAeeqptKCV0BEzrPRp+wNWuF5pmKYxjZqq7nXbjWOotGDDmorT3SbsnMVjMJ8oaFMFl1zUwCvk= X-Received: by 2002:a5e:a70c:: with SMTP id b12mr17067141iod.96.1591544973425; Sun, 07 Jun 2020 08:49:33 -0700 (PDT) MIME-Version: 1.0 From: Dave Chamberlin-Kidd Date: Sun, 7 Jun 2020 16:49:21 +0100 Message-ID: To: submit@bugs.x2go.org Content-Type: multipart/mixed; boundary="000000000000c9530205a780703c" --000000000000c9530205a780703c Content-Type: multipart/alternative; boundary="000000000000c9530005a780703a" --000000000000c9530005a780703a Content-Type: text/plain; charset="UTF-8" Package: x2goclient Version: 4.1.2.3 Severity: wishlist Tag: patch There are a number of minor issues, oddities and limitations with the current x2goclient gui which would be good to fix, resolve and improve on. Like all projects however the core team have more important issues to resolve. The code in its current state is difficult to understand and amend and as it has no tests it is risky for developers to make functional changes unless they spend a lot of time getting to know the code and doing extensive manual testing. Attached are 10 small refactorings which start extracting out some of the code into smaller functions. As the code is separated out it becomes easier to understand and change. There are no functional changes in these patches, nor do they attempt or claim to fix any known issues. On their own the benefit of these patches is limited however the hope is that over time I will be able to submit more refactorings as I learn more and then start fixing issues and improving the UI. Extracting out functions is just one of many techniques that can be used to make code cleaner but in my experience it's a good one to start with. It should also be noted that sometimes code is extracted "as is" even when it is clear further refactoring can be done to improve things, this is by design in order to keep risk and size of patches to a minimum. Cheers Dave --000000000000c9530005a780703a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Package: x2goclient
Version: 4.1.2.3
Severit= y: wishlist
Tag: patch

There are a numbe= r of minor issues, oddities and limitations with the current x2goclient gui= which would be good to fix, resolve and improve on. Like all projects howe= ver the core team have more important issues to resolve. The code in its cu= rrent state is difficult to understand and amend and as it has no tests it = is risky for developers to make functional changes unless they spend a lot = of time getting to know the code and doing extensive manual testing.
<= div>
Attached are 10 small refactorings which start extractin= g out some of the code into smaller functions. As the code is separated out= it becomes easier to understand and change.

There= are no functional changes in these patches, nor do they attempt or claim t= o fix any known issues. On their own the benefit of these patches is limite= d however the hope is that over time I will be able to submit more refactor= ings as I learn more and then start fixing issues and improving the UI. Ext= racting out functions is just one of many techniques that can be used to ma= ke code cleaner but in my experience it's a good one to start with. It = should also be noted that sometimes code is extracted "as is" eve= n when it is clear further refactoring can be done to improve things, this = is by design in order to keep risk and size of patches to a minimum.=C2=A0<= /div>

Cheers
Dave
=C2=A0 =C2=A0=C2= =A0
--000000000000c9530005a780703a-- --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0007-Refactor-Extract-geometry-setup.patch" Content-Disposition: attachment; filename="0007-Refactor-Extract-geometry-setup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30i36 RnJvbSA1NDljMmI2ZmFkZGVkMTEwMzIzNjg1ODlmMTNiZTc2NmIxODdjNzA0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTYXQsIDE2IE1heSAyMDIwIDIzOjQ3OjU4ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwNy80M10gUmVmYWN0b3I6IEV4dHJhY3QgZ2VvbWV0cnkgc2V0dXAKCi0tLQogc3JjL3Nl c3Npb25idXR0b24uY3BwIHwgMjUgKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL3Nlc3Np b25idXR0b24uaCAgIHwgIDEgKwogMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAx NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAgYi9zcmMv c2Vzc2lvbmJ1dHRvbi5jcHAKaW5kZXggNjA3MzQ2MC4uYjI1ZTY3NCAxMDA2NDQKLS0tIGEvc3Jj L3Nlc3Npb25idXR0b24uY3BwCisrKyBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcApAQCAtODIsMTMg KzgyLDggQEAgU2Vzc2lvbkJ1dHRvbjo6U2Vzc2lvbkJ1dHRvbiAoIE9OTWFpbldpbmRvdyogbXcs UVdpZGdldCAqcGFyZW50LCBRU3RyaW5nIGlkICkKICAgICBzaWQ9aWQ7CiAKICAgICBzZXR1cENv bW1hbmQoKTsKLQotICAgIGdlb21Cb3g9Y3JlYXRlR2VvbWV0cnlCb3goKTsKLSAgICBnZW9tPW5l dyBRTGFiZWwgKCB0aGlzICk7Ci0gICAgZ2VvbS0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsK LSAgICBnZW9tSWNvbj1uZXcgUUxhYmVsICggdGhpcyApOwotICAgIGdlb21JY29uLT5zZXRNb3Vz ZVRyYWNraW5nICggdHJ1ZSApOwotCisgICAgc2V0dXBHZW9tZXRyeSgpOworIAogICAgIHNlc3NO YW1lPW5ldyBRTGFiZWwgKCB0aGlzICk7CiAgICAgZm50PXNlc3NOYW1lLT5mb250KCk7CiAgICAg Zm50LnNldEJvbGQgKCB0cnVlICk7CkBAIC0yNzcsMTUgKzI3MiwxNyBAQCB2b2lkIFNlc3Npb25C dXR0b246OnNldHVwT3B0aW9uc1BhbGV0dGUoIFFQYWxldHRlICZjcGFsICkKICAgICBjcGFsLnNl dENvbG9yICggUVBhbGV0dGU6OldpbmRvdyxiYWNrZ3JvdW5kQ29sb3IgKTsKIH0KIAotUUNvbWJv Qm94KiBTZXNzaW9uQnV0dG9uOjpjcmVhdGVHZW9tZXRyeUJveCgpCit2b2lkIFNlc3Npb25CdXR0 b246OnNldHVwR2VvbWV0cnkoKQogewotICAgIFFDb21ib0JveCogZ2VvbUJveCA9IG5ldyBRQ29t Ym9Cb3goIHRoaXMgKTsKLSAgICBnZW9tQm94LT5zZXRNb3VzZVRyYWNraW5nKCB0cnVlICk7Ci0g ICAgZ2VvbUJveC0+c2V0RnJhbWUoIGZhbHNlICk7Ci0gICAgZ2VvbUJveC0+c2V0RWRpdGFibGUo IGZhbHNlICk7CisgICAgZ2VvbUJveCA9IG5ldyBRQ29tYm9Cb3ggKCB0aGlzICk7CisgICAgZ2Vv bUJveC0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKKyAgICBnZW9tQm94LT5zZXRGcmFtZSAo IGZhbHNlICk7CisgICAgZ2VvbUJveC0+c2V0RWRpdGFibGUgKCBmYWxzZSApOwogICAgIGdlb21C b3gtPnVwZGF0ZSgpOwotCi0gICAgcmV0dXJuIGdlb21Cb3g7CisgICAgZ2VvbT1uZXcgUUxhYmVs ICggdGhpcyApOworICAgIGdlb20tPnNldE1vdXNlVHJhY2tpbmcgKCB0cnVlICk7CisgICAgZ2Vv bUljb249bmV3IFFMYWJlbCAoIHRoaXMgKTsKKyAgICBnZW9tSWNvbi0+c2V0TW91c2VUcmFja2lu ZyAoIHRydWUgKTsKIH0KIAogdm9pZCBTZXNzaW9uQnV0dG9uOjpzZXR1cENvbW1hbmQoKXsKZGlm ZiAtLWdpdCBhL3NyYy9zZXNzaW9uYnV0dG9uLmggYi9zcmMvc2Vzc2lvbmJ1dHRvbi5oCmluZGV4 IDZmY2E5MjEuLmQ2ODYzOWMgMTAwNjQ0Ci0tLSBhL3NyYy9zZXNzaW9uYnV0dG9uLmgKKysrIGIv c3JjL3Nlc3Npb25idXR0b24uaApAQCAtOTIsNiArOTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg c2V0dXBPcHRpb25zUGFsZXR0ZSAoIFFQYWxldHRlICZjcGFsICk7CiAgICAgdm9pZCBzZXR1cENv bW1hbmQoKTsKICAgICBRQ29tYm9Cb3gqIGNyZWF0ZUdlb21ldHJ5Qm94KCk7CisgICAgdm9pZCBz ZXR1cEdlb21ldHJ5KCk7CiAKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzbG90Q2xpY2tlZCgp OwotLSAKMi4yNy4wCgo= --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0008-Refactor-Extract-sound-setup.patch" Content-Disposition: attachment; filename="0008-Refactor-Extract-sound-setup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30e35 RnJvbSBjYjA2MTkwYjc5ZDNjZGJjZjdjNTc0YjM0NWQzZWQxM2EwYTgxMDg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTYXQsIDE2IE1heSAyMDIwIDIzOjU3OjM2ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwOC80M10gUmVmYWN0b3I6IEV4dHJhY3Qgc291bmQgc2V0dXAKCi0tLQogc3JjL3Nlc3Np b25idXR0b24uY3BwIHwgMTQgKysrKysrKysrLS0tLS0KIHNyYy9zZXNzaW9uYnV0dG9uLmggICB8 ICAyICsrCiAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb25idXR0b24uY3BwIGIvc3JjL3Nlc3Npb25idXR0b24u Y3BwCmluZGV4IGIyNWU2NzQuLmZmNTllMTIgMTAwNjQ0Ci0tLSBhL3NyYy9zZXNzaW9uYnV0dG9u LmNwcAorKysgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgU2Vzc2lv bkJ1dHRvbjo6U2Vzc2lvbkJ1dHRvbiAoIE9OTWFpbldpbmRvdyogbXcsUVdpZGdldCAqcGFyZW50 LCBRU3RyaW5nIGlkICkKIAogICAgIHNldHVwQ29tbWFuZCgpOwogICAgIHNldHVwR2VvbWV0cnko KTsKLSAKKwogICAgIHNlc3NOYW1lPW5ldyBRTGFiZWwgKCB0aGlzICk7CiAgICAgZm50PXNlc3NO YW1lLT5mb250KCk7CiAgICAgZm50LnNldEJvbGQgKCB0cnVlICk7CkBAIC05NiwxMCArOTYsNyBA QCBTZXNzaW9uQnV0dG9uOjpTZXNzaW9uQnV0dG9uICggT05NYWluV2luZG93KiBtdyxRV2lkZ2V0 ICpwYXJlbnQsIFFTdHJpbmcgaWQgKQogICAgIHNlcnZlcj1uZXcgUUxhYmVsICggdGhpcyApOwog ICAgIHNlcnZlckljb249bmV3IFFMYWJlbCAoIHRoaXMgKTsKIAotICAgIHNvdW5kPW5ldyBRUHVz aEJ1dHRvbiAoIHRoaXMgKTsKLSAgICBzb3VuZC0+c2V0RmxhdCAoIHRydWUgKTsKLSAgICBzb3Vu ZC0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKLSAgICBzb3VuZEljb249bmV3IFFMYWJlbCAo IHRoaXMgKTsKKyAgICBzZXR1cFNvdW5kKCk7CiAKICAgICBRUGFsZXR0ZSBvcHRpb25zUGFsZXR0 ZSA9IGNtZEJveC0+cGFsZXR0ZSgpOyAKICAgICBzZXR1cE9wdGlvbnNQYWxldHRlICggb3B0aW9u c1BhbGV0dGUgKTsKQEAgLTI5NSw2ICsyOTIsMTMgQEAgdm9pZCBTZXNzaW9uQnV0dG9uOjpzZXR1 cENvbW1hbmQoKXsKICAgICBjbWRCb3gtPnNldEZyYW1lICggZmFsc2UgKTsKIH0KIAordm9pZCBT ZXNzaW9uQnV0dG9uOjpzZXR1cFNvdW5kKCl7CisgICAgc291bmQ9bmV3IFFQdXNoQnV0dG9uICgg dGhpcyApOworICAgIHNvdW5kLT5zZXRGbGF0ICggdHJ1ZSApOworICAgIHNvdW5kLT5zZXRNb3Vz ZVRyYWNraW5nICggdHJ1ZSApOworICAgIHNvdW5kSWNvbj1uZXcgUUxhYmVsICggdGhpcyApOwor fQorCiB2b2lkIFNlc3Npb25CdXR0b246OnNsb3RDbGlja2VkKCkKIHsKICAgICBlbWl0IHNlc3Np b25TZWxlY3RlZCAoIHRoaXMgKTsKZGlmZiAtLWdpdCBhL3NyYy9zZXNzaW9uYnV0dG9uLmggYi9z cmMvc2Vzc2lvbmJ1dHRvbi5oCmluZGV4IGQ2ODYzOWMuLjk2MmQ3OTYgMTAwNjQ0Ci0tLSBhL3Ny Yy9zZXNzaW9uYnV0dG9uLmgKKysrIGIvc3JjL3Nlc3Npb25idXR0b24uaApAQCAtOTMsNiArOTMs OCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0dXBDb21tYW5kKCk7CiAgICAgUUNvbWJvQm94KiBj cmVhdGVHZW9tZXRyeUJveCgpOwogICAgIHZvaWQgc2V0dXBHZW9tZXRyeSgpOworICAgIHZvaWQg c2V0dXBTZXNzaW9uKCk7CisgICAgdm9pZCBzZXR1cFNvdW5kKCk7CiAKIHByaXZhdGUgc2xvdHM6 CiAgICAgdm9pZCBzbG90Q2xpY2tlZCgpOwotLSAKMi4yNy4wCgo= --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0009-Refactor-Extract-server-setup.patch" Content-Disposition: attachment; filename="0009-Refactor-Extract-server-setup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30a34 RnJvbSBjMWFmMzNiZDMwOGU3YmFmNjhlZTRmZDk4ZjJlMTNjYmM3MTllYzIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTdW4sIDE3IE1heSAyMDIwIDAwOjAyOjE3ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwOS80M10gUmVmYWN0b3I6IEV4dHJhY3Qgc2VydmVyIHNldHVwCgotLS0KIHNyYy9zZXNz aW9uYnV0dG9uLmNwcCB8IDkgKysrKysrLS0tCiBzcmMvc2Vzc2lvbmJ1dHRvbi5oICAgfCAxICsK IDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9zZXNzaW9uYnV0dG9uLmNwcCBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcAppbmRl eCBmZjU5ZTEyLi40NmIwZWQ5IDEwMDY0NAotLS0gYS9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAKKysr IGIvc3JjL3Nlc3Npb25idXR0b24uY3BwCkBAIC05Myw5ICs5Myw3IEBAIFNlc3Npb25CdXR0b246 OlNlc3Npb25CdXR0b24gKCBPTk1haW5XaW5kb3cqIG13LFFXaWRnZXQgKnBhcmVudCwgUVN0cmlu ZyBpZCApCiAKICAgICBpY29uPW5ldyBRTGFiZWwgKCB0aGlzICk7CiAKLSAgICBzZXJ2ZXI9bmV3 IFFMYWJlbCAoIHRoaXMgKTsKLSAgICBzZXJ2ZXJJY29uPW5ldyBRTGFiZWwgKCB0aGlzICk7Ci0K KyAgICBzZXR1cFNlcnZlcigpOwogICAgIHNldHVwU291bmQoKTsKIAogICAgIFFQYWxldHRlIG9w dGlvbnNQYWxldHRlID0gY21kQm94LT5wYWxldHRlKCk7IApAQCAtMjkyLDYgKzI5MCwxMSBAQCB2 b2lkIFNlc3Npb25CdXR0b246OnNldHVwQ29tbWFuZCgpewogICAgIGNtZEJveC0+c2V0RnJhbWUg KCBmYWxzZSApOwogfQogCit2b2lkIFNlc3Npb25CdXR0b246OnNldHVwU2VydmVyKCl7CisgICAg c2VydmVyPW5ldyBRTGFiZWwgKCB0aGlzICk7CisgICAgc2VydmVySWNvbj1uZXcgUUxhYmVsICgg dGhpcyApOworfQorCiB2b2lkIFNlc3Npb25CdXR0b246OnNldHVwU291bmQoKXsKICAgICBzb3Vu ZD1uZXcgUVB1c2hCdXR0b24gKCB0aGlzICk7CiAgICAgc291bmQtPnNldEZsYXQgKCB0cnVlICk7 CmRpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5oIGIvc3JjL3Nlc3Npb25idXR0b24uaApp bmRleCA5NjJkNzk2Li5jMjZhZDQ0IDEwMDY0NAotLS0gYS9zcmMvc2Vzc2lvbmJ1dHRvbi5oCisr KyBiL3NyYy9zZXNzaW9uYnV0dG9uLmgKQEAgLTk1LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICB2 b2lkIHNldHVwR2VvbWV0cnkoKTsKICAgICB2b2lkIHNldHVwU2Vzc2lvbigpOwogICAgIHZvaWQg c2V0dXBTb3VuZCgpOworICAgIHZvaWQgc2V0dXBTZXJ2ZXIoKTsKIAogcHJpdmF0ZSBzbG90czoK ICAgICB2b2lkIHNsb3RDbGlja2VkKCk7Ci0tIAoyLjI3LjAKCg== --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0010-Refactor-Extract-edit-button-setup.patch" Content-Disposition: attachment; filename="0010-Refactor-Extract-edit-button-setup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30633 RnJvbSBlOWExNWUwYjEzNGI1MTM5MTc2ZGNjOGM3M2FiZTFiZmZkNDYxNzI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTdW4sIDE3IE1heSAyMDIwIDAwOjA2OjAxICswMTAwClN1YmplY3Q6IFtQ QVRDSCAxMC80M10gUmVmYWN0b3I6IEV4dHJhY3QgZWRpdCBidXR0b24gc2V0dXAKCi0tLQogc3Jj L3Nlc3Npb25idXR0b24uY3BwIHwgOCArKysrKystLQogc3JjL3Nlc3Npb25idXR0b24uaCAgIHwg MSArCiAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAK aW5kZXggNDZiMGVkOS4uMDA2OWE1ZCAxMDA2NDQKLS0tIGEvc3JjL3Nlc3Npb25idXR0b24uY3Bw CisrKyBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcApAQCAtMTA1LDggKzEwNSw3IEBAIFNlc3Npb25C dXR0b246OlNlc3Npb25CdXR0b24gKCBPTk1haW5XaW5kb3cqIG13LFFXaWRnZXQgKnBhcmVudCwg UVN0cmluZyBpZCApCiAgICAgY29ubmVjdCAoIHNvdW5kLFNJR05BTCAoIGNsaWNrZWQoKSApLHRo aXMsCiAgICAgICAgICAgICAgIFNMT1QgKCBzbG90X3NvdW5kQ2xpY2tlZCgpICkgKTsKIAotICAg IGVkaXRCdXQ9bmV3IFFQdXNoQnV0dG9uICggdGhpcyApOwotICAgIGVkaXRCdXQtPnNldE1vdXNl VHJhY2tpbmcgKCB0cnVlICk7CisgICAgc2V0dXBFZGl0QnV0dG9uKCk7CiAgICAgY29ubmVjdCAo IGVkaXRCdXQsU0lHTkFMICggcHJlc3NlZCgpICksdGhpcyxTTE9UICggc2xvdFNob3dNZW51KCkg KSApOwogCiAgICAgLyogTG9hZCBvdXIgZWRpdCBidXR0b24gU1ZHIGZpbGUuICovCkBAIC0zMDIs NiArMzAxLDExIEBAIHZvaWQgU2Vzc2lvbkJ1dHRvbjo6c2V0dXBTb3VuZCgpewogICAgIHNvdW5k SWNvbj1uZXcgUUxhYmVsICggdGhpcyApOwogfQogCit2b2lkIFNlc3Npb25CdXR0b246OnNldHVw RWRpdEJ1dHRvbigpeworICAgIGVkaXRCdXQ9bmV3IFFQdXNoQnV0dG9uICggdGhpcyApOworICAg IGVkaXRCdXQtPnNldE1vdXNlVHJhY2tpbmcgKCB0cnVlICk7Cit9CisKIHZvaWQgU2Vzc2lvbkJ1 dHRvbjo6c2xvdENsaWNrZWQoKQogewogICAgIGVtaXQgc2Vzc2lvblNlbGVjdGVkICggdGhpcyAp OwpkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb25idXR0b24uaCBiL3NyYy9zZXNzaW9uYnV0dG9uLmgK aW5kZXggYzI2YWQ0NC4uZWI1ZjVmOCAxMDA2NDQKLS0tIGEvc3JjL3Nlc3Npb25idXR0b24uaAor KysgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5oCkBAIC05Niw2ICs5Niw3IEBAIHByaXZhdGU6CiAgICAg dm9pZCBzZXR1cFNlc3Npb24oKTsKICAgICB2b2lkIHNldHVwU291bmQoKTsKICAgICB2b2lkIHNl dHVwU2VydmVyKCk7CisgICAgdm9pZCBzZXR1cEVkaXRCdXR0b24oKTsKIAogcHJpdmF0ZSBzbG90 czoKICAgICB2b2lkIHNsb3RDbGlja2VkKCk7Ci0tIAoyLjI3LjAKCg== --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0006-Refactor-Extract-command-setup.patch" Content-Disposition: attachment; filename="0006-Refactor-Extract-command-setup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30m37 RnJvbSA3YWE0YjE3NTVmMjVmYzY4ZmNiNjk3YTBiOWRkZWViY2Y3NTY5NzJkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTYXQsIDE2IE1heSAyMDIwIDIzOjQyOjAxICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwNi80M10gUmVmYWN0b3I6IEV4dHJhY3QgY29tbWFuZCBzZXR1cAoKLS0tCiBzcmMvc2Vz c2lvbmJ1dHRvbi5jcHAgfCAxOCArKysrKysrKysrKy0tLS0tLS0KIHNyYy9zZXNzaW9uYnV0dG9u LmggICB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAgYi9zcmMvc2Vzc2lvbmJ1 dHRvbi5jcHAKaW5kZXggMGZiMDNmNC4uNjA3MzQ2MCAxMDA2NDQKLS0tIGEvc3JjL3Nlc3Npb25i dXR0b24uY3BwCisrKyBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcApAQCAtODEsMTMgKzgxLDcgQEAg U2Vzc2lvbkJ1dHRvbjo6U2Vzc2lvbkJ1dHRvbiAoIE9OTWFpbldpbmRvdyogbXcsUVdpZGdldCAq cGFyZW50LCBRU3RyaW5nIGlkICkKIAogICAgIHNpZD1pZDsKIAotICAgIGNtZD1uZXcgUUxhYmVs ICggdGhpcyApOwotICAgIGNtZC0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKLSAgICBjbWRJ Y29uPW5ldyBRTGFiZWwgKCB0aGlzICk7Ci0gICAgY21kSWNvbi0+c2V0TW91c2VUcmFja2luZyAo IHRydWUgKTsKLSAgICBjbWRCb3g9bmV3IFFDb21ib0JveCAoIHRoaXMgKTsKLSAgICBjbWRCb3gt PnNldE1vdXNlVHJhY2tpbmcgKCB0cnVlICk7Ci0gICAgY21kQm94LT5zZXRGcmFtZSAoIGZhbHNl ICk7CisgICAgc2V0dXBDb21tYW5kKCk7CiAKICAgICBnZW9tQm94PWNyZWF0ZUdlb21ldHJ5Qm94 KCk7CiAgICAgZ2VvbT1uZXcgUUxhYmVsICggdGhpcyApOwpAQCAtMjk0LDYgKzI4OCwxNiBAQCBR Q29tYm9Cb3gqIFNlc3Npb25CdXR0b246OmNyZWF0ZUdlb21ldHJ5Qm94KCkKICAgICByZXR1cm4g Z2VvbUJveDsKIH0KIAordm9pZCBTZXNzaW9uQnV0dG9uOjpzZXR1cENvbW1hbmQoKXsKKyAgICBj bWQ9bmV3IFFMYWJlbCAoIHRoaXMgKTsKKyAgICBjbWQtPnNldE1vdXNlVHJhY2tpbmcgKCB0cnVl ICk7CisgICAgY21kSWNvbj1uZXcgUUxhYmVsICggdGhpcyApOworICAgIGNtZEljb24tPnNldE1v dXNlVHJhY2tpbmcgKCB0cnVlICk7CisgICAgY21kQm94PW5ldyBRQ29tYm9Cb3ggKCB0aGlzICk7 CisgICAgY21kQm94LT5zZXRNb3VzZVRyYWNraW5nICggdHJ1ZSApOworICAgIGNtZEJveC0+c2V0 RnJhbWUgKCBmYWxzZSApOworfQorCiB2b2lkIFNlc3Npb25CdXR0b246OnNsb3RDbGlja2VkKCkK IHsKICAgICBlbWl0IHNlc3Npb25TZWxlY3RlZCAoIHRoaXMgKTsKZGlmZiAtLWdpdCBhL3NyYy9z ZXNzaW9uYnV0dG9uLmggYi9zcmMvc2Vzc2lvbmJ1dHRvbi5oCmluZGV4IGU4MmQyNzkuLjZmY2E5 MjEgMTAwNjQ0Ci0tLSBhL3NyYy9zZXNzaW9uYnV0dG9uLmgKKysrIGIvc3JjL3Nlc3Npb25idXR0 b24uaApAQCAtOTAsNiArOTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgdXBkYXRlZDsKIAogICAg IHZvaWQgc2V0dXBPcHRpb25zUGFsZXR0ZSAoIFFQYWxldHRlICZjcGFsICk7CisgICAgdm9pZCBz ZXR1cENvbW1hbmQoKTsKICAgICBRQ29tYm9Cb3gqIGNyZWF0ZUdlb21ldHJ5Qm94KCk7CiAKIHBy aXZhdGUgc2xvdHM6Ci0tIAoyLjI3LjAKCg== --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0005-Refactor-Organise-object-creation-by-feature.patch" Content-Disposition: attachment; filename="0005-Refactor-Organise-object-creation-by-feature.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30r38 RnJvbSBmMDk0YTdhNjBlMDVlYWE4Y2VmNTZiMTUzM2YwNjZkYTM5ZDU0YjE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTYXQsIDE2IE1heSAyMDIwIDIzOjI4OjEwICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwNS80M10gUmVmYWN0b3I6IE9yZ2FuaXNlIG9iamVjdCBjcmVhdGlvbiBieSBmZWF0dXJl CgpHcm91cGluZyBjb21wb25lbnRzIHJlYWR5IGZvciBmdXJ0aGVyIHJlZmFjdG9yaW5nCi0tLQog c3JjL3Nlc3Npb25idXR0b24uY3BwIHwgNDIgKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tCiBzcmMvc2Vzc2lvbmJ1dHRvbi5oICAgfCAgNCArKy0tCiAyIGZpbGVzIGNo YW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9zZXNzaW9uYnV0dG9uLmNwcCBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcAppbmRleCBmZDMyYzUx Li4wZmIwM2Y0IDEwMDY0NAotLS0gYS9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAKKysrIGIvc3JjL3Nl c3Npb25idXR0b24uY3BwCkBAIC04MSwzOCArODEsNDMgQEAgU2Vzc2lvbkJ1dHRvbjo6U2Vzc2lv bkJ1dHRvbiAoIE9OTWFpbldpbmRvdyogbXcsUVdpZGdldCAqcGFyZW50LCBRU3RyaW5nIGlkICkK IAogICAgIHNpZD1pZDsKIAorICAgIGNtZD1uZXcgUUxhYmVsICggdGhpcyApOworICAgIGNtZC0+ c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKKyAgICBjbWRJY29uPW5ldyBRTGFiZWwgKCB0aGlz ICk7CisgICAgY21kSWNvbi0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKICAgICBjbWRCb3g9 bmV3IFFDb21ib0JveCAoIHRoaXMgKTsKICAgICBjbWRCb3gtPnNldE1vdXNlVHJhY2tpbmcgKCB0 cnVlICk7CiAgICAgY21kQm94LT5zZXRGcmFtZSAoIGZhbHNlICk7CiAKLSAgICBRUGFsZXR0ZSBv cHRpb25zUGFsZXR0ZSA9IGNtZEJveC0+cGFsZXR0ZSgpOyAKLSAgICBzZXR1cE9wdGlvbnNQYWxl dHRlKCBvcHRpb25zUGFsZXR0ZSApOwotCi0gICAgY21kQm94LT5zZXRQYWxldHRlICggb3B0aW9u c1BhbGV0dGUgKTsKLSAgICBnZW9tQm94PWNyZWF0ZUdlb21ldHJ5Qm94KCBvcHRpb25zUGFsZXR0 ZSApOworICAgIGdlb21Cb3g9Y3JlYXRlR2VvbWV0cnlCb3goKTsKKyAgICBnZW9tPW5ldyBRTGFi ZWwgKCB0aGlzICk7CisgICAgZ2VvbS0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKKyAgICBn ZW9tSWNvbj1uZXcgUUxhYmVsICggdGhpcyApOworICAgIGdlb21JY29uLT5zZXRNb3VzZVRyYWNr aW5nICggdHJ1ZSApOwogCiAgICAgc2Vzc05hbWU9bmV3IFFMYWJlbCAoIHRoaXMgKTsKLSAgICBz ZXNzU3RhdHVzPW5ldyBRTGFiZWwgKCB0aGlzICk7CiAgICAgZm50PXNlc3NOYW1lLT5mb250KCk7 CiAgICAgZm50LnNldEJvbGQgKCB0cnVlICk7CiAgICAgc2Vzc05hbWUtPnNldEZvbnQgKCBmbnQg KTsKKworICAgIHNlc3NTdGF0dXM9bmV3IFFMYWJlbCAoIHRoaXMgKTsKKwogICAgIGljb249bmV3 IFFMYWJlbCAoIHRoaXMgKTsKLSAgICBjbWQ9bmV3IFFMYWJlbCAoIHRoaXMgKTsKLSAgICBjbWQt PnNldE1vdXNlVHJhY2tpbmcgKCB0cnVlICk7Ci0gICAgc2VydmVySWNvbj1uZXcgUUxhYmVsICgg dGhpcyApOwotICAgIGdlb21JY29uPW5ldyBRTGFiZWwgKCB0aGlzICk7Ci0gICAgZ2VvbUljb24t PnNldE1vdXNlVHJhY2tpbmcgKCB0cnVlICk7Ci0gICAgY21kSWNvbj1uZXcgUUxhYmVsICggdGhp cyApOwotICAgIGNtZEljb24tPnNldE1vdXNlVHJhY2tpbmcgKCB0cnVlICk7CisKICAgICBzZXJ2 ZXI9bmV3IFFMYWJlbCAoIHRoaXMgKTsKLSAgICBnZW9tPW5ldyBRTGFiZWwgKCB0aGlzICk7Ci0g ICAgZ2VvbS0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKKyAgICBzZXJ2ZXJJY29uPW5ldyBR TGFiZWwgKCB0aGlzICk7CiAKICAgICBzb3VuZD1uZXcgUVB1c2hCdXR0b24gKCB0aGlzICk7Ci0g ICAgc291bmRJY29uPW5ldyBRTGFiZWwgKCB0aGlzICk7Ci0gICAgc291bmQtPnNldFBhbGV0dGUg KCBvcHRpb25zUGFsZXR0ZSApOwogICAgIHNvdW5kLT5zZXRGbGF0ICggdHJ1ZSApOwogICAgIHNv dW5kLT5zZXRNb3VzZVRyYWNraW5nICggdHJ1ZSApOworICAgIHNvdW5kSWNvbj1uZXcgUUxhYmVs ICggdGhpcyApOworCisgICAgUVBhbGV0dGUgb3B0aW9uc1BhbGV0dGUgPSBjbWRCb3gtPnBhbGV0 dGUoKTsgCisgICAgc2V0dXBPcHRpb25zUGFsZXR0ZSAoIG9wdGlvbnNQYWxldHRlICk7CisgICAg Y21kQm94LT5zZXRQYWxldHRlICggb3B0aW9uc1BhbGV0dGUgKTsKKyAgICBnZW9tQm94LT5zZXRQ YWxldHRlICggb3B0aW9uc1BhbGV0dGUgKTsKKyAgICBzb3VuZC0+c2V0UGFsZXR0ZSAoIG9wdGlv bnNQYWxldHRlICk7CisKICAgICBjb25uZWN0ICggc291bmQsU0lHTkFMICggY2xpY2tlZCgpICks dGhpcywKICAgICAgICAgICAgICAgU0xPVCAoIHNsb3Rfc291bmRDbGlja2VkKCkgKSApOwogCkBA IC0yNzgsMTQgKzI4MywxMyBAQCB2b2lkIFNlc3Npb25CdXR0b246OnNldHVwT3B0aW9uc1BhbGV0 dGUoIFFQYWxldHRlICZjcGFsICkKICAgICBjcGFsLnNldENvbG9yICggUVBhbGV0dGU6OldpbmRv dyxiYWNrZ3JvdW5kQ29sb3IgKTsKIH0KIAotUUNvbWJvQm94KiBTZXNzaW9uQnV0dG9uOjpjcmVh dGVHZW9tZXRyeUJveCggY29uc3QgUVBhbGV0dGUgJm9wdGlvbnNQYWxldHRlICkKK1FDb21ib0Jv eCogU2Vzc2lvbkJ1dHRvbjo6Y3JlYXRlR2VvbWV0cnlCb3goKQogewogICAgIFFDb21ib0JveCog Z2VvbUJveCA9IG5ldyBRQ29tYm9Cb3goIHRoaXMgKTsKICAgICBnZW9tQm94LT5zZXRNb3VzZVRy YWNraW5nKCB0cnVlICk7CiAgICAgZ2VvbUJveC0+c2V0RnJhbWUoIGZhbHNlICk7CiAgICAgZ2Vv bUJveC0+c2V0RWRpdGFibGUoIGZhbHNlICk7CiAgICAgZ2VvbUJveC0+dXBkYXRlKCk7Ci0gICAg Z2VvbUJveC0+c2V0UGFsZXR0ZSggb3B0aW9uc1BhbGV0dGUgKTsKIAogICAgIHJldHVybiBnZW9t Qm94OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb25idXR0b24uaCBiL3NyYy9zZXNzaW9uYnV0 dG9uLmgKaW5kZXggZTFhNjBmNS4uZTgyZDI3OSAxMDA2NDQKLS0tIGEvc3JjL3Nlc3Npb25idXR0 b24uaAorKysgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5oCkBAIC04OSw4ICs4OSw4IEBAIHByaXZhdGU6 CiAgICAgYm9vbCBlZGl0YWJsZTsKICAgICBib29sIHVwZGF0ZWQ7CiAKLSAgICB2b2lkIHNldHVw T3B0aW9uc1BhbGV0dGUoIFFQYWxldHRlICZjcGFsICk7Ci0gICAgUUNvbWJvQm94KiBjcmVhdGVH ZW9tZXRyeUJveCggY29uc3QgUVBhbGV0dGUgJm9wdGlvbnNQYWxldHRlICk7CisgICAgdm9pZCBz ZXR1cE9wdGlvbnNQYWxldHRlICggUVBhbGV0dGUgJmNwYWwgKTsKKyAgICBRQ29tYm9Cb3gqIGNy ZWF0ZUdlb21ldHJ5Qm94KCk7CiAKIHByaXZhdGUgc2xvdHM6CiAgICAgdm9pZCBzbG90Q2xpY2tl ZCgpOwotLSAKMi4yNy4wCgo= --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0004-Refactor-Remove-unnecessary-code.patch" Content-Disposition: attachment; filename="0004-Refactor-Remove-unnecessary-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30v39 RnJvbSAyZTZjNGQ5ODBlZjg0MzY2ODMwYzZmNzlkZmY5YjY1YzBiZTM0Y2VmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTYXQsIDE2IE1heSAyMDIwIDIyOjQ0OjA2ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwNC80M10gUmVmYWN0b3I6IFJlbW92ZSB1bm5lY2Vzc2FyeSBjb2RlCgotLS0KIHNyYy9z ZXNzaW9uYnV0dG9uLmNwcCB8IDEgLQogMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAK aW5kZXggOTNkNDMxNC4uZmQzMmM1MSAxMDA2NDQKLS0tIGEvc3JjL3Nlc3Npb25idXR0b24uY3Bw CisrKyBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcApAQCAtMjgzLDcgKzI4Myw2IEBAIFFDb21ib0Jv eCogU2Vzc2lvbkJ1dHRvbjo6Y3JlYXRlR2VvbWV0cnlCb3goIGNvbnN0IFFQYWxldHRlICZvcHRp b25zUGFsZXR0ZSApCiAgICAgUUNvbWJvQm94KiBnZW9tQm94ID0gbmV3IFFDb21ib0JveCggdGhp cyApOwogICAgIGdlb21Cb3gtPnNldE1vdXNlVHJhY2tpbmcoIHRydWUgKTsKICAgICBnZW9tQm94 LT5zZXRGcmFtZSggZmFsc2UgKTsKLSAgICBnZW9tQm94LT5zZXRFZGl0YWJsZSggdHJ1ZSApOwog ICAgIGdlb21Cb3gtPnNldEVkaXRhYmxlKCBmYWxzZSApOwogICAgIGdlb21Cb3gtPnVwZGF0ZSgp OwogICAgIGdlb21Cb3gtPnNldFBhbGV0dGUoIG9wdGlvbnNQYWxldHRlICk7Ci0tIAoyLjI3LjAK Cg== --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0003-Refactor-Use-constant-for-color.patch" Content-Disposition: attachment; filename="0003-Refactor-Use-constant-for-color.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c30z40 RnJvbSBiOTQwZjRhZGZmYWNhODQzM2Y1ZTBiNDdiOWQ4Y2MwNzc2YjA0NjIxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTYXQsIDE2IE1heSAyMDIwIDIyOjI4OjI1ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwMy80M10gUmVmYWN0b3I6IFVzZSBjb25zdGFudCBmb3IgY29sb3IKCi0tLQogc3JjL3Nl c3Npb25idXR0b24uY3BwIHwgMTAgKysrKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5j cHAgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAKaW5kZXggZDc4ODM0MC4uOTNkNDMxNCAxMDA2NDQK LS0tIGEvc3JjL3Nlc3Npb25idXR0b24uY3BwCisrKyBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcApA QCAtMjY5LDExICsyNjksMTMgQEAgU2Vzc2lvbkJ1dHRvbjo6U2Vzc2lvbkJ1dHRvbiAoIE9OTWFp bldpbmRvdyogbXcsUVdpZGdldCAqcGFyZW50LCBRU3RyaW5nIGlkICkKIFNlc3Npb25CdXR0b246 On5TZXNzaW9uQnV0dG9uKCkKIHt9CiAKLXZvaWQgU2Vzc2lvbkJ1dHRvbjo6c2V0dXBPcHRpb25z UGFsZXR0ZShRUGFsZXR0ZSAmY3BhbCkKK3ZvaWQgU2Vzc2lvbkJ1dHRvbjo6c2V0dXBPcHRpb25z UGFsZXR0ZSggUVBhbGV0dGUgJmNwYWwgKQogewotICAgIGNwYWwuc2V0Q29sb3IgKCBRUGFsZXR0 ZTo6QnV0dG9uLFFDb2xvciAoIDI1NSwyNTUsMjU1ICkgKTsKLSAgICBjcGFsLnNldENvbG9yICgg UVBhbGV0dGU6OkJhc2UsUUNvbG9yICggMjU1LDI1NSwyNTUgKSApOwotICAgIGNwYWwuc2V0Q29s b3IgKCBRUGFsZXR0ZTo6V2luZG93LFFDb2xvciAoIDI1NSwyNTUsMjU1ICkgKTsKKyAgICBRQ29s b3IgYmFja2dyb3VuZENvbG9yID0gUXQ6OndoaXRlOyAKKworICAgIGNwYWwuc2V0Q29sb3IgKCBR UGFsZXR0ZTo6QnV0dG9uLGJhY2tncm91bmRDb2xvciApOworICAgIGNwYWwuc2V0Q29sb3IgKCBR UGFsZXR0ZTo6QmFzZSxiYWNrZ3JvdW5kQ29sb3IgKTsKKyAgICBjcGFsLnNldENvbG9yICggUVBh bGV0dGU6OldpbmRvdyxiYWNrZ3JvdW5kQ29sb3IgKTsKIH0KIAogUUNvbWJvQm94KiBTZXNzaW9u QnV0dG9uOjpjcmVhdGVHZW9tZXRyeUJveCggY29uc3QgUVBhbGV0dGUgJm9wdGlvbnNQYWxldHRl ICkKLS0gCjIuMjcuMAoK --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Refactor-Extract-geometry-box-setup.patch" Content-Disposition: attachment; filename="0002-Refactor-Extract-geometry-box-setup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c31341 RnJvbSA3NzFkY2MxNjc5MmI4NTM0YmRmNWJlMzJjZjU3NWVhNjU2NmU0MTg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBTYXQsIDE2IE1heSAyMDIwIDIyOjIyOjQ5ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwMi80M10gUmVmYWN0b3I6IEV4dHJhY3QgZ2VvbWV0cnkgYm94IHNldHVwCgotLS0KIHNy Yy9zZXNzaW9uYnV0dG9uLmNwcCB8IDIyICsrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9zZXNz aW9uYnV0dG9uLmggICB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwg OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAgYi9zcmMv c2Vzc2lvbmJ1dHRvbi5jcHAKaW5kZXggNjY1MTgzMy4uZDc4ODM0MCAxMDA2NDQKLS0tIGEvc3Jj L3Nlc3Npb25idXR0b24uY3BwCisrKyBiL3NyYy9zZXNzaW9uYnV0dG9uLmNwcApAQCAtODksMTQg Kzg5LDcgQEAgU2Vzc2lvbkJ1dHRvbjo6U2Vzc2lvbkJ1dHRvbiAoIE9OTWFpbldpbmRvdyogbXcs UVdpZGdldCAqcGFyZW50LCBRU3RyaW5nIGlkICkKICAgICBzZXR1cE9wdGlvbnNQYWxldHRlKCBv cHRpb25zUGFsZXR0ZSApOwogCiAgICAgY21kQm94LT5zZXRQYWxldHRlICggb3B0aW9uc1BhbGV0 dGUgKTsKLQotICAgIGdlb21Cb3g9bmV3IFFDb21ib0JveCAoIHRoaXMgKTsKLSAgICBnZW9tQm94 LT5zZXRNb3VzZVRyYWNraW5nICggdHJ1ZSApOwotICAgIGdlb21Cb3gtPnNldEZyYW1lICggZmFs c2UgKTsKLSAgICBnZW9tQm94LT5zZXRFZGl0YWJsZSAoIHRydWUgKTsKLSAgICBnZW9tQm94LT5z ZXRFZGl0YWJsZSAoIGZhbHNlICk7Ci0gICAgZ2VvbUJveC0+dXBkYXRlKCk7Ci0gICAgZ2VvbUJv eC0+c2V0UGFsZXR0ZSAoIG9wdGlvbnNQYWxldHRlICk7CisgICAgZ2VvbUJveD1jcmVhdGVHZW9t ZXRyeUJveCggb3B0aW9uc1BhbGV0dGUgKTsKIAogICAgIHNlc3NOYW1lPW5ldyBRTGFiZWwgKCB0 aGlzICk7CiAgICAgc2Vzc1N0YXR1cz1uZXcgUUxhYmVsICggdGhpcyApOwpAQCAtMjgzLDYgKzI3 NiwxOSBAQCB2b2lkIFNlc3Npb25CdXR0b246OnNldHVwT3B0aW9uc1BhbGV0dGUoUVBhbGV0dGUg JmNwYWwpCiAgICAgY3BhbC5zZXRDb2xvciAoIFFQYWxldHRlOjpXaW5kb3csUUNvbG9yICggMjU1 LDI1NSwyNTUgKSApOwogfQogCitRQ29tYm9Cb3gqIFNlc3Npb25CdXR0b246OmNyZWF0ZUdlb21l dHJ5Qm94KCBjb25zdCBRUGFsZXR0ZSAmb3B0aW9uc1BhbGV0dGUgKQoreworICAgIFFDb21ib0Jv eCogZ2VvbUJveCA9IG5ldyBRQ29tYm9Cb3goIHRoaXMgKTsKKyAgICBnZW9tQm94LT5zZXRNb3Vz ZVRyYWNraW5nKCB0cnVlICk7CisgICAgZ2VvbUJveC0+c2V0RnJhbWUoIGZhbHNlICk7CisgICAg Z2VvbUJveC0+c2V0RWRpdGFibGUoIHRydWUgKTsKKyAgICBnZW9tQm94LT5zZXRFZGl0YWJsZSgg ZmFsc2UgKTsKKyAgICBnZW9tQm94LT51cGRhdGUoKTsKKyAgICBnZW9tQm94LT5zZXRQYWxldHRl KCBvcHRpb25zUGFsZXR0ZSApOworCisgICAgcmV0dXJuIGdlb21Cb3g7Cit9CisKIHZvaWQgU2Vz c2lvbkJ1dHRvbjo6c2xvdENsaWNrZWQoKQogewogICAgIGVtaXQgc2Vzc2lvblNlbGVjdGVkICgg dGhpcyApOwpkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb25idXR0b24uaCBiL3NyYy9zZXNzaW9uYnV0 dG9uLmgKaW5kZXggOGUyMWNjZi4uZTFhNjBmNSAxMDA2NDQKLS0tIGEvc3JjL3Nlc3Npb25idXR0 b24uaAorKysgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5oCkBAIC05MCw2ICs5MCw3IEBAIHByaXZhdGU6 CiAgICAgYm9vbCB1cGRhdGVkOwogCiAgICAgdm9pZCBzZXR1cE9wdGlvbnNQYWxldHRlKCBRUGFs ZXR0ZSAmY3BhbCApOworICAgIFFDb21ib0JveCogY3JlYXRlR2VvbWV0cnlCb3goIGNvbnN0IFFQ YWxldHRlICZvcHRpb25zUGFsZXR0ZSApOwogCiBwcml2YXRlIHNsb3RzOgogICAgIHZvaWQgc2xv dENsaWNrZWQoKTsKLS0gCjIuMjcuMAoK --000000000000c9530205a780703c Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Refactor-Extract-palette-setup.patch" Content-Disposition: attachment; filename="0001-Refactor-Extract-palette-setup.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kb58c31742 RnJvbSAyM2M5MDdlNTdiOTUyNTExY2JhMWI0N2QwODE0MThhMDVlNTJiZjg3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIENoYW1iZXJsaW4tS2lkZCA8ZGF2ZUBmbGFtYW5nb2Vz LmNvLnVrPgpEYXRlOiBGcmksIDE1IE1heSAyMDIwIDIxOjU2OjU3ICswMTAwClN1YmplY3Q6IFtQ QVRDSCAwMS80M10gUmVmYWN0b3I6IEV4dHJhY3QgcGFsZXR0ZSBzZXR1cAoKLS0tCiBzcmMvc2Vz c2lvbmJ1dHRvbi5jcHAgfCAyNCArKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9zZXNzaW9u YnV0dG9uLmggICB8ICAyICsrCiAyIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Nlc3Npb25idXR0b24uY3BwIGIvc3JjL3Nl c3Npb25idXR0b24uY3BwCmluZGV4IDBhNDZlZTYuLjY2NTE4MzMgMTAwNjQ0Ci0tLSBhL3NyYy9z ZXNzaW9uYnV0dG9uLmNwcAorKysgYi9zcmMvc2Vzc2lvbmJ1dHRvbi5jcHAKQEAgLTg0LDEyICs4 NCwxMSBAQCBTZXNzaW9uQnV0dG9uOjpTZXNzaW9uQnV0dG9uICggT05NYWluV2luZG93KiBtdyxR V2lkZ2V0ICpwYXJlbnQsIFFTdHJpbmcgaWQgKQogICAgIGNtZEJveD1uZXcgUUNvbWJvQm94ICgg dGhpcyApOwogICAgIGNtZEJveC0+c2V0TW91c2VUcmFja2luZyAoIHRydWUgKTsKICAgICBjbWRC b3gtPnNldEZyYW1lICggZmFsc2UgKTsKLSAgICBRUGFsZXR0ZSBjcGFsPWNtZEJveC0+cGFsZXR0 ZSgpOwogCi0gICAgY3BhbC5zZXRDb2xvciAoIFFQYWxldHRlOjpCdXR0b24sUUNvbG9yICggMjU1 LDI1NSwyNTUgKSApOwotICAgIGNwYWwuc2V0Q29sb3IgKCBRUGFsZXR0ZTo6QmFzZSxRQ29sb3Ig KCAyNTUsMjU1LDI1NSApICk7Ci0gICAgY3BhbC5zZXRDb2xvciAoIFFQYWxldHRlOjpXaW5kb3cs UUNvbG9yICggMjU1LDI1NSwyNTUgKSApOwotICAgIGNtZEJveC0+c2V0UGFsZXR0ZSAoIGNwYWwg KTsKKyAgICBRUGFsZXR0ZSBvcHRpb25zUGFsZXR0ZSA9IGNtZEJveC0+cGFsZXR0ZSgpOyAKKyAg ICBzZXR1cE9wdGlvbnNQYWxldHRlKCBvcHRpb25zUGFsZXR0ZSApOworCisgICAgY21kQm94LT5z ZXRQYWxldHRlICggb3B0aW9uc1BhbGV0dGUgKTsKIAogICAgIGdlb21Cb3g9bmV3IFFDb21ib0Jv eCAoIHRoaXMgKTsKICAgICBnZW9tQm94LT5zZXRNb3VzZVRyYWNraW5nICggdHJ1ZSApOwpAQCAt OTcsNyArOTYsNyBAQCBTZXNzaW9uQnV0dG9uOjpTZXNzaW9uQnV0dG9uICggT05NYWluV2luZG93 KiBtdyxRV2lkZ2V0ICpwYXJlbnQsIFFTdHJpbmcgaWQgKQogICAgIGdlb21Cb3gtPnNldEVkaXRh YmxlICggdHJ1ZSApOwogICAgIGdlb21Cb3gtPnNldEVkaXRhYmxlICggZmFsc2UgKTsKICAgICBn ZW9tQm94LT51cGRhdGUoKTsKLSAgICBnZW9tQm94LT5zZXRQYWxldHRlICggY3BhbCApOworICAg IGdlb21Cb3gtPnNldFBhbGV0dGUgKCBvcHRpb25zUGFsZXR0ZSApOwogCiAgICAgc2Vzc05hbWU9 bmV3IFFMYWJlbCAoIHRoaXMgKTsKICAgICBzZXNzU3RhdHVzPW5ldyBRTGFiZWwgKCB0aGlzICk7 CkBAIC0xMTgsNyArMTE3LDcgQEAgU2Vzc2lvbkJ1dHRvbjo6U2Vzc2lvbkJ1dHRvbiAoIE9OTWFp bldpbmRvdyogbXcsUVdpZGdldCAqcGFyZW50LCBRU3RyaW5nIGlkICkKIAogICAgIHNvdW5kPW5l dyBRUHVzaEJ1dHRvbiAoIHRoaXMgKTsKICAgICBzb3VuZEljb249bmV3IFFMYWJlbCAoIHRoaXMg KTsKLSAgICBzb3VuZC0+c2V0UGFsZXR0ZSAoIGNwYWwgKTsKKyAgICBzb3VuZC0+c2V0UGFsZXR0 ZSAoIG9wdGlvbnNQYWxldHRlICk7CiAgICAgc291bmQtPnNldEZsYXQgKCB0cnVlICk7CiAgICAg c291bmQtPnNldE1vdXNlVHJhY2tpbmcgKCB0cnVlICk7CiAgICAgY29ubmVjdCAoIHNvdW5kLFNJ R05BTCAoIGNsaWNrZWQoKSApLHRoaXMsCkBAIC0xNDMsNyArMTQyLDcgQEAgU2Vzc2lvbkJ1dHRv bjo6U2Vzc2lvbkJ1dHRvbiAoIE9OTWFpbldpbmRvdyogbXcsUVdpZGdldCAqcGFyZW50LCBRU3Ry aW5nIGlkICkKICAgICBlZGl0QnV0LT5zZXRJY29uU2l6ZSAoIFFTaXplICggMTYsMTYgKSApOwog ICAgIGVkaXRCdXQtPnNldEZpeGVkU2l6ZSAoIDI0LDI0ICk7CiAgICAgZWRpdEJ1dC0+c2V0Rmxh dCAoIHRydWUgKTsKLSAgICBlZGl0QnV0LT5zZXRQYWxldHRlICggY3BhbCApOworICAgIGVkaXRC dXQtPnNldFBhbGV0dGUgKCBvcHRpb25zUGFsZXR0ZSApOwogICAgIHNlc3NNZW51PW5ldyBRTWVu dSAoIHRoaXMgKTsKIAogICAgIGNvbm5lY3QgKCBzZXNzTWVudSxTSUdOQUwgKCBhYm91dFRvSGlk ZSgpICksdGhpcywKQEAgLTI3Nyw2ICsyNzYsMTMgQEAgU2Vzc2lvbkJ1dHRvbjo6U2Vzc2lvbkJ1 dHRvbiAoIE9OTWFpbldpbmRvdyogbXcsUVdpZGdldCAqcGFyZW50LCBRU3RyaW5nIGlkICkKIFNl c3Npb25CdXR0b246On5TZXNzaW9uQnV0dG9uKCkKIHt9CiAKK3ZvaWQgU2Vzc2lvbkJ1dHRvbjo6 c2V0dXBPcHRpb25zUGFsZXR0ZShRUGFsZXR0ZSAmY3BhbCkKK3sKKyAgICBjcGFsLnNldENvbG9y ICggUVBhbGV0dGU6OkJ1dHRvbixRQ29sb3IgKCAyNTUsMjU1LDI1NSApICk7CisgICAgY3BhbC5z ZXRDb2xvciAoIFFQYWxldHRlOjpCYXNlLFFDb2xvciAoIDI1NSwyNTUsMjU1ICkgKTsKKyAgICBj cGFsLnNldENvbG9yICggUVBhbGV0dGU6OldpbmRvdyxRQ29sb3IgKCAyNTUsMjU1LDI1NSApICk7 Cit9CisKIHZvaWQgU2Vzc2lvbkJ1dHRvbjo6c2xvdENsaWNrZWQoKQogewogICAgIGVtaXQgc2Vz c2lvblNlbGVjdGVkICggdGhpcyApOwpAQCAtODEwLDYgKzgxNiw3IEBAIHZvaWQgU2Vzc2lvbkJ1 dHRvbjo6c2xvdF9jbWRfY2hhbmdlICggY29uc3QgUVN0cmluZyYgY29tbWFuZCApCiAgICAgYm9v bCBuZXdSb290bGVzcz1yb290bGVzczsKICAgICBwdWJsaXNoZWQ9ZmFsc2U7CiAgICAgUVN0cmlu ZyBjbWQ9Y29tbWFuZDsKKwogICAgIGlmICggY29tbWFuZD09IktERSIgKQogICAgIHsKICAgICAg ICAgbmV3Um9vdGxlc3M9ZmFsc2U7CkBAIC04ODcsNiArODk0LDcgQEAgdm9pZCBTZXNzaW9uQnV0 dG9uOjpzbG90X2NtZF9jaGFuZ2UgKCBjb25zdCBRU3RyaW5nJiBjb21tYW5kICkKICAgICB9CiAg ICAgZWxzZQogICAgICAgICBwaXgubG9hZCAoIHBhci0+aWNvbnNQYXRoICggIi8xNngxNi9YLnBu ZyIgKSApOworCiAgICAgY21kSWNvbi0+c2V0UGl4bWFwICggcGl4ICk7CiAKICAgICBYMmdvU2V0 dGluZ3Mgc3QgKCAic2Vzc2lvbnMiICk7CmRpZmYgLS1naXQgYS9zcmMvc2Vzc2lvbmJ1dHRvbi5o IGIvc3JjL3Nlc3Npb25idXR0b24uaAppbmRleCBkODMxZTYxLi44ZTIxY2NmIDEwMDY0NAotLS0g YS9zcmMvc2Vzc2lvbmJ1dHRvbi5oCisrKyBiL3NyYy9zZXNzaW9uYnV0dG9uLmgKQEAgLTg5LDYg Kzg5LDggQEAgcHJpdmF0ZToKICAgICBib29sIGVkaXRhYmxlOwogICAgIGJvb2wgdXBkYXRlZDsK IAorICAgIHZvaWQgc2V0dXBPcHRpb25zUGFsZXR0ZSggUVBhbGV0dGUgJmNwYWwgKTsKKwogcHJp dmF0ZSBzbG90czoKICAgICB2b2lkIHNsb3RDbGlja2VkKCk7CiAgICAgdm9pZCBzbG90RWRpdCgp OwotLSAKMi4yNy4wCgo= --000000000000c9530205a780703c--