From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 3/4] xen/dom0: Drop iommu_hwdom_inclusive entirely Date: Mon, 31 Dec 2018 15:16:22 +0000 Message-ID: <1546269383-32166-4-git-send-email-andrew.cooper3@citrix.com> References: <1546269383-32166-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1546269383-32166-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Kevin Tian , Stefano Stabellini , Wei Liu , Jun Nakajima , Andrew Cooper , Julien Grall , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBvcHRpb24gaXMgdW5pcXVlIHRvIHg4NiBQViBkb20wJ3MsIGJ1dCBpdCBpcyBub3Qgc2Vu c2libGUgdG8gaGF2ZSBhCmNhdGNoLWFsbCB3aGljaCBibGluZGx5IG1hcHMgYWxsIG5vbi1SQU0g cmVnaW9ucyBpbnRvIHRoZSBJT01NVS4KClRoZSBtYXAtcmVzZXJ2ZWQgb3B0aW9uIHJlbWFpbnMs IGFuZCBjb3ZlcnMgYWxsIHRoZSBidWdneSBmaXJtd2FyZSBpc3N1ZXMgdGhhdApJIGFtIGF3YXJl IG9mLiAgVGhlIHR3byBjb21tb24gY2FzZXMgYXJlIGxlZ2FjeSBVU0Iga2V5Ym9hcmQgZW11bGF0 aW9uLCBhbmQKdGhlIEJNQyBtYWlsYm94IHVzZWQgYnkgdmVuZG9yIGZpcm13YXJlIGluIE5JQ3Mv SEJBcyB0byByZXBvcnQgaW5mb3JtYXRpb24KYmFjayB0byB0aGUgaUxPL2lEUkFDL2V0YyBmb3Ig cmVtb3RlIHJlbW90ZSBtYW5hZ2VtZW50IHB1cnBvc2VzLgoKQSBzcGVjaWZpYyBhZHZhbnRhZ2Ug b2YgcmVtb3ZpbmcgdGhpcyBvcHRpb24gaXMgdGhhdCB4ODYgZG9tMCdzIElPTU1VIHNldHVwIGlz Cm5vdyBjb25zaXN0ZW50IGJldHdlZW4gUFYgYW5kIFBWSC4KClRoaXMgcmVtb3ZhbCBpcyBub3Qg ZXhwZWN0ZWQgdG8gaGF2ZSBhbnkgaW1wYWN0LCBkdWUgdG8gbWFwLXJlc2VydmVkCnJlbWFpbmlu Zy4gIEluIHRoZSB1bmxpa2VseSBjYXNlIHRoYXQgaXQgZG9lcyBjYXVzZSBhbiBpc3N1ZSwgd2Ug c2hvdWxkCmludHJvZHVjZSBvdGhlciBtYXAtJFNQRUNJRklDIG9wdGlvbnMgcmF0aGVyIHRoYW4g cmUtaW50cm9kdWNpbmcgdGhpcwpjYXRjaC1hbGwuCgpTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ29v cGVyIDxhbmRyZXcuY29vcGVyM0BjaXRyaXguY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxKQmV1 bGljaEBzdXNlLmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNDOiBSb2dl ciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQ0M6IFN0ZWZhbm8gU3RhYmVsbGlu aSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KQ0M6IEp1bGllbiBHcmFsbCA8anVsaWVuLmdyYWxs QGFybS5jb20+CkNDOiBKdW4gTmFrYWppbWEgPGp1bi5uYWthamltYUBpbnRlbC5jb20+CkNDOiBL ZXZpbiBUaWFuIDxrZXZpbi50aWFuQGludGVsLmNvbT4KCnYyOgogKiBOZXcKLS0tCiBkb2NzL21p c2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biAgIHwgMTkgKysrLS0tLS0tLS0tLS0tLS0tLQog eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYyAgICB8ICA0IC0tLS0KIHhlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgfCAgMyAtLS0KIHhlbi9kcml2ZXJzL3Bhc3N0 aHJvdWdoL3Z0ZC94ODYvdnRkLmMgfCAgNiAtLS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdo L3g4Ni9pb21tdS5jICAgfCAxNCArKy0tLS0tLS0tLS0tLQogeGVuL2luY2x1ZGUveGVuL2lvbW11 LmggICAgICAgICAgICAgICB8ICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygr KSwgNDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxp bmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCAw YWViNzg2Li4zYTlhZjE3IDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93bgorKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtNjY0 LDggKzY2NCw3IEBAIENvbnRyb2xzIGZvciBob3cgZG9tMCBpcyBjb25zdHJ1Y3RlZCBvbiB4ODYg c3lzdGVtcy4KICAgICBoYXJkd2FyZSBpcyBub3QgSEFQLWNhcGFibGUuCiAKICMjIyBkb20wLWlv bW11Ci0+IGA9IExpc3Qgb2YgWyBwYXNzdGhyb3VnaD08Ym9vbD4sIHN0cmljdD08Ym9vbD4sIG1h cC1pbmNsdXNpdmU9PGJvb2w+LAotPiAgICAgICAgICAgICAgbWFwLXJlc2VydmVkPTxib29sPiBd YAorPiBgPSBMaXN0IG9mIFsgcGFzc3Rocm91Z2g9PGJvb2w+LCBzdHJpY3Q9PGJvb2w+LCBtYXAt cmVzZXJ2ZWQ9PGJvb2w+IF1gCiAKIENvbnRyb2xzIGZvciB0aGUgZG9tMCBJT01NVSBzZXR1cC4K IApAQCAtNjkyLDkgKzY5MSw4IEBAIENvbnRyb2xzIGZvciB0aGUgZG9tMCBJT01NVSBzZXR1cC4K ICAgICBvdGhlciBkb21haW5zIGluIHRoZSBzeXN0ZW0gZG9uJ3QgbGl2ZSBpbiBhIGNvbXBhdGli bGUgYWRkcmVzcyBzcGFjZSksIGFuZAogICAgIGlzIGlnbm9yZWQgZm9yIEFSTS4KIAotKiAgIFRo ZSBgbWFwLWluY2x1c2l2ZWAgYm9vbGVhbiBpcyBhcHBsaWNhYmxlIHRvIHg4NiBQViBkb20wJ3Ms IGFuZCBzZXRzIHVwCi0gICAgaWRlbnRpdHkgSU9NTVUgbWFwcGluZ3MgZm9yIGFsbCBub24tUkFN IHJlZ2lvbnMgYmVsb3cgNEdCIGV4Y2VwdCBmb3IKLSAgICB1bnVzYWJsZSByYW5nZXMsIGFuZCBy YW5nZXMgYmVsb25naW5nIHRvIFhlbi4KKyogICBUaGUgYG1hcC1yZXNlcnZlZGAgYm9vbGVhbiBp cyBhcHBsaWNhYmxlIHRvIHg4NiwgYW5kIHNldHMgdXAgaWRlbnRpdHkgSU9NTVUKKyAgICBtYXBw aW5ncyBmb3IgYWxsIEU4MjAgcmVzZXJ2ZWQgcmVnaW9ucyBiZWxvdyA0R0IuCiAKICAgICBUeXBp Y2FsbHksIHNvbWUgZGV2aWNlcyBpbiBhIHN5c3RlbSB1c2UgYml0cyBvZiBSQU0gZm9yIGNvbW11 bmljYXRpb24sIGFuZAogICAgIHRoZXNlIGFyZWFzIHNob3VsZCBiZSBsaXN0ZWQgYXMgcmVzZXJ2 ZWQgaW4gdGhlIEU4MjAgdGFibGUgYW5kIGlkZW50aWZpZWQKQEAgLTcwOCwxMSArNzA2LDYgQEAg Q29udHJvbHMgZm9yIHRoZSBkb20wIElPTU1VIHNldHVwLgogICAgIFRoaXMgb3B0aW9uIGlzIGVu YWJsZWQgYnkgZGVmYXVsdCBvbiB4ODYgc3lzdGVtcywgYW5kIGludmFsaWQgb24gQVJNCiAgICAg c3lzdGVtcy4KIAotKiAgIFRoZSBgbWFwLXJlc2VydmVkYCBmdW5jdGlvbmFsaXR5IGlzIHZlcnkg c2ltaWxhciB0byBgbWFwLWluY2x1c2l2ZWAsIGJ1dCBpcwotICAgIGFwcGxpY2FibGUgdG8gYm90 aCB4ODYgUFYgYW5kIFBWSCBkb20wJ3MsIGFuZCByZXByZXNlbnRzIGEgc3Vic2V0IG9mIHRoZQot ICAgIGNvcnJlY3Rpb24gYnkgb25seSBtYXBwaW5nIHJlc2VydmVkIG1lbW9yeSByZWdpb25zIHJh dGhlciB0aGFuIGFsbCBub24tUkFNCi0gICAgcmVnaW9ucy4KLQogIyMjIGRvbTBcX2lvcG9ydHNc X2Rpc2FibGUgKHg4NikKID4gYD0gTGlzdCBvZiA8aGV4Pi08aGV4PmAKIApAQCAtMTI1MywxMiAr MTI0Niw2IEBAIFNwZWNpZnkgdGhlIHRpbWVvdXQgb2YgdGhlIGRldmljZSBJT1RMQiBpbnZhbGlk YXRpb24gaW4gbWlsbGlzZWNvbmRzLgogQnkgZGVmYXVsdCwgdGhlIHRpbWVvdXQgaXMgMTAwMCBt cy4gV2hlbiB5b3Ugc2VlIGVycm9yICdRdWV1ZSBpbnZhbGlkYXRlCiB3YWl0IGRlc2NyaXB0b3Ig dGltZWQgb3V0JywgdHJ5IGluY3JlYXNpbmcgdGhpcyB2YWx1ZS4KIAotIyMjIGlvbW11X2luY2x1 c2l2ZV9tYXBwaW5nCi0+IGA9IDxib29sZWFuPmAKLQotKipXQVJOSU5HOiBUaGlzIGNvbW1hbmQg bGluZSBvcHRpb24gaXMgZGVwcmVjYXRlZCwgYW5kIHN1cGVyc2VkZWQgYnkKLV9kb20wLWlvbW11 PW1hcC1pbmNsdXNpdmVfIC0gdXNpbmcgYm90aCBvcHRpb25zIGluIGNvbWJpbmF0aW9uIGlzIHVu ZGVmaW5lZC4qKgotCiAjIyMgaXJxXF9yYXRlbGltaXQgKHg4NikKID4gYD0gPGludGVnZXI+YAog CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jIGIveGVuL2Ry aXZlcnMvcGFzc3Rocm91Z2gvYXJtL3NtbXUuYwppbmRleCA5NjEyYzBmLi4xNmRlN2UxIDEwMDY0 NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9hcm0vc21tdS5jCisrKyBiL3hlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2FybS9zbW11LmMKQEAgLTI3MTEsMTAgKzI3MTEsNiBAQCBzdGF0aWMg aW50IGFybV9zbW11X2lvbW11X2RvbWFpbl9pbml0KHN0cnVjdCBkb21haW4gKmQpCiBzdGF0aWMg dm9pZCBfX2h3ZG9tX2luaXQgYXJtX3NtbXVfaW9tbXVfaHdkb21faW5pdChzdHJ1Y3QgZG9tYWlu ICpkKQogewogCS8qIFNldCB0byBmYWxzZSBvcHRpb25zIG5vdCBzdXBwb3J0ZWQgb24gQVJNLiAq LwotCWlmICggaW9tbXVfaHdkb21faW5jbHVzaXZlID09IDEgKQotCQlwcmludGsoWEVOTE9HX1dB Uk5JTkcKLQkJIm1hcC1pbmNsdXNpdmUgZG9tMC1pb21tdSBvcHRpb24gaXMgbm90IHN1cHBvcnRl ZCBvbiBBUk1cbiIpOwotCWlvbW11X2h3ZG9tX2luY2x1c2l2ZSA9IDA7CiAJaWYgKCBpb21tdV9o d2RvbV9yZXNlcnZlZCA9PSAxICkKIAkJcHJpbnRrKFhFTkxPR19XQVJOSU5HCiAJCSJtYXAtcmVz ZXJ2ZWQgZG9tMC1pb21tdSBvcHRpb24gaXMgbm90IHN1cHBvcnRlZCBvbiBBUk1cbiIpOwpkaWZm IC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bh c3N0aHJvdWdoL2lvbW11LmMKaW5kZXggYWM2MmQ3Zi4uZDJlZTJlZSAxMDA2NDQKLS0tIGEveGVu L2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9tbXUuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9pb21tdS5jCkBAIC02MSw3ICs2MSw2IEBAIGJvb2xfdCBfX3JlYWRfbW9zdGx5IGlvbW11X2lu dHJlbWFwID0gMTsKIAogYm9vbCBfX2h3ZG9tX2luaXRkYXRhIGlvbW11X2h3ZG9tX3N0cmljdDsK IGJvb2wgX19yZWFkX21vc3RseSBpb21tdV9od2RvbV9wYXNzdGhyb3VnaDsKLWludDhfdCBfX2h3 ZG9tX2luaXRkYXRhIGlvbW11X2h3ZG9tX2luY2x1c2l2ZSA9IC0xOwogaW50OF90IF9faHdkb21f aW5pdGRhdGEgaW9tbXVfaHdkb21fcmVzZXJ2ZWQgPSAtMTsKIAogLyoKQEAgLTE1NCw4ICsxNTMs NiBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9kb20wX2lvbW11X3BhcmFtKGNvbnN0IGNoYXIg KnMpCiAgICAgICAgICAgICBpb21tdV9od2RvbV9wYXNzdGhyb3VnaCA9IHZhbDsKICAgICAgICAg ZWxzZSBpZiAoICh2YWwgPSBwYXJzZV9ib29sZWFuKCJzdHJpY3QiLCBzLCBzcykpID49IDAgKQog ICAgICAgICAgICAgaW9tbXVfaHdkb21fc3RyaWN0ID0gdmFsOwotICAgICAgICBlbHNlIGlmICgg KHZhbCA9IHBhcnNlX2Jvb2xlYW4oIm1hcC1pbmNsdXNpdmUiLCBzLCBzcykpID49IDAgKQotICAg ICAgICAgICAgaW9tbXVfaHdkb21faW5jbHVzaXZlID0gdmFsOwogICAgICAgICBlbHNlIGlmICgg KHZhbCA9IHBhcnNlX2Jvb2xlYW4oIm1hcC1yZXNlcnZlZCIsIHMsIHNzKSkgPj0gMCApCiAgICAg ICAgICAgICBpb21tdV9od2RvbV9yZXNlcnZlZCA9IHZhbDsKICAgICAgICAgZWxzZQpkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQuYyBiL3hlbi9kcml2ZXJz L3Bhc3N0aHJvdWdoL3Z0ZC94ODYvdnRkLmMKaW5kZXggZmY0NTZlMS4uY2Y5ZDdlMSAxMDA2NDQK LS0tIGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvdnRkL3g4Ni92dGQuYworKysgYi94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQveDg2L3Z0ZC5jCkBAIC0zMCwxMiArMzAsNiBAQAogI2luY2x1 ZGUgIi4uL3Z0ZC5oIgogI2luY2x1ZGUgIi4uL2V4dGVybi5oIgogCi0vKgotICogaW9tbXVfaW5j bHVzaXZlX21hcHBpbmc6IHdoZW4gc2V0LCBhbGwgbWVtb3J5IGJlbG93IDRHQiBpcyBpbmNsdWRl ZCBpbiBkb20wCi0gKiAxOjEgaW9tbXUgbWFwcGluZ3MgZXhjZXB0IHhlbiBhbmQgdW51c2FibGUg cmVnaW9ucy4KLSAqLwotYm9vbGVhbl9wYXJhbSgiaW9tbXVfaW5jbHVzaXZlX21hcHBpbmciLCBp b21tdV9od2RvbV9pbmNsdXNpdmUpOwotCiB2b2lkICptYXBfdnRkX2RvbWFpbl9wYWdlKHU2NCBt YWRkcikKIHsKICAgICByZXR1cm4gbWFwX2RvbWFpbl9wYWdlKF9tZm4ocGFkZHJfdG9fcGZuKG1h ZGRyKSkpOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwppbmRleCBjNjhhNzIyLi4wY2Ni NzU0IDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYworKysg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwpAQCAtMTY5LDEwICsxNjksMTAg QEAgc3RhdGljIGJvb2wgX19od2RvbV9pbml0IGh3ZG9tX2lvbW11X21hcChjb25zdCBzdHJ1Y3Qg ZG9tYWluICpkLAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGlmICggdHlwZSAmIFJBTV9UWVBFX1JF U0VSVkVEICkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCAhaW9tbXVfaHdkb21faW5jbHVz aXZlICYmICFpb21tdV9od2RvbV9yZXNlcnZlZCApCisgICAgICAgICAgICBpZiAoICFpb21tdV9o d2RvbV9yZXNlcnZlZCApCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9 Ci0gICAgICAgIGVsc2UgaWYgKCBpc19odm1fZG9tYWluKGQpIHx8ICFpb21tdV9od2RvbV9pbmNs dXNpdmUgfHwgcGZuID4gbWF4X3BmbiApCisgICAgICAgIGVsc2UgaWYgKCBpc19odm1fZG9tYWlu KGQpIHx8IHBmbiA+IG1heF9wZm4gKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K IApAQCAtMjEwLDIwICsyMTAsMTAgQEAgdm9pZCBfX2h3ZG9tX2luaXQgYXJjaF9pb21tdV9od2Rv bV9pbml0KHN0cnVjdCBkb21haW4gKmQpCiAKICAgICBCVUdfT04oIWlzX2hhcmR3YXJlX2RvbWFp bihkKSk7CiAKLSAgICAvKiBJbmNsdXNpdmUgbWFwcGluZ3MgYXJlIGVuYWJsZWQgYnkgZGVmYXVs dCBmb3IgUFYuICovCi0gICAgaWYgKCBpb21tdV9od2RvbV9pbmNsdXNpdmUgPT0gLTEgKQotICAg ICAgICBpb21tdV9od2RvbV9pbmNsdXNpdmUgPSBpc19wdl9kb21haW4oZCk7CiAgICAgLyogUmVz ZXJ2ZWQgSU9NTVUgbWFwcGluZ3MgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdC4gKi8KICAgICBpZiAo IGlvbW11X2h3ZG9tX3Jlc2VydmVkID09IC0xICkKICAgICAgICAgaW9tbXVfaHdkb21fcmVzZXJ2 ZWQgPSAxOwogCi0gICAgaWYgKCBpb21tdV9od2RvbV9pbmNsdXNpdmUgJiYgIWlzX3B2X2RvbWFp bihkKSApCi0gICAgewotICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcKLSAgICAgICAgICAg ICAgICJJT01NVSBpbmNsdXNpdmUgbWFwcGluZ3MgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIFBWIERv bTBcbiIpOwotICAgICAgICBpb21tdV9od2RvbV9pbmNsdXNpdmUgPSAwOwotICAgIH0KLQogICAg IGlmICggaW9tbXVfaHdkb21fcGFzc3Rocm91Z2ggKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oIGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgK aW5kZXggM2Q3ODEyNi4uNDlkMGYwZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL2lvbW11 LmgKKysrIGIveGVuL2luY2x1ZGUveGVuL2lvbW11LmgKQEAgLTYxLDcgKzYxLDcgQEAgZXh0ZXJu IGJvb2xfdCBpb21tdV9kZWJ1ZzsKIGV4dGVybiBib29sX3QgYW1kX2lvbW11X3BlcmRldl9pbnRy ZW1hcDsKIAogZXh0ZXJuIGJvb2wgaW9tbXVfaHdkb21fc3RyaWN0LCBpb21tdV9od2RvbV9wYXNz dGhyb3VnaDsKLWV4dGVybiBpbnQ4X3QgaW9tbXVfaHdkb21faW5jbHVzaXZlLCBpb21tdV9od2Rv bV9yZXNlcnZlZDsKK2V4dGVybiBpbnQ4X3QgaW9tbXVfaHdkb21fcmVzZXJ2ZWQ7CiAKIGV4dGVy biB1bnNpZ25lZCBpbnQgaW9tbXVfZGV2X2lvdGxiX3RpbWVvdXQ7CiAKLS0gCjIuMS40CgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54 ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==