From mboxrd@z Thu Jan 1 00:00:00 1970 From: serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org Subject: [PATCH 3/8] cgroup: introduce cgroup namespaces Date: Fri, 29 Jan 2016 02:54:06 -0600 Message-ID: <1454057651-23959-4-git-send-email-serge.hallyn@ubuntu.com> References: <1454057651-23959-1-git-send-email-serge.hallyn@ubuntu.com> Reply-To: LXC development mailing-list Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1454057651-23959-1-git-send-email-serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lxc-devel-bounces-cunTk1MwBs9qMoObBWhMNEqPaTDuhLve2LY78lusg7I@public.gmane.org Sender: "lxc-devel" To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: adityakali-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, Serge Hallyn , linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, hannes-druUgvl0LCNAfugRpC6u6w@public.gmane.org, lxc-devel-cunTk1MwBs9qMoObBWhMNEqPaTDuhLve2LY78lusg7I@public.gmane.org, gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org, tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org List-Id: linux-api@vger.kernel.org RnJvbTogQWRpdHlhIEthbGkgPGFkaXR5YWthbGlAZ29vZ2xlLmNvbT4KCkludHJvZHVjZSB0aGUg YWJpbGl0eSB0byBjcmVhdGUgbmV3IGNncm91cCBuYW1lc3BhY2UuIFRoZSBuZXdseSBjcmVhdGVk CmNncm91cCBuYW1lc3BhY2UgcmVtZW1iZXJzIHRoZSBjZ3JvdXAgb2YgdGhlIHByb2Nlc3MgYXQg dGhlIHBvaW50Cm9mIGNyZWF0aW9uIG9mIHRoZSBjZ3JvdXAgbmFtZXNwYWNlIChyZWZlcnJlZCBh cyBjZ3JvdXBucy1yb290KS4KVGhlIG1haW4gcHVycG9zZSBvZiBjZ3JvdXAgbmFtZXNwYWNlIGlz IHRvIHZpcnR1YWxpemUgdGhlIGNvbnRlbnRzCm9mIC9wcm9jL3NlbGYvY2dyb3VwIGZpbGUuIFBy b2Nlc3NlcyBpbnNpZGUgYSBjZ3JvdXAgbmFtZXNwYWNlCmFyZSBvbmx5IGFibGUgdG8gc2VlIHBh dGhzIHJlbGF0aXZlIHRvIHRoZWlyIG5hbWVzcGFjZSByb290Cih1bmxlc3MgdGhleSBhcmUgbW92 ZWQgb3V0c2lkZSBvZiB0aGVpciBjZ3JvdXBucy1yb290LCBhdCB3aGljaCBwb2ludAogdGhleSB3 aWxsIHNlZSBhIHJlbGF0aXZlIHBhdGggZnJvbSB0aGVpciBjZ3JvdXBucy1yb290KS4KRm9yIGEg Y29ycmVjdGx5IHNldHVwIGNvbnRhaW5lciB0aGlzIGVuYWJsZXMgY29udGFpbmVyLXRvb2xzCihs aWtlIGxpYmNvbnRhaW5lciwgbHhjLCBsbWN0ZnksIGV0Yy4pIHRvIGNyZWF0ZSBjb21wbGV0ZWx5 IHZpcnR1YWxpemVkCmNvbnRhaW5lcnMgd2l0aG91dCBsZWFraW5nIHN5c3RlbSBsZXZlbCBjZ3Jv dXAgaGllcmFyY2h5IHRvIHRoZSB0YXNrLgpUaGlzIHBhdGNoIG9ubHkgaW1wbGVtZW50cyB0aGUg J3Vuc2hhcmUnIHBhcnQgb2YgdGhlIGNncm91cG5zLgoKU2lnbmVkLW9mZi1ieTogQWRpdHlhIEth bGkgPGFkaXR5YWthbGlAZ29vZ2xlLmNvbT4KU2lnbmVkLW9mZi1ieTogU2VyZ2UgSGFsbHluIDxz ZXJnZS5oYWxseW5AY2Fub25pY2FsLmNvbT4KLS0tCkNoYW5nZWxvZzogMjAxNS0xMS0yNAoJLSBt b3ZlIGNncm91cF9uYW1lc3BhY2UuYyBpbnRvIGNncm91cC5jIChhbmQgLmgpCgktIHJlZm9ybWF0 dGluZwoJLSBtYWtlIGdldF9jZ3JvdXBfbnMgcmV0dXJuIHZvaWQKCS0gcmVuYW1lIG5zLT5yb290 X2NncnBzIHRvIHJvb3RfY3NldC4KQ2hhbmdlbG9nOiAyMDE1LTEyLTA4CgktIE1vdmUgaW5pdF9j Z3JvdXBfbnMgdG8gb3RoZXIgdmFyaWFibGUgZGVjbGFyYXRpb25zCgktIFJlbW92ZSBhY2NpZGVu dGFsIGNvbnZlcnNpb24gb2YgcHV0LWNzc19zZXQgdG8gaW5saW5lCgktIERyb3AgQlVHX09OKE5V TEwpCgktIFJlbW92ZSB1bm5lZWRlZCBwcmUgZGVjbGFyYXRpb24gb2Ygc3RydWN0IGNncm91cG5z X29wZXJhdGlvbnMuCgktIGNncm91cC5oOiBjb2xsZWN0IGNvbW1vbiBucyBkZWNsZXJhdGlvbnMK Q2hhbmdlbG9nOiAyMDE1LTEyLTA5CgktIGNncm91cC5oOiBtb3ZlIG5zIGRlY2xhcmF0aW9ucyB0 byBib3R0b20KCS0gY2dyb3VwLmM6IHVuZG8gYWxsIGFjY2lkZW50YWwgY29udmVyc2lvbnMgdG8g aW5saW5lCkNoYW5nZWxvZzogMjAxNS0xMi0yMgoJLSB1cGRhdGUgZm9yIG5ldyBrZXJuZnNfcGF0 aF9mcm9tX25vZGUoKSByZXR1cm4gdmFsdWUuICBTaW5jZQoJICBjZ3JvdXBfcGF0aCB3YXMgYWxy ZWFkeSBncGwtZXhwb3J0ZWQsIEkgYWJzdGFpbmVkIGZyb20gdXBkYXRpbmcKCSAgaXRzIHJldHVy biB2YWx1ZS4KQ2hhbmdlbG9nOiAyMDE1LTEyLTIzCgktIGNncm91cF9wYXRoKCk6IHVzZSBpbml0 X2Nncm91cF9ucyB3aGVuIGluIGludGVydXB0IGNvbnRleHQuCkNoYW5nZWxvZzogMjAxNS0wMS0w MgoJLSBtb3ZlIHRvX2NnX25zIGRlZmluaXRpb24gZm9yd2FyZCBpbiBwYXRjaCBzZXJpZXMKCS0g Y2dyb3VwX3JlbGVhc2VfYWdlbnQ6IGdyYWIgY3NzX3NldF9sb2NrIGFyb3VuZCBjZ3JvdXBfcGF0 aCgpCgktIGxlYXZlIGNncm91cF9wYXRoIG5vbi1uYW1lc3BhY2VkLCB1c2UgY2dyb3VwX3BhdGhf bnMgd2hlbgoJICBuYW1lc3BhY2VkIHBhdGggaXMgZGVzaXJlZC4KQ2hhbmdlbG9nOiAyMDE1LTAx LTA0CgktIGNncm91cF9wYXRoOiBjb250aW51ZSB0byB1c2Uga2VybmZzX3BhdGguICBTaW5jZSBj Z3JvdXBfcGF0aCBpcwoJICBub24tbmFtZXNwYWNlZCwgdXNlIHRoZSBvbGQgdmVyc2lvbi4KCS0g bWFrZSBjZ3JvdXBfcGF0aF9uc19sb2NrZWQoKSBzdGF0aWMuCkNoYW5nZWxvZzogMjAxNS0wMS0w NQoJLSBkb24ndCBuYW1lc3BhY2UgdGhlIHBhdGggcHJpbnRlZCBpbiBkZWJ1Z2ZzLgpDaGFuZ2Vs b2c6IDIwMTUtMDEtMjcKCS0gcmVtb3ZlIHVubmVlZGVkIE5VTEwgY2hlY2sgYmVmb3JlIHB1dF9j Z3JvdXBfbnMoKQpDaGFuZ2Vsb2c6IDIwMTUtMDEtMjgKCS0gbG9jayBhcm91bmQgdGFza19jc3Nf c2V0IGluIGNvcHlfY2dyb3VwX25zLCBhbmQgZG9uJ3QKCSAgdGFrZSByY3UgbG9jayBhcm91bmMg Y29weV9jZ3JvdXBfbnMgY2FsbCBpbiBjcHVzZXQuCi0tLQogZnMvcHJvYy9uYW1lc3BhY2VzLmMg ICAgfCAgICAzICsKIGluY2x1ZGUvbGludXgvY2dyb3VwLmggIHwgICA0OSArKysrKysrKysrKysr CiBpbmNsdWRlL2xpbnV4L25zcHJveHkuaCB8ICAgIDIgKwogaW5jbHVkZS9saW51eC9wcm9jX25z LmggfCAgICA0ICsrCiBrZXJuZWwvY2dyb3VwLmMgICAgICAgICB8ICAxNzYgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGtlcm5lbC9jcHVzZXQuYyAgICAg ICAgIHwgICAgOCArLS0KIGtlcm5lbC9mb3JrLmMgICAgICAgICAgIHwgICAgMiArLQoga2VybmVs L25zcHJveHkuYyAgICAgICAgfCAgIDE5ICsrKystCiA4IGZpbGVzIGNoYW5nZWQsIDI1MyBpbnNl cnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9mcy9wcm9jL25hbWVzcGFj ZXMuYyBiL2ZzL3Byb2MvbmFtZXNwYWNlcy5jCmluZGV4IDI3NmYxMjQuLjcyY2IyNmYgMTAwNjQ0 Ci0tLSBhL2ZzL3Byb2MvbmFtZXNwYWNlcy5jCisrKyBiL2ZzL3Byb2MvbmFtZXNwYWNlcy5jCkBA IC0yOCw2ICsyOCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvY19uc19vcGVyYXRpb25zICpu c19lbnRyaWVzW10gPSB7CiAJJnVzZXJuc19vcGVyYXRpb25zLAogI2VuZGlmCiAJJm1udG5zX29w ZXJhdGlvbnMsCisjaWZkZWYgQ09ORklHX0NHUk9VUFMKKwkmY2dyb3VwbnNfb3BlcmF0aW9ucywK KyNlbmRpZgogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKnByb2NfbnNfZ2V0X2xpbmsoc3RydWN0 IGRlbnRyeSAqZGVudHJ5LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZ3JvdXAuaCBiL2lu Y2x1ZGUvbGludXgvY2dyb3VwLmgKaW5kZXggMjE2MmRjYS4uMTc3M2FmMCAxMDA2NDQKLS0tIGEv aW5jbHVkZS9saW51eC9jZ3JvdXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nncm91cC5oCkBAIC0x Nyw2ICsxNywxMSBAQAogI2luY2x1ZGUgPGxpbnV4L3NlcV9maWxlLmg+CiAjaW5jbHVkZSA8bGlu dXgva2VybmZzLmg+CiAjaW5jbHVkZSA8bGludXgvanVtcF9sYWJlbC5oPgorI2luY2x1ZGUgPGxp bnV4L25zcHJveHkuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4 L25zX2NvbW1vbi5oPgorI2luY2x1ZGUgPGxpbnV4L25zcHJveHkuaD4KKyNpbmNsdWRlIDxsaW51 eC91c2VyX25hbWVzcGFjZS5oPgogCiAjaW5jbHVkZSA8bGludXgvY2dyb3VwLWRlZnMuaD4KIApA QCAtNjExLDQgKzYxNiw0OCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2dyb3VwX3NrX2ZyZWUoc3Ry dWN0IHNvY2tfY2dyb3VwX2RhdGEgKnNrY2QpIHt9CiAKICNlbmRpZgkvKiBDT05GSUdfQ0dST1VQ X0RBVEEgKi8KIAorc3RydWN0IGNncm91cF9uYW1lc3BhY2UgeworCWF0b21pY190CQljb3VudDsK KwlzdHJ1Y3QgbnNfY29tbW9uCW5zOworCXN0cnVjdCB1c2VyX25hbWVzcGFjZQkqdXNlcl9uczsK KwlzdHJ1Y3QgY3NzX3NldCAgICAgICAgICAqcm9vdF9jc2V0OworfTsKKworZXh0ZXJuIHN0cnVj dCBjZ3JvdXBfbmFtZXNwYWNlIGluaXRfY2dyb3VwX25zOworCisjaWZkZWYgQ09ORklHX0NHUk9V UFMKKwordm9pZCBmcmVlX2Nncm91cF9ucyhzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZSAqbnMpOwor CitzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZSAqCitjb3B5X2Nncm91cF9ucyh1bnNpZ25lZCBsb25n IGZsYWdzLCBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnVzZXJfbnMsCisJICAgICAgIHN0cnVjdCBj Z3JvdXBfbmFtZXNwYWNlICpvbGRfbnMpOworCitjaGFyICpjZ3JvdXBfcGF0aF9ucyhzdHJ1Y3Qg Y2dyb3VwICpjZ3JwLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4sCisJCSAgICAgc3RydWN0IGNn cm91cF9uYW1lc3BhY2UgKm5zKTsKKworI2Vsc2UgLyogIUNPTkZJR19DR1JPVVBTICovCisKK3N0 YXRpYyBpbmxpbmUgdm9pZCBmcmVlX2Nncm91cF9ucyhzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZSAq bnMpIHsgfQorc3RhdGljIGlubGluZSBzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZSAqCitjb3B5X2Nn cm91cF9ucyh1bnNpZ25lZCBsb25nIGZsYWdzLCBzdHJ1Y3QgdXNlcl9uYW1lc3BhY2UgKnVzZXJf bnMsCisJICAgICAgIHN0cnVjdCBjZ3JvdXBfbmFtZXNwYWNlICpvbGRfbnMpCit7CisJcmV0dXJu IG9sZF9uczsKK30KKworI2VuZGlmIC8qICFDT05GSUdfQ0dST1VQUyAqLworCitzdGF0aWMgaW5s aW5lIHZvaWQgZ2V0X2Nncm91cF9ucyhzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZSAqbnMpCit7CisJ aWYgKG5zKQorCQlhdG9taWNfaW5jKCZucy0+Y291bnQpOworfQorCitzdGF0aWMgaW5saW5lIHZv aWQgcHV0X2Nncm91cF9ucyhzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZSAqbnMpCit7CisJaWYgKG5z ICYmIGF0b21pY19kZWNfYW5kX3Rlc3QoJm5zLT5jb3VudCkpCisJCWZyZWVfY2dyb3VwX25zKG5z KTsKK30KKwogI2VuZGlmIC8qIF9MSU5VWF9DR1JPVVBfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9saW51eC9uc3Byb3h5LmggYi9pbmNsdWRlL2xpbnV4L25zcHJveHkuaAppbmRleCAzNWZhMDhm Li5hYzBkNjViIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25zcHJveHkuaAorKysgYi9pbmNs dWRlL2xpbnV4L25zcHJveHkuaApAQCAtOCw2ICs4LDcgQEAgc3RydWN0IG1udF9uYW1lc3BhY2U7 CiBzdHJ1Y3QgdXRzX25hbWVzcGFjZTsKIHN0cnVjdCBpcGNfbmFtZXNwYWNlOwogc3RydWN0IHBp ZF9uYW1lc3BhY2U7CitzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZTsKIHN0cnVjdCBmc19zdHJ1Y3Q7 CiAKIC8qCkBAIC0zMyw2ICszNCw3IEBAIHN0cnVjdCBuc3Byb3h5IHsKIAlzdHJ1Y3QgbW50X25h bWVzcGFjZSAqbW50X25zOwogCXN0cnVjdCBwaWRfbmFtZXNwYWNlICpwaWRfbnNfZm9yX2NoaWxk cmVuOwogCXN0cnVjdCBuZXQgCSAgICAgKm5ldF9uczsKKwlzdHJ1Y3QgY2dyb3VwX25hbWVzcGFj ZSAqY2dyb3VwX25zOwogfTsKIGV4dGVybiBzdHJ1Y3QgbnNwcm94eSBpbml0X25zcHJveHk7CiAK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcHJvY19ucy5oIGIvaW5jbHVkZS9saW51eC9wcm9j X25zLmgKaW5kZXggNDJkZmM2MS4uZGUwZTc3MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9w cm9jX25zLmgKKysrIGIvaW5jbHVkZS9saW51eC9wcm9jX25zLmgKQEAgLTksNiArOSw4IEBACiBz dHJ1Y3QgcGlkX25hbWVzcGFjZTsKIHN0cnVjdCBuc3Byb3h5Owogc3RydWN0IHBhdGg7CitzdHJ1 Y3QgdGFza19zdHJ1Y3Q7CitzdHJ1Y3QgaW5vZGU7CiAKIHN0cnVjdCBwcm9jX25zX29wZXJhdGlv bnMgewogCWNvbnN0IGNoYXIgKm5hbWU7CkBAIC0yNCw2ICsyNiw3IEBAIGV4dGVybiBjb25zdCBz dHJ1Y3QgcHJvY19uc19vcGVyYXRpb25zIGlwY25zX29wZXJhdGlvbnM7CiBleHRlcm4gY29uc3Qg c3RydWN0IHByb2NfbnNfb3BlcmF0aW9ucyBwaWRuc19vcGVyYXRpb25zOwogZXh0ZXJuIGNvbnN0 IHN0cnVjdCBwcm9jX25zX29wZXJhdGlvbnMgdXNlcm5zX29wZXJhdGlvbnM7CiBleHRlcm4gY29u c3Qgc3RydWN0IHByb2NfbnNfb3BlcmF0aW9ucyBtbnRuc19vcGVyYXRpb25zOworZXh0ZXJuIGNv bnN0IHN0cnVjdCBwcm9jX25zX29wZXJhdGlvbnMgY2dyb3VwbnNfb3BlcmF0aW9uczsKIAogLyoK ICAqIFdlIGFsd2F5cyBkZWZpbmUgdGhlc2UgZW51bWVyYXRvcnMKQEAgLTM0LDYgKzM3LDcgQEAg ZW51bSB7CiAJUFJPQ19VVFNfSU5JVF9JTk8JPSAweEVGRkZGRkZFVSwKIAlQUk9DX1VTRVJfSU5J VF9JTk8JPSAweEVGRkZGRkZEVSwKIAlQUk9DX1BJRF9JTklUX0lOTwk9IDB4RUZGRkZGRkNVLAor CVBST0NfQ0dST1VQX0lOSVRfSU5PCT0gMHhFRkZGRkZGQlUsCiB9OwogCiAjaWZkZWYgQ09ORklH X1BST0NfRlMKZGlmZiAtLWdpdCBhL2tlcm5lbC9jZ3JvdXAuYyBiL2tlcm5lbC9jZ3JvdXAuYwpp bmRleCBjMDNhNjQwLi5kODI4ZTFmIDEwMDY0NAotLS0gYS9rZXJuZWwvY2dyb3VwLmMKKysrIGIv a2VybmVsL2Nncm91cC5jCkBAIC01OCw2ICs1OCw5IEBACiAjaW5jbHVkZSA8bGludXgva3RocmVh ZC5oPgogI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CiAjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+ CisjaW5jbHVkZSA8bGludXgvcHJvY19ucy5oPgorI2luY2x1ZGUgPGxpbnV4L25zcHJveHkuaD4K KyNpbmNsdWRlIDxsaW51eC9wcm9jX25zLmg+CiAjaW5jbHVkZSA8bmV0L3NvY2suaD4KIAogLyoK QEAgLTIwOCw2ICsyMTEsMTUgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaGF2ZV9mb3JrX2NhbGxi YWNrIF9fcmVhZF9tb3N0bHk7CiBzdGF0aWMgdW5zaWduZWQgbG9uZyBoYXZlX2V4aXRfY2FsbGJh Y2sgX19yZWFkX21vc3RseTsKIHN0YXRpYyB1bnNpZ25lZCBsb25nIGhhdmVfZnJlZV9jYWxsYmFj ayBfX3JlYWRfbW9zdGx5OwogCisvKiBDZ3JvdXAgbmFtZXNwYWNlIGZvciBpbml0IHRhc2sgKi8K K3N0cnVjdCBjZ3JvdXBfbmFtZXNwYWNlIGluaXRfY2dyb3VwX25zID0geworCS5jb3VudAkJPSB7 IC5jb3VudGVyID0gMiwgfSwKKwkudXNlcl9ucwk9ICZpbml0X3VzZXJfbnMsCisJLm5zLm9wcwkJ PSAmY2dyb3VwbnNfb3BlcmF0aW9ucywKKwkubnMuaW51bQk9IFBST0NfQ0dST1VQX0lOSVRfSU5P LAorCS5yb290X2NzZXQJPSAmaW5pdF9jc3Nfc2V0LAorfTsKKwogLyogRGl0dG8gZm9yIHRoZSBj YW5fZm9yayBjYWxsYmFjay4gKi8KIHN0YXRpYyB1bnNpZ25lZCBsb25nIGhhdmVfY2FuZm9ya19j YWxsYmFjayBfX3JlYWRfbW9zdGx5OwogCkBAIC0yMTY2LDYgKzIxNzgsMzYgQEAgc3RhdGljIHN0 cnVjdCBmaWxlX3N5c3RlbV90eXBlIGNncm91cDJfZnNfdHlwZSA9IHsKIAkua2lsbF9zYiA9IGNn cm91cF9raWxsX3NiLAogfTsKIAorc3RhdGljIGNoYXIgKgorY2dyb3VwX3BhdGhfbnNfbG9ja2Vk KHN0cnVjdCBjZ3JvdXAgKmNncnAsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZmxlbiwKKwkJICAgICAg c3RydWN0IGNncm91cF9uYW1lc3BhY2UgKm5zKQoreworCWludCByZXQ7CisJc3RydWN0IGNncm91 cCAqcm9vdCA9IGNzZXRfY2dyb3VwX2Zyb21fcm9vdChucy0+cm9vdF9jc2V0LCBjZ3JwLT5yb290 KTsKKworCXJldCA9IGtlcm5mc19wYXRoX2Zyb21fbm9kZShjZ3JwLT5rbiwgcm9vdC0+a24sIGJ1 ZiwgYnVmbGVuKTsKKwlpZiAocmV0IDwgMCB8fCByZXQgPj0gYnVmbGVuKQorCQlyZXR1cm4gTlVM TDsKKwlyZXR1cm4gYnVmOworfQorCitjaGFyICpjZ3JvdXBfcGF0aF9ucyhzdHJ1Y3QgY2dyb3Vw ICpjZ3JwLCBjaGFyICpidWYsIHNpemVfdCBidWZsZW4sCisJCSAgICAgc3RydWN0IGNncm91cF9u YW1lc3BhY2UgKm5zKQoreworCWNoYXIgKnJldDsKKworCW11dGV4X2xvY2soJmNncm91cF9tdXRl eCk7CisJc3Bpbl9sb2NrX2JoKCZjc3Nfc2V0X2xvY2spOworCisJcmV0ID0gY2dyb3VwX3BhdGhf bnNfbG9ja2VkKGNncnAsIGJ1ZiwgYnVmbGVuLCBucyk7CisKKwlzcGluX3VubG9ja19iaCgmY3Nz X3NldF9sb2NrKTsKKwltdXRleF91bmxvY2soJmNncm91cF9tdXRleCk7CisKKwlyZXR1cm4gcmV0 OworfQorRVhQT1JUX1NZTUJPTF9HUEwoY2dyb3VwX3BhdGhfbnMpOworCiAvKioKICAqIHRhc2tf Y2dyb3VwX3BhdGggLSBjZ3JvdXAgcGF0aCBvZiBhIHRhc2sgaW4gdGhlIGZpcnN0IGNncm91cCBo aWVyYXJjaHkKICAqIEB0YXNrOiB0YXJnZXQgdGFzawpAQCAtMjE5Myw3ICsyMjM1LDggQEAgY2hh ciAqdGFza19jZ3JvdXBfcGF0aChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGNoYXIgKmJ1Ziwg c2l6ZV90IGJ1ZmxlbikKIAogCWlmIChyb290KSB7CiAJCWNncnAgPSB0YXNrX2Nncm91cF9mcm9t X3Jvb3QodGFzaywgcm9vdCk7Ci0JCXBhdGggPSBjZ3JvdXBfcGF0aChjZ3JwLCBidWYsIGJ1Zmxl bik7CisJCXBhdGggPSBjZ3JvdXBfcGF0aF9uc19sb2NrZWQoY2dycCwgYnVmLCBidWZsZW4sCisJ CQkJCSAgICAgJmluaXRfY2dyb3VwX25zKTsKIAl9IGVsc2UgewogCQkvKiBpZiBubyBoaWVyYXJj aHkgZXhpc3RzLCBldmVyeW9uZSBpcyBpbiAiLyIgKi8KIAkJaWYgKHN0cmxjcHkoYnVmLCAiLyIs IGJ1ZmxlbikgPCBidWZsZW4pCkBAIC01MjcyLDYgKzUzMTUsOCBAQCBpbnQgX19pbml0IGNncm91 cF9pbml0KHZvaWQpCiAJQlVHX09OKGNncm91cF9pbml0X2NmdHlwZXMoTlVMTCwgY2dyb3VwX2Rm bF9iYXNlX2ZpbGVzKSk7CiAJQlVHX09OKGNncm91cF9pbml0X2NmdHlwZXMoTlVMTCwgY2dyb3Vw X2xlZ2FjeV9iYXNlX2ZpbGVzKSk7CiAKKwlnZXRfdXNlcl9ucyhpbml0X2Nncm91cF9ucy51c2Vy X25zKTsKKwogCW11dGV4X2xvY2soJmNncm91cF9tdXRleCk7CiAKIAkvKiBBZGQgaW5pdF9jc3Nf c2V0IHRvIHRoZSBoYXNoIHRhYmxlICovCkBAIC01NDA5LDcgKzU0NTQsOCBAQCBpbnQgcHJvY19j Z3JvdXBfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBwaWRfbmFtZXNwYWNlICpucywK IAkJICogIiAoZGVsZXRlZCkiIGlzIGFwcGVuZGVkIHRvIHRoZSBjZ3JvdXAgcGF0aC4KIAkJICov CiAJCWlmIChjZ3JvdXBfb25fZGZsKGNncnApIHx8ICEodHNrLT5mbGFncyAmIFBGX0VYSVRJTkcp KSB7Ci0JCQlwYXRoID0gY2dyb3VwX3BhdGgoY2dycCwgYnVmLCBQQVRIX01BWCk7CisJCQlwYXRo ID0gY2dyb3VwX3BhdGhfbnNfbG9ja2VkKGNncnAsIGJ1ZiwgUEFUSF9NQVgsCisJCQkJCQkgICAg IGN1cnJlbnQtPm5zcHJveHktPmNncm91cF9ucyk7CiAJCQlpZiAoIXBhdGgpIHsKIAkJCQlyZXR2 YWwgPSAtRU5BTUVUT09MT05HOwogCQkJCWdvdG8gb3V0X3VubG9jazsKQEAgLTU2OTEsNyArNTcz NywxMCBAQCBzdGF0aWMgdm9pZCBjZ3JvdXBfcmVsZWFzZV9hZ2VudChzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCiAJaWYgKCFwYXRoYnVmIHx8ICFhZ2VudGJ1ZikKIAkJZ290byBvdXQ7CiAKLQlw YXRoID0gY2dyb3VwX3BhdGgoY2dycCwgcGF0aGJ1ZiwgUEFUSF9NQVgpOworCXNwaW5fbG9ja19i aCgmY3NzX3NldF9sb2NrKTsKKwlwYXRoID0gY2dyb3VwX3BhdGhfbnNfbG9ja2VkKGNncnAsIHBh dGhidWYsIFBBVEhfTUFYLAorCQkJCSAgICAgJmluaXRfY2dyb3VwX25zKTsKKwlzcGluX3VubG9j a19iaCgmY3NzX3NldF9sb2NrKTsKIAlpZiAoIXBhdGgpCiAJCWdvdG8gb3V0OwogCkBAIC01ODc1 LDYgKzU5MjQsMTI3IEBAIHZvaWQgY2dyb3VwX3NrX2ZyZWUoc3RydWN0IHNvY2tfY2dyb3VwX2Rh dGEgKnNrY2QpCiAKICNlbmRpZgkvKiBDT05GSUdfU09DS19DR1JPVVBfREFUQSAqLwogCisvKiBj Z3JvdXAgbmFtZXNwYWNlcyAqLworCitzdGF0aWMgc3RydWN0IGNncm91cF9uYW1lc3BhY2UgKmFs bG9jX2Nncm91cF9ucyh2b2lkKQoreworCXN0cnVjdCBjZ3JvdXBfbmFtZXNwYWNlICpuZXdfbnM7 CisJaW50IHJldDsKKworCW5ld19ucyA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBjZ3JvdXBfbmFt ZXNwYWNlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFuZXdfbnMpCisJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOworCXJldCA9IG5zX2FsbG9jX2ludW0oJm5ld19ucy0+bnMpOworCWlmIChyZXQpIHsK KwkJa2ZyZWUobmV3X25zKTsKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKwl9CisJYXRvbWljX3Nl dCgmbmV3X25zLT5jb3VudCwgMSk7CisJbmV3X25zLT5ucy5vcHMgPSAmY2dyb3VwbnNfb3BlcmF0 aW9uczsKKwlyZXR1cm4gbmV3X25zOworfQorCit2b2lkIGZyZWVfY2dyb3VwX25zKHN0cnVjdCBj Z3JvdXBfbmFtZXNwYWNlICpucykKK3sKKwlwdXRfY3NzX3NldChucy0+cm9vdF9jc2V0KTsKKwlw dXRfdXNlcl9ucyhucy0+dXNlcl9ucyk7CisJbnNfZnJlZV9pbnVtKCZucy0+bnMpOworCWtmcmVl KG5zKTsKK30KK0VYUE9SVF9TWU1CT0woZnJlZV9jZ3JvdXBfbnMpOworCitzdHJ1Y3QgY2dyb3Vw X25hbWVzcGFjZSAqCitjb3B5X2Nncm91cF9ucyh1bnNpZ25lZCBsb25nIGZsYWdzLCBzdHJ1Y3Qg dXNlcl9uYW1lc3BhY2UgKnVzZXJfbnMsCisJICAgICAgIHN0cnVjdCBjZ3JvdXBfbmFtZXNwYWNl ICpvbGRfbnMpCit7CisJc3RydWN0IGNncm91cF9uYW1lc3BhY2UgKm5ld19ucyA9IE5VTEw7CisJ c3RydWN0IGNzc19zZXQgKmNzZXQgPSBOVUxMOworCWludCBlcnI7CisKKwlCVUdfT04oIW9sZF9u cyk7CisKKwlpZiAoIShmbGFncyAmIENMT05FX05FV0NHUk9VUCkpIHsKKwkJZ2V0X2Nncm91cF9u cyhvbGRfbnMpOworCQlyZXR1cm4gb2xkX25zOworCX0KKworCS8qIEFsbG93IG9ubHkgc3lzYWRt aW4gdG8gY3JlYXRlIGNncm91cCBuYW1lc3BhY2UuICovCisJZXJyID0gLUVQRVJNOworCWlmICgh bnNfY2FwYWJsZSh1c2VyX25zLCBDQVBfU1lTX0FETUlOKSkKKwkJZ290byBlcnJfb3V0OworCisJ bXV0ZXhfbG9jaygmY2dyb3VwX211dGV4KTsKKwlzcGluX2xvY2tfYmgoJmNzc19zZXRfbG9jayk7 CisKKwljc2V0ID0gdGFza19jc3Nfc2V0KGN1cnJlbnQpOworCWdldF9jc3Nfc2V0KGNzZXQpOwor CisJc3Bpbl91bmxvY2tfYmgoJmNzc19zZXRfbG9jayk7CisJbXV0ZXhfdW5sb2NrKCZjZ3JvdXBf bXV0ZXgpOworCisJZXJyID0gLUVOT01FTTsKKwluZXdfbnMgPSBhbGxvY19jZ3JvdXBfbnMoKTsK KwlpZiAoIW5ld19ucykKKwkJZ290byBlcnJfb3V0OworCisJbmV3X25zLT51c2VyX25zID0gZ2V0 X3VzZXJfbnModXNlcl9ucyk7CisJbmV3X25zLT5yb290X2NzZXQgPSBjc2V0OworCisJcmV0dXJu IG5ld19uczsKKworZXJyX291dDoKKwlpZiAoY3NldCkKKwkJcHV0X2Nzc19zZXQoY3NldCk7CisJ a2ZyZWUobmV3X25zKTsKKwlyZXR1cm4gRVJSX1BUUihlcnIpOworfQorCitzdGF0aWMgaW5saW5l IHN0cnVjdCBjZ3JvdXBfbmFtZXNwYWNlICp0b19jZ19ucyhzdHJ1Y3QgbnNfY29tbW9uICpucykK K3sKKwlyZXR1cm4gY29udGFpbmVyX29mKG5zLCBzdHJ1Y3QgY2dyb3VwX25hbWVzcGFjZSwgbnMp OworfQorCitzdGF0aWMgaW50IGNncm91cG5zX2luc3RhbGwoc3RydWN0IG5zcHJveHkgKm5zcHJv eHksIHZvaWQgKm5zKQoreworCXByX2luZm8oInNldG5zIG5vdCBzdXBwb3J0ZWQgZm9yIGNncm91 cCBuYW1lc3BhY2UiKTsKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIHN0cnVjdCBuc19j b21tb24gKmNncm91cG5zX2dldChzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2spCit7CisJc3RydWN0 IGNncm91cF9uYW1lc3BhY2UgKm5zID0gTlVMTDsKKwlzdHJ1Y3QgbnNwcm94eSAqbnNwcm94eTsK KworCXRhc2tfbG9jayh0YXNrKTsKKwluc3Byb3h5ID0gdGFzay0+bnNwcm94eTsKKwlpZiAobnNw cm94eSkgeworCQlucyA9IG5zcHJveHktPmNncm91cF9uczsKKwkJZ2V0X2Nncm91cF9ucyhucyk7 CisJfQorCXRhc2tfdW5sb2NrKHRhc2spOworCisJcmV0dXJuIG5zID8gJm5zLT5ucyA6IE5VTEw7 Cit9CisKK3N0YXRpYyB2b2lkIGNncm91cG5zX3B1dChzdHJ1Y3QgbnNfY29tbW9uICpucykKK3sK KwlwdXRfY2dyb3VwX25zKHRvX2NnX25zKG5zKSk7Cit9CisKK2NvbnN0IHN0cnVjdCBwcm9jX25z X29wZXJhdGlvbnMgY2dyb3VwbnNfb3BlcmF0aW9ucyA9IHsKKwkubmFtZQkJPSAiY2dyb3VwIiwK KwkudHlwZQkJPSBDTE9ORV9ORVdDR1JPVVAsCisJLmdldAkJPSBjZ3JvdXBuc19nZXQsCisJLnB1 dAkJPSBjZ3JvdXBuc19wdXQsCisJLmluc3RhbGwJPSBjZ3JvdXBuc19pbnN0YWxsLAorfTsKKwor c3RhdGljIF9faW5pdCBpbnQgY2dyb3VwX25hbWVzcGFjZXNfaW5pdCh2b2lkKQoreworCXJldHVy biAwOworfQorc3Vic3lzX2luaXRjYWxsKGNncm91cF9uYW1lc3BhY2VzX2luaXQpOworCiAjaWZk ZWYgQ09ORklHX0NHUk9VUF9ERUJVRwogc3RhdGljIHN0cnVjdCBjZ3JvdXBfc3Vic3lzX3N0YXRl ICoKIGRlYnVnX2Nzc19hbGxvYyhzdHJ1Y3QgY2dyb3VwX3N1YnN5c19zdGF0ZSAqcGFyZW50X2Nz cykKZGlmZiAtLWdpdCBhL2tlcm5lbC9jcHVzZXQuYyBiL2tlcm5lbC9jcHVzZXQuYwppbmRleCAz ZTk0NWZjLi42MmQ2MTA4IDEwMDY0NAotLS0gYS9rZXJuZWwvY3B1c2V0LmMKKysrIGIva2VybmVs L2NwdXNldC5jCkBAIC0yNjg3LDEwICsyNjg3LDEwIEBAIGludCBwcm9jX2NwdXNldF9zaG93KHN0 cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IHBpZF9uYW1lc3BhY2UgKm5zLAogCQlnb3RvIG91dDsK IAogCXJldHZhbCA9IC1FTkFNRVRPT0xPTkc7Ci0JcmN1X3JlYWRfbG9jaygpOwotCWNzcyA9IHRh c2tfY3NzKHRzaywgY3B1c2V0X2NncnBfaWQpOwotCXAgPSBjZ3JvdXBfcGF0aChjc3MtPmNncm91 cCwgYnVmLCBQQVRIX01BWCk7Ci0JcmN1X3JlYWRfdW5sb2NrKCk7CisJY3NzID0gdGFza19nZXRf Y3NzKHRzaywgY3B1c2V0X2NncnBfaWQpOworCXAgPSBjZ3JvdXBfcGF0aF9ucyhjc3MtPmNncm91 cCwgYnVmLCBQQVRIX01BWCwKKwkJCSAgIGN1cnJlbnQtPm5zcHJveHktPmNncm91cF9ucyk7CisJ Y3NzX3B1dChjc3MpOwogCWlmICghcCkKIAkJZ290byBvdXRfZnJlZTsKIAlzZXFfcHV0cyhtLCBw KTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9mb3JrLmMgYi9rZXJuZWwvZm9yay5jCmluZGV4IDJlMzkx YzcuLjY2MTFhNjIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9mb3JrLmMKKysrIGIva2VybmVsL2Zvcmsu YwpAQCAtMTg4NCw3ICsxODg0LDcgQEAgc3RhdGljIGludCBjaGVja191bnNoYXJlX2ZsYWdzKHVu c2lnbmVkIGxvbmcgdW5zaGFyZV9mbGFncykKIAlpZiAodW5zaGFyZV9mbGFncyAmIH4oQ0xPTkVf VEhSRUFEfENMT05FX0ZTfENMT05FX05FV05TfENMT05FX1NJR0hBTkR8CiAJCQkJQ0xPTkVfVk18 Q0xPTkVfRklMRVN8Q0xPTkVfU1lTVlNFTXwKIAkJCQlDTE9ORV9ORVdVVFN8Q0xPTkVfTkVXSVBD fENMT05FX05FV05FVHwKLQkJCQlDTE9ORV9ORVdVU0VSfENMT05FX05FV1BJRCkpCisJCQkJQ0xP TkVfTkVXVVNFUnxDTE9ORV9ORVdQSUR8Q0xPTkVfTkVXQ0dST1VQKSkKIAkJcmV0dXJuIC1FSU5W QUw7CiAJLyoKIAkgKiBOb3QgaW1wbGVtZW50ZWQsIGJ1dCBwcmV0ZW5kIGl0IHdvcmtzIGlmIHRo ZXJlIGlzIG5vdGhpbmcKZGlmZiAtLWdpdCBhL2tlcm5lbC9uc3Byb3h5LmMgYi9rZXJuZWwvbnNw cm94eS5jCmluZGV4IDQ5NzQ2YzguLjc4MjEwMmUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9uc3Byb3h5 LmMKKysrIGIva2VybmVsL25zcHJveHkuYwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgPGxp bnV4L3Byb2NfbnMuaD4KICNpbmNsdWRlIDxsaW51eC9maWxlLmg+CiAjaW5jbHVkZSA8bGludXgv c3lzY2FsbHMuaD4KKyNpbmNsdWRlIDxsaW51eC9jZ3JvdXAuaD4KIAogc3RhdGljIHN0cnVjdCBr bWVtX2NhY2hlICpuc3Byb3h5X2NhY2hlcDsKIApAQCAtMzksNiArNDAsOSBAQCBzdHJ1Y3QgbnNw cm94eSBpbml0X25zcHJveHkgPSB7CiAjaWZkZWYgQ09ORklHX05FVAogCS5uZXRfbnMJCQk9ICZp bml0X25ldCwKICNlbmRpZgorI2lmZGVmIENPTkZJR19DR1JPVVBTCisJLmNncm91cF9ucwkJPSAm aW5pdF9jZ3JvdXBfbnMsCisjZW5kaWYKIH07CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IG5zcHJv eHkgKmNyZWF0ZV9uc3Byb3h5KHZvaWQpCkBAIC05Miw2ICs5NiwxMyBAQCBzdGF0aWMgc3RydWN0 IG5zcHJveHkgKmNyZWF0ZV9uZXdfbmFtZXNwYWNlcyh1bnNpZ25lZCBsb25nIGZsYWdzLAogCQln b3RvIG91dF9waWQ7CiAJfQogCisJbmV3X25zcC0+Y2dyb3VwX25zID0gY29weV9jZ3JvdXBfbnMo ZmxhZ3MsIHVzZXJfbnMsCisJCQkJCSAgICB0c2stPm5zcHJveHktPmNncm91cF9ucyk7CisJaWYg KElTX0VSUihuZXdfbnNwLT5jZ3JvdXBfbnMpKSB7CisJCWVyciA9IFBUUl9FUlIobmV3X25zcC0+ Y2dyb3VwX25zKTsKKwkJZ290byBvdXRfY2dyb3VwOworCX0KKwogCW5ld19uc3AtPm5ldF9ucyA9 IGNvcHlfbmV0X25zKGZsYWdzLCB1c2VyX25zLCB0c2stPm5zcHJveHktPm5ldF9ucyk7CiAJaWYg KElTX0VSUihuZXdfbnNwLT5uZXRfbnMpKSB7CiAJCWVyciA9IFBUUl9FUlIobmV3X25zcC0+bmV0 X25zKTsKQEAgLTEwMSw2ICsxMTIsOCBAQCBzdGF0aWMgc3RydWN0IG5zcHJveHkgKmNyZWF0ZV9u ZXdfbmFtZXNwYWNlcyh1bnNpZ25lZCBsb25nIGZsYWdzLAogCXJldHVybiBuZXdfbnNwOwogCiBv dXRfbmV0OgorCXB1dF9jZ3JvdXBfbnMobmV3X25zcC0+Y2dyb3VwX25zKTsKK291dF9jZ3JvdXA6 CiAJaWYgKG5ld19uc3AtPnBpZF9uc19mb3JfY2hpbGRyZW4pCiAJCXB1dF9waWRfbnMobmV3X25z cC0+cGlkX25zX2Zvcl9jaGlsZHJlbik7CiBvdXRfcGlkOgpAQCAtMTI4LDcgKzE0MSw4IEBAIGlu dCBjb3B5X25hbWVzcGFjZXModW5zaWduZWQgbG9uZyBmbGFncywgc3RydWN0IHRhc2tfc3RydWN0 ICp0c2spCiAJc3RydWN0IG5zcHJveHkgKm5ld19uczsKIAogCWlmIChsaWtlbHkoIShmbGFncyAm IChDTE9ORV9ORVdOUyB8IENMT05FX05FV1VUUyB8IENMT05FX05FV0lQQyB8Ci0JCQkgICAgICBD TE9ORV9ORVdQSUQgfCBDTE9ORV9ORVdORVQpKSkpIHsKKwkJCSAgICAgIENMT05FX05FV1BJRCB8 IENMT05FX05FV05FVCB8CisJCQkgICAgICBDTE9ORV9ORVdDR1JPVVApKSkpIHsKIAkJZ2V0X25z cHJveHkob2xkX25zKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtMTY1LDYgKzE3OSw3IEBAIHZvaWQg ZnJlZV9uc3Byb3h5KHN0cnVjdCBuc3Byb3h5ICpucykKIAkJcHV0X2lwY19ucyhucy0+aXBjX25z KTsKIAlpZiAobnMtPnBpZF9uc19mb3JfY2hpbGRyZW4pCiAJCXB1dF9waWRfbnMobnMtPnBpZF9u c19mb3JfY2hpbGRyZW4pOworCXB1dF9jZ3JvdXBfbnMobnMtPmNncm91cF9ucyk7CiAJcHV0X25l dChucy0+bmV0X25zKTsKIAlrbWVtX2NhY2hlX2ZyZWUobnNwcm94eV9jYWNoZXAsIG5zKTsKIH0K QEAgLTE4MCw3ICsxOTUsNyBAQCBpbnQgdW5zaGFyZV9uc3Byb3h5X25hbWVzcGFjZXModW5zaWdu ZWQgbG9uZyB1bnNoYXJlX2ZsYWdzLAogCWludCBlcnIgPSAwOwogCiAJaWYgKCEodW5zaGFyZV9m bGFncyAmIChDTE9ORV9ORVdOUyB8IENMT05FX05FV1VUUyB8IENMT05FX05FV0lQQyB8Ci0JCQkg ICAgICAgQ0xPTkVfTkVXTkVUIHwgQ0xPTkVfTkVXUElEKSkpCisJCQkgICAgICAgQ0xPTkVfTkVX TkVUIHwgQ0xPTkVfTkVXUElEIHwgQ0xPTkVfTkVXQ0dST1VQKSkpCiAJCXJldHVybiAwOwogCiAJ dXNlcl9ucyA9IG5ld19jcmVkID8gbmV3X2NyZWQtPnVzZXJfbnMgOiBjdXJyZW50X3VzZXJfbnMo KTsKLS0gCjEuNy45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmx4Yy1kZXZlbCBtYWlsaW5nIGxpc3QKbHhjLWRldmVsQGxpc3RzLmxpbnV4Y29udGFp bmVycy5vcmcKaHR0cDovL2xpc3RzLmxpbnV4Y29udGFpbmVycy5vcmcvbGlzdGluZm8vbHhjLWRl dmVsCg==