From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Glass Subject: [PATCH] libfdt: Update to latest pylibfdt implementation Date: Thu, 26 Jul 2018 14:02:13 -0600 Message-ID: <20180726200213.120788-1-sjg@chromium.org> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Content-Type: text/plain; charset="us-ascii" To: U-Boot Mailing List Cc: Tom Rini , Fabio Estevam , Devicetree Compiler , David Gibson VGhlIGVuaGFuY2VkIHB5bGliZmR0IHN1cHBvcnQgaW4gVS1Cb290IG5lZWRlZCBmb3IgYmlubWFu IHdhcyBhCnBsYWNlaG9sZGVyIHdoaWxlIHVwc3RyZWFtaW5nIG9mIHRoaXMgd29yayBjb250aW51 ZWQuIFRoaXMgaXMgbm93CmNvbXBsZXRlLCBzbyBicmluZyBpbiB0aGUgY2hhbmdlcyBhbmQgdXBk YXRlIHRoZSB0b29scyBhcyBuZWVkZWQuCgpUaGVyZSBhcmUgcXVpdGUgYSBmZXcgY2hhbmdlcyBz aW5jZSB3ZSBkZWNpZGVkIHRvIHNwbGl0IHRoZQppbXBsZW1lbnRhdGlvbiBpbnRvIHRocmVlIGZk dCBjbGFzc2VzIGluc3RlYWQgb2YgdHdvLgoKVGhlIEZkdC5kZWxfbm9kZSgpIG1ldGhvZCB3YXMg dW5mb3J0dW5hdGVseSBtaXNzZWQgaW4gdGhpcyBwcm9jZXNzIGFuZAp3aWxsIGJlIGRlYWx0IHdp dGggbGF0ZXIuIEl0IGV4aXN0cyBpbiBVLUJvb3QgYnV0IG5vdCB1cHN0cmVhbS4KCkZ1cnRoZXIg c3luY2luZyBvZiBsaWJmZHQgcHJvYmFibHkgbmVlZHMgdG8gd2FpdCB1bnRpbCB3ZSBhc3Nlc3Mg dGhlCmNvZGUtc2l6ZSBpbXBhY3Qgb2YgYWxsIHRoZSBuZXcgY2hlY2tpbmcgY29kZSBvbiBTUEwg YW5kIHBvc3NpYmx5IHByb3ZpZGUKYSB3YXkgdG8gZGlzYWJsZSBpdC4KClNpZ25lZC1vZmYtYnk6 IFNpbW9uIEdsYXNzIDxzamdAY2hyb21pdW0ub3JnPgotLS0KCiBzY3JpcHRzL2R0Yy9weWxpYmZk dC9saWJmZHQuaV9zaGlwcGVkIHwgNDY0ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiB0b29s cy9kdG9jL2ZkdC5weSAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiB0b29scy9kdG9jL3Rl c3RfZmR0LnB5ICAgICAgICAgICAgICAgIHwgICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDI0MSBp bnNlcnRpb25zKCspLCAyMjcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9kdGMv cHlsaWJmZHQvbGliZmR0Lmlfc2hpcHBlZCBiL3NjcmlwdHMvZHRjL3B5bGliZmR0L2xpYmZkdC5p X3NoaXBwZWQKaW5kZXggZTE4MGVlOTMwODguLjBmMTdjNTg3OWU3IDEwMDY0NAotLS0gYS9zY3Jp cHRzL2R0Yy9weWxpYmZkdC9saWJmZHQuaV9zaGlwcGVkCisrKyBiL3NjcmlwdHMvZHRjL3B5bGli ZmR0L2xpYmZkdC5pX3NoaXBwZWQKQEAgLTE4LDcgKzE4LDggQEAKICAqIGEgc3RydWN0IGNhbGxl ZCBmZHRfcHJvcGVydHkuIFRoYXQgc3RydWN0IGNhdXNlcyBzd2lnIHRvIGNyZWF0ZSBhIGNsYXNz IGluCiAgKiBsaWJmZHQucHkgY2FsbGVkIGZkdF9wcm9wZXJ0eSgpLCB3aGljaCBjb25mdXNlcyB0 aGluZ3MuCiAgKi8KLXN0YXRpYyBpbnQgX2ZkdF9wcm9wZXJ0eSh2b2lkICpmZHQsIGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbCwgaW50IGxlbikKK3N0YXRpYyBpbnQgZmR0X3Byb3Bl cnR5X3N0dWIodm9pZCAqZmR0LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWwsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4pCiB7CiAgICAgcmV0dXJuIGZkdF9w cm9wZXJ0eShmZHQsIG5hbWUsIHZhbCwgbGVuKTsKIH0KQEAgLTU0LDYgKzU1LDcgQEAgaW1wb3J0 IHN0cnVjdAogIyBQYXNzIHRoaXMgYXMgdGhlICdxdWlldCcgcGFyYW1ldGVyIHRvIHJldHVybiAt RU5PVEZPVU5EIG9uIE5PVEZPVU5EIGVycm9ycywKICMgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGV4 Y2VwdGlvbi4KIFFVSUVUX05PVEZPVU5EID0gKE5PVEZPVU5ELCkKK1FVSUVUX05PU1BBQ0UgPSAo Tk9TUEFDRSwpCiAKIAogY2xhc3MgRmR0RXhjZXB0aW9uKEV4Y2VwdGlvbik6CkBAIC0xMTksMjMg KzEyMSwxOCBAQCBkZWYgY2hlY2tfZXJyX251bGwodmFsLCBxdWlldD0oKSk6CiAgICAgICAgICAg ICByYWlzZSBGZHRFeGNlcHRpb24odmFsKQogICAgIHJldHVybiB2YWwKIAorY2xhc3MgRmR0Um8o b2JqZWN0KToKKyAgICAiIiJDbGFzcyBmb3IgYSByZWFkLW9ubHkgZGV2aWNlLXRyZWUKIAotY2xh c3MgRmR0OgotICAgICIiIkRldmljZSB0cmVlIGNsYXNzLCBzdXBwb3J0aW5nIGFsbCBvcGVyYXRp b25zCi0KLSAgICBUaGUgRmR0IG9iamVjdCBpcyBjcmVhdGVkIGlzIGNyZWF0ZWQgZnJvbSBhIGRl dmljZSB0cmVlIGJpbmFyeSBmaWxlLAotICAgIGUuZy4gd2l0aCBzb21ldGhpbmcgbGlrZToKKyAg ICBUaGlzIGlzIGEgYmFzZSBjbGFzcyB1c2VkIGJ5IEZkdFJ3IChyZWFkLXdyaXRlIGFjY2Vzcykg YW5kIEZkdFN3CisgICAgKHNlcXVlbnRpYWwtd3JpdGUgYWNjZXNzKS4gSXQgaW1wbGVtZW50cyBy ZWFkLW9ubHkgYWNjZXNzIHRvIHRoZQorICAgIGRldmljZSB0cmVlLgogCi0gICAgICAgZmR0ID0g RmR0KG9wZW4oImZpbGVuYW1lLmR0YiIpLnJlYWQoKSkKLQotICAgIE9wZXJhdGlvbnMgY2FuIHRo ZW4gYmUgcGVyZm9ybWVkIHVzaW5nIHRoZSBtZXRob2RzIGluIHRoaXMgY2xhc3MuIEVhY2gKLSAg ICBtZXRob2QgeHh4KGFyZ3MuLi4pIGNvcnJlc3BvbmRzIHRvIGEgbGliZmR0IGZ1bmN0aW9uIGZk dF94eHgoZmR0LCBhcmdzLi4uKS4KKyAgICBIZXJlIGFyZSB0aGUgdGhyZWUgY2xhc3NlcyBhbmQg d2hlbiB5b3Ugc2hvdWxkIHVzZSB0aGVtOgogCi0gICAgQWxsIG1ldGhvZHMgcmFpc2UgYW4gRmR0 RXhjZXB0aW9uIGlmIGFuIGVycm9yIG9jY3Vycy4gVG8gYXZvaWQgdGhpcwotICAgIGJlaGF2aW91 ciBhICdxdWlldCcgcGFyYW1ldGVyIGlzIHByb3ZpZGVkIGZvciBzb21lIGZ1bmN0aW9ucy4gVGhp cwotICAgIGRlZmF1bHRzIHRvIGVtcHR5LCBidXQgeW91IGNhbiBwYXNzIGEgbGlzdCBvZiBlcnJv cnMgdGhhdCB5b3UgZXhwZWN0LgotICAgIElmIG9uZSBvZiB0aGVzZSBlcnJvcnMgb2NjdXJzLCB0 aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZXJyb3IgbnVtYmVyCi0gICAgKGUuZy4gLU5PVEZP VU5EKS4KKyAgICAgICAgRmR0Um8gLSByZWFkLW9ubHkgYWNjZXNzIHRvIGFuIGV4aXN0aW5nIEZE VAorICAgICAgICBGZHRSdyAtIHJlYWQtd3JpdGUgYWNjZXNzIHRvIGFuIGV4aXN0aW5nIEZEVCAo bW9zdCBjb21tb24gY2FzZSkKKyAgICAgICAgRmR0U3cgLSBmb3IgY3JlYXRpbmcgYSBuZXcgRkRU LCBhcyB3ZWxsIGFzIGFsbG93aW5nIHJlYWQtb25seSBhY2Nlc3MKICAgICAiIiIKICAgICBkZWYg X19pbml0X18oc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuX2ZkdCA9IGJ5dGVhcnJheShkYXRh KQpAQCAtMTU3LDEyICsxNTQsMTQgQEAgY2xhc3MgRmR0OgogCiAgICAgICAgIEFyZ3M6CiAgICAg ICAgICAgICBub2Rlb2Zmc2V0OiBOb2RlIG9mZnNldCBvZiBwcmV2aW91cyBub2RlCi0gICAgICAg ICAgICBkZXB0aDogT24gaW5wdXQsIHRoZSBkZXB0aCBvZiB0aGUgbm9kZSBhdCBub2Rlb2Zmc2V0 LiBPbiBvdXRwdXQsIHRoZQotICAgICAgICAgICAgICAgZGVwdGggb2YgdGhlIHJldHVybmVkIG5v ZGUKKyAgICAgICAgICAgIGRlcHRoOiBUaGUgZGVwdGggb2YgdGhlIG5vZGUgYXQgbm9kZW9mZnNl dC4gVGhpcyBpcyB1c2VkIHRvCisgICAgICAgICAgICAgICAgY2FsY3VsYXRlIHRoZSBkZXB0aCBv ZiB0aGUgcmV0dXJuZWQgbm9kZQogICAgICAgICAgICAgcXVpZXQ6IEVycm9ycyB0byBpZ25vcmUg KGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMpCiAKICAgICAgICAgUmV0dXJuczoKLSAgICAg ICAgICAgIFRoZSBvZmZzZXQgb2YgdGhlIG5leHQgbm9kZSwgaWYgYW55CisgICAgICAgICAgICBU eXBsZToKKyAgICAgICAgICAgICAgICBPZmZzZXQgb2YgdGhlIG5leHQgbm9kZSwgaWYgYW55LCBl bHNlIGEgLXZlIGVycm9yCisgICAgICAgICAgICAgICAgRGVwdGggb2YgdGhlIHJldHVybmVkIG5v ZGUsIGlmIGFueSwgZWxzZSB1bmRlZmluZWQKIAogICAgICAgICBSYWlzZXM6CiAgICAgICAgICAg ICBGZHRFeGNlcHRpb24gaWYgbm8gbW9yZSBub2RlcyBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1 cnMKQEAgLTIwNSw3ICsyMDQsNyBAQCBjbGFzcyBGZHQ6CiAgICAgICAgIFJldHVybnM6CiAgICAg ICAgICAgICBNYWdpYyB3b3JkCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gZmR0X21hZ2lj KHNlbGYuX2ZkdCkgJiAweGZmZmZmZmZmCisgICAgICAgIHJldHVybiBmZHRfbWFnaWMoc2VsZi5f ZmR0KQogCiAgICAgZGVmIHRvdGFsc2l6ZShzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB0 b3RhbCBzaXplIG9mIHRoZSBkZXZpY2UgdHJlZQpAQCAtMjEzLDcgKzIxMiw3IEBAIGNsYXNzIEZk dDoKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIFRvdGFsIHRyZWUgc2l6ZSBpbiBieXRl cwogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfdG90YWxzaXplKHNl bGYuX2ZkdCkpCisgICAgICAgIHJldHVybiBmZHRfdG90YWxzaXplKHNlbGYuX2ZkdCkKIAogICAg IGRlZiBvZmZfZHRfc3RydWN0KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHN0YXJ0IG9m IHRoZSBkZXZpY2UtdHJlZSBzdHJ1Y3QgYXJlYQpAQCAtMjIxLDcgKzIyMCw3IEBAIGNsYXNzIEZk dDoKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIFN0YXJ0IG9mZnNldCBvZiBzdHJ1Y3Qg YXJlYQogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfb2ZmX2R0X3N0 cnVjdChzZWxmLl9mZHQpKQorICAgICAgICByZXR1cm4gZmR0X29mZl9kdF9zdHJ1Y3Qoc2VsZi5f ZmR0KQogCiAgICAgZGVmIG9mZl9kdF9zdHJpbmdzKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4g dGhlIHN0YXJ0IG9mIHRoZSBkZXZpY2UtdHJlZSBzdHJpbmcgYXJlYQpAQCAtMjI5LDcgKzIyOCw3 IEBAIGNsYXNzIEZkdDoKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIFN0YXJ0IG9mZnNl dCBvZiBzdHJpbmcgYXJlYQogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2Vycihm ZHRfb2ZmX2R0X3N0cmluZ3Moc2VsZi5fZmR0KSkKKyAgICAgICAgcmV0dXJuIGZkdF9vZmZfZHRf c3RyaW5ncyhzZWxmLl9mZHQpCiAKICAgICBkZWYgb2ZmX21lbV9yc3ZtYXAoc2VsZik6CiAgICAg ICAgICIiIlJldHVybiB0aGUgc3RhcnQgb2YgdGhlIG1lbW9yeSByZXNlcnZlIG1hcApAQCAtMjM3 LDcgKzIzNiw3IEBAIGNsYXNzIEZkdDoKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIFN0 YXJ0IG9mZnNldCBvZiBtZW1vcnkgcmVzZXJ2ZSBtYXAKICAgICAgICAgIiIiCi0gICAgICAgIHJl dHVybiBjaGVja19lcnIoZmR0X29mZl9tZW1fcnN2bWFwKHNlbGYuX2ZkdCkpCisgICAgICAgIHJl dHVybiBmZHRfb2ZmX21lbV9yc3ZtYXAoc2VsZi5fZmR0KQogCiAgICAgZGVmIHZlcnNpb24oc2Vs Zik6CiAgICAgICAgICIiIlJldHVybiB0aGUgdmVyc2lvbiBvZiB0aGUgZGV2aWNlIHRyZWUKQEAg LTI0NSw3ICsyNDQsNyBAQCBjbGFzcyBGZHQ6CiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAg ICBWZXJzaW9uIG51bWJlciBvZiB0aGUgZGV2aWNlIHRyZWUKICAgICAgICAgIiIiCi0gICAgICAg IHJldHVybiBjaGVja19lcnIoZmR0X3ZlcnNpb24oc2VsZi5fZmR0KSkKKyAgICAgICAgcmV0dXJu IGZkdF92ZXJzaW9uKHNlbGYuX2ZkdCkKIAogICAgIGRlZiBsYXN0X2NvbXBfdmVyc2lvbihzZWxm KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBsYXN0IGNvbXBhdGlibGUgdmVyc2lvbiBvZiB0aGUg ZGV2aWNlIHRyZWUKQEAgLTI1Myw3ICsyNTIsNyBAQCBjbGFzcyBGZHQ6CiAgICAgICAgIFJldHVy bnM6CiAgICAgICAgICAgICBMYXN0IGNvbXBhdGlibGUgdmVyc2lvbiBudW1iZXIgb2YgdGhlIGRl dmljZSB0cmVlCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gY2hlY2tfZXJyKGZkdF9sYXN0 X2NvbXBfdmVyc2lvbihzZWxmLl9mZHQpKQorICAgICAgICByZXR1cm4gZmR0X2xhc3RfY29tcF92 ZXJzaW9uKHNlbGYuX2ZkdCkKIAogICAgIGRlZiBib290X2NwdWlkX3BoeXMoc2VsZik6CiAgICAg ICAgICIiIlJldHVybiB0aGUgcGh5c2ljYWwgYm9vdCBDUFUgSUQKQEAgLTI2MSw3ICsyNjAsNyBA QCBjbGFzcyBGZHQ6CiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgICBQaHlzaWNhbCBib290 IENQVSBJRAogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfYm9vdF9j cHVpZF9waHlzKHNlbGYuX2ZkdCkpCisgICAgICAgIHJldHVybiBmZHRfYm9vdF9jcHVpZF9waHlz KHNlbGYuX2ZkdCkKIAogICAgIGRlZiBzaXplX2R0X3N0cmluZ3Moc2VsZik6CiAgICAgICAgICIi IlJldHVybiB0aGUgc3RhcnQgb2YgdGhlIGRldmljZS10cmVlIHN0cmluZyBhcmVhCkBAIC0yNjks NyArMjY4LDcgQEAgY2xhc3MgRmR0OgogICAgICAgICBSZXR1cm5zOgogICAgICAgICAgICAgU3Rh cnQgb2Zmc2V0IG9mIHN0cmluZyBhcmVhCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gY2hl Y2tfZXJyKGZkdF9zaXplX2R0X3N0cmluZ3Moc2VsZi5fZmR0KSkKKyAgICAgICAgcmV0dXJuIGZk dF9zaXplX2R0X3N0cmluZ3Moc2VsZi5fZmR0KQogCiAgICAgZGVmIHNpemVfZHRfc3RydWN0KHNl bGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBkZXZpY2UtdHJlZSBzdHJ1 Y3QgYXJlYQpAQCAtMjc3LDcgKzI3Niw3IEBAIGNsYXNzIEZkdDoKICAgICAgICAgUmV0dXJuczoK ICAgICAgICAgICAgIFN0YXJ0IG9mZnNldCBvZiBzdHJ1Y3QgYXJlYQogICAgICAgICAiIiIKLSAg ICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfc2l6ZV9kdF9zdHJ1Y3Qoc2VsZi5fZmR0KSkKKyAg ICAgICAgcmV0dXJuIGZkdF9zaXplX2R0X3N0cnVjdChzZWxmLl9mZHQpCiAKICAgICBkZWYgbnVt X21lbV9yc3Yoc2VsZiwgcXVpZXQ9KCkpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG51bWJlciBv ZiBtZW1vcnkgcmVzZXJ2ZS1tYXAgcmVjb3JkcwpAQCAtMzk4LDI2ICszOTcsOTAgQEAgY2xhc3Mg RmR0OgogICAgICAgICAgICAgcmV0dXJuIHBkYXRhCiAgICAgICAgIHJldHVybiBQcm9wZXJ0eShw ZGF0YVswXSwgcGRhdGFbMV0pCiAKLSAgICBkZWYgZ2V0X3Byb3BlcnR5KHNlbGYsIG5vZGVvZmZz ZXQsIHByb3BfbmFtZSwgcXVpZXQ9KCkpOgotICAgICAgICAiIiJPYnRhaW5zIGEgcHJvcGVydHkg YnkgbmFtZQorICAgIGRlZiBnZXRwcm9wKHNlbGYsIG5vZGVvZmZzZXQsIHByb3BfbmFtZSwgcXVp ZXQ9KCkpOgorICAgICAgICAiIiJHZXQgYSBwcm9wZXJ0eSBmcm9tIGEgbm9kZQogCiAgICAgICAg IEFyZ3M6Ci0gICAgICAgICAgICBub2Rlb2Zmc2V0OiBPZmZzZXQgdG8gdGhlIG5vZGUgdG8gY2hl Y2sKKyAgICAgICAgICAgIG5vZGVvZmZzZXQ6IE5vZGUgb2Zmc2V0IGNvbnRhaW5pbmcgcHJvcGVy dHkgdG8gZ2V0CiAgICAgICAgICAgICBwcm9wX25hbWU6IE5hbWUgb2YgcHJvcGVydHkgdG8gZ2V0 CiAgICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24g YWxsIGVycm9ycykKIAogICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgUHJvcGVydHkgb2Jq ZWN0LCBvciBOb25lIGlmIG5vdCBmb3VuZAorICAgICAgICAgICAgVmFsdWUgb2YgcHJvcGVydHkg YXMgYSBQcm9wZXJ0eSBvYmplY3QgKHdoaWNoIGNhbiBiZSB1c2VkIGFzIGEKKyAgICAgICAgICAg ICAgIGJ5dGVhcnJheS9zdHJpbmcpLCBvciAtdmUgZXJyb3IgbnVtYmVyLiBPbiBmYWlsdXJlLCBy ZXR1cm5zIGFuCisgICAgICAgICAgICAgICBpbnRlZ2VyIGVycm9yCiAKICAgICAgICAgUmFpc2Vz OgotICAgICAgICAgICAgRmR0RXhjZXB0aW9uIG9uIGVycm9yIChlLmcuIGludmFsaWQgcHJvcF9v ZmZzZXQgb3IgZGV2aWNlCi0gICAgICAgICAgICB0cmVlIGZvcm1hdCkKKyAgICAgICAgICAgIEZk dEVycm9yIGlmIGFueSBlcnJvciBvY2N1cnMgKGUuZy4gdGhlIHByb3BlcnR5IGlzIG5vdCBmb3Vu ZCkKICAgICAgICAgIiIiCi0gICAgICAgIHBkYXRhID0gY2hlY2tfZXJyX251bGwoCi0gICAgICAg ICAgICAgICAgZmR0X2dldF9wcm9wZXJ0eShzZWxmLl9mZHQsIG5vZGVvZmZzZXQsIHByb3BfbmFt ZSksIHF1aWV0KQorICAgICAgICBwZGF0YSA9IGNoZWNrX2Vycl9udWxsKGZkdF9nZXRwcm9wKHNl bGYuX2ZkdCwgbm9kZW9mZnNldCwgcHJvcF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBxdWlldCkKICAgICAgICAgaWYgaXNpbnN0YW5jZShwZGF0YSwgKGludCkpOgogICAg ICAgICAgICAgcmV0dXJuIHBkYXRhCi0gICAgICAgIHJldHVybiBQcm9wZXJ0eShwZGF0YVswXSwg cGRhdGFbMV0pCisgICAgICAgIHJldHVybiBQcm9wZXJ0eShwcm9wX25hbWUsIGJ5dGVhcnJheShw ZGF0YVswXSkpCisKKyAgICBkZWYgZ2V0X3BoYW5kbGUoc2VsZiwgbm9kZW9mZnNldCk6CisgICAg ICAgICIiIkdldCB0aGUgcGhhbmRsZSBvZiBhIG5vZGUKKworICAgICAgICBBcmdzOgorICAgICAg ICAgICAgbm9kZW9mZnNldDogTm9kZSBvZmZzZXQgdG8gY2hlY2sKKworICAgICAgICBSZXR1cm5z OgorICAgICAgICAgICAgcGhhbmRsZSBvZiBub2RlLCBvciAwIGlmIHRoZSBub2RlIGhhcyBubyBw aGFuZGxlIG9yIGFub3RoZXIgZXJyb3IKKyAgICAgICAgICAgIG9jY3VycworICAgICAgICAiIiIK KyAgICAgICAgcmV0dXJuIGZkdF9nZXRfcGhhbmRsZShzZWxmLl9mZHQsIG5vZGVvZmZzZXQpCisK KyAgICBkZWYgcGFyZW50X29mZnNldChzZWxmLCBub2Rlb2Zmc2V0LCBxdWlldD0oKSk6CisgICAg ICAgICIiIkdldCB0aGUgb2Zmc2V0IG9mIGEgbm9kZSdzIHBhcmVudAorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBub2Rlb2Zmc2V0OiBOb2RlIG9mZnNldCB0byBjaGVjaworICAgICAgICAg ICAgcXVpZXQ6IEVycm9ycyB0byBpZ25vcmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMp CisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFRoZSBvZmZzZXQgb2YgdGhlIHBhcmVu dCBub2RlLCBpZiBhbnkKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBGZHRFeGNlcHRp b24gaWYgbm8gcGFyZW50IGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAiIiIK KyAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfcGFyZW50X29mZnNldChzZWxmLl9mZHQsIG5v ZGVvZmZzZXQpLCBxdWlldCkKKworICAgIGRlZiBub2RlX29mZnNldF9ieV9waGFuZGxlKHNlbGYs IHBoYW5kbGUsIHF1aWV0PSgpKToKKyAgICAgICAgIiIiR2V0IHRoZSBvZmZzZXQgb2YgYSBub2Rl IHdpdGggdGhlIGdpdmVuIHBoYW5kbGUKKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcGhh bmRsZTogUGhhbmRsZSB0byBzZWFyY2ggZm9yCisgICAgICAgICAgICBxdWlldDogRXJyb3JzIHRv IGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKKworICAgICAgICBSZXR1cm5z OgorICAgICAgICAgICAgVGhlIG9mZnNldCBvZiBub2RlIHdpdGggdGhhdCBwaGFuZGxlLCBpZiBh bnkKKworICAgICAgICBSYWlzZXM6CisgICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9k ZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1cnMKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy biBjaGVja19lcnIoZmR0X25vZGVfb2Zmc2V0X2J5X3BoYW5kbGUoc2VsZi5fZmR0LCBwaGFuZGxl KSwgcXVpZXQpCisKKworY2xhc3MgRmR0KEZkdFJvKToKKyAgICAiIiJEZXZpY2UgdHJlZSBjbGFz cywgc3VwcG9ydGluZyBhbGwgb3BlcmF0aW9ucworCisgICAgVGhlIEZkdCBvYmplY3QgaXMgY3Jl YXRlZCBpcyBjcmVhdGVkIGZyb20gYSBkZXZpY2UgdHJlZSBiaW5hcnkgZmlsZSwKKyAgICBlLmcu IHdpdGggc29tZXRoaW5nIGxpa2U6CisKKyAgICAgICBmZHQgPSBGZHQob3BlbigiZmlsZW5hbWUu ZHRiIikucmVhZCgpKQorCisgICAgT3BlcmF0aW9ucyBjYW4gdGhlbiBiZSBwZXJmb3JtZWQgdXNp bmcgdGhlIG1ldGhvZHMgaW4gdGhpcyBjbGFzcy4gRWFjaAorICAgIG1ldGhvZCB4eHgoYXJncy4u LikgY29ycmVzcG9uZHMgdG8gYSBsaWJmZHQgZnVuY3Rpb24gZmR0X3h4eChmZHQsIGFyZ3MuLi4p LgorCisgICAgQWxsIG1ldGhvZHMgcmFpc2UgYW4gRmR0RXhjZXB0aW9uIGlmIGFuIGVycm9yIG9j Y3Vycy4gVG8gYXZvaWQgdGhpcworICAgIGJlaGF2aW91ciBhICdxdWlldCcgcGFyYW1ldGVyIGlz IHByb3ZpZGVkIGZvciBzb21lIGZ1bmN0aW9ucy4gVGhpcworICAgIGRlZmF1bHRzIHRvIGVtcHR5 LCBidXQgeW91IGNhbiBwYXNzIGEgbGlzdCBvZiBlcnJvcnMgdGhhdCB5b3UgZXhwZWN0LgorICAg IElmIG9uZSBvZiB0aGVzZSBlcnJvcnMgb2NjdXJzLCB0aGUgZnVuY3Rpb24gd2lsbCByZXR1cm4g YW4gZXJyb3IgbnVtYmVyCisgICAgKGUuZy4gLU5PVEZPVU5EKS4KKyAgICAiIiIKKyAgICBkZWYg X19pbml0X18oc2VsZiwgZGF0YSk6CisgICAgICAgIEZkdFJvLl9faW5pdF9fKHNlbGYsIGRhdGEp CiAKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIGNyZWF0ZV9lbXB0eV90cmVlKHNpemUsIHF1 aWV0PSgpKToKQEAgLTQzNSwxOCArNDk4LDE4IEBAIGNsYXNzIEZkdDoKICAgICAgICAgICAgIHJl dHVybiBlcnIKICAgICAgICAgcmV0dXJuIEZkdChkYXRhKQogCi0gICAgZGVmIG9wZW5faW50byhz ZWxmLCBzaXplLCBxdWlldD0oKSk6CisgICAgZGVmIHJlc2l6ZShzZWxmLCBzaXplLCBxdWlldD0o KSk6CiAgICAgICAgICIiIk1vdmUgdGhlIGRldmljZSB0cmVlIGludG8gYSBsYXJnZXIgb3Igc21h bGxlciBzcGFjZQogCiAgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBkZXZpY2UgdHJlZSBvZiBz aXplIEBzaXplIGFuZCBtb3ZlcyB0aGUgZXhpc3RpbmcKICAgICAgICAgZGV2aWNlIHRyZWUgY29u dGVudHMgb3ZlciB0byB0aGF0LiBJdCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgbW9yZSBzcGFjZQot ICAgICAgICBpbiBhIGRldmljZSB0cmVlLgorICAgICAgICBpbiBhIGRldmljZSB0cmVlLiBOb3Rl IHRoYXQgdGhlIEZkdCBvYmplY3QgcmVtYWlucyB0aGUgc2FtZSwgYnV0IGl0CisgICAgICAgIG5v dyBoYXMgYSBuZXcgYnl0ZWFycmF5IGhvbGRpbmcgdGhlIGNvbnRlbnRzLgogCiAgICAgICAgIEFy Z3M6CiAgICAgICAgICAgICBzaXplOiBSZXF1aXJlZCBuZXcgc2l6ZSBvZiBkZXZpY2UgdHJlZSBp biBieXRlcwogICAgICAgICAiIiIKICAgICAgICAgZmR0ID0gYnl0ZWFycmF5KHNpemUpCi0gICAg ICAgIGZkdFs6bGVuKHNlbGYuX2ZkdCldID0gc2VsZi5fZmR0CiAgICAgICAgIGVyciA9IGNoZWNr X2VycihmZHRfb3Blbl9pbnRvKHNlbGYuX2ZkdCwgZmR0LCBzaXplKSwgcXVpZXQpCiAgICAgICAg IGlmIGVycjoKICAgICAgICAgICAgIHJldHVybiBlcnIKQEAgLTQ2MCw2ICs1MjMsOSBAQCBjbGFz cyBGZHQ6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9y ZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKIAorICAgICAgICBSZXR1cm5zOgorICAg ICAgICAgICAgRXJyb3IgY29kZSwgb3IgMCBpZiBPSworCiAgICAgICAgIFJhaXNlczoKICAgICAg ICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBhbnkgZXJyb3Igb2NjdXJzCiAgICAgICAgICIiIgpAQCAt NDY5LDc5ICs1MzUsMTIgQEAgY2xhc3MgRmR0OgogICAgICAgICBkZWwgc2VsZi5fZmR0W3NlbGYu dG90YWxzaXplKCk6XQogICAgICAgICByZXR1cm4gZXJyCiAKLSAgICBkZWYgZ2V0cHJvcChzZWxm LCBub2Rlb2Zmc2V0LCBwcm9wX25hbWUsIHF1aWV0PSgpKToKLSAgICAgICAgIiIiR2V0IGEgcHJv cGVydHkgZnJvbSBhIG5vZGUKLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgbm9kZW9mZnNl dDogTm9kZSBvZmZzZXQgY29udGFpbmluZyBwcm9wZXJ0eSB0byBnZXQKLSAgICAgICAgICAgIHBy b3BfbmFtZTogTmFtZSBvZiBwcm9wZXJ0eSB0byBnZXQKLSAgICAgICAgICAgIHF1aWV0OiBFcnJv cnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJyb3JzKQotCi0gICAgICAgIFJl dHVybnM6Ci0gICAgICAgICAgICBWYWx1ZSBvZiBwcm9wZXJ0eSBhcyBhIHN0cmluZywgb3IgLXZl IGVycm9yIG51bWJlcgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEZkdEVycm9yIGlm IGFueSBlcnJvciBvY2N1cnMgKGUuZy4gdGhlIHByb3BlcnR5IGlzIG5vdCBmb3VuZCkKLSAgICAg ICAgIiIiCi0gICAgICAgIHBkYXRhID0gY2hlY2tfZXJyX251bGwoZmR0X2dldHByb3Aoc2VsZi5f ZmR0LCBub2Rlb2Zmc2V0LCBwcm9wX25hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHF1aWV0KQotICAgICAgICBpZiBpc2luc3RhbmNlKHBkYXRhLCAoaW50KSk6Ci0gICAgICAg ICAgICByZXR1cm4gcGRhdGEKLSAgICAgICAgcmV0dXJuIHN0cihwZGF0YVswXSkKLQotICAgIGRl ZiBnZXRwcm9wX29iaihzZWxmLCBub2Rlb2Zmc2V0LCBwcm9wX25hbWUsIHF1aWV0PSgpKToKLSAg ICAgICAgIiIiR2V0IGEgcHJvcGVydHkgZnJvbSBhIG5vZGUgYXMgYSBQcm9wZXJ0eSBvYmplY3QK LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgbm9kZW9mZnNldDogTm9kZSBvZmZzZXQgY29u dGFpbmluZyBwcm9wZXJ0eSB0byBnZXQKLSAgICAgICAgICAgIHByb3BfbmFtZTogTmFtZSBvZiBw cm9wZXJ0eSB0byBnZXQKLSAgICAgICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0 eSB0byByYWlzZSBvbiBhbGwgZXJyb3JzKQotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAg ICBQcm9wZXJ0eSBvYmplY3QsIG9yIE5vbmUgaWYgbm90IGZvdW5kCi0KLSAgICAgICAgUmFpc2Vz OgotICAgICAgICAgICAgRmR0RXJyb3IgaWYgYW55IGVycm9yIG9jY3VycyAoZS5nLiB0aGUgcHJv cGVydHkgaXMgbm90IGZvdW5kKQotICAgICAgICAiIiIKLSAgICAgICAgcGRhdGEgPSBjaGVja19l cnJfbnVsbChmZHRfZ2V0cHJvcChzZWxmLl9mZHQsIG5vZGVvZmZzZXQsIHByb3BfbmFtZSksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQpCi0gICAgICAgIGlmIGlzaW5zdGFu Y2UocGRhdGEsIChpbnQpKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVy biBQcm9wZXJ0eShwcm9wX25hbWUsIGJ5dGVhcnJheShwZGF0YVswXSkpCi0KLSAgICBkZWYgZ2V0 X3BoYW5kbGUoc2VsZiwgbm9kZW9mZnNldCk6Ci0gICAgICAgICIiIkdldCB0aGUgcGhhbmRsZSBv ZiBhIG5vZGUKLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgbm9kZW9mZnNldDogTm9kZSBv ZmZzZXQgdG8gY2hlY2sKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAgcGhhbmRsZSBv ZiBub2RlLCBvciAwIGlmIHRoZSBub2RlIGhhcyBubyBwaGFuZGxlIG9yIGFub3RoZXIgZXJyb3IK LSAgICAgICAgICAgIG9jY3VycwotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGZkdF9nZXRf cGhhbmRsZShzZWxmLl9mZHQsIG5vZGVvZmZzZXQpCi0KLSAgICBkZWYgcGFyZW50X29mZnNldChz ZWxmLCBub2Rlb2Zmc2V0LCBxdWlldD0oKSk6Ci0gICAgICAgICIiIkdldCB0aGUgb2Zmc2V0IG9m IGEgbm9kZSdzIHBhcmVudAotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBub2Rlb2Zmc2V0 OiBOb2RlIG9mZnNldCB0byBjaGVjawotICAgICAgICAgICAgcXVpZXQ6IEVycm9ycyB0byBpZ25v cmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMpCi0KLSAgICAgICAgUmV0dXJuczoKLSAg ICAgICAgICAgIFRoZSBvZmZzZXQgb2YgdGhlIHBhcmVudCBub2RlLCBpZiBhbnkKLQotICAgICAg ICBSYWlzZXM6Ci0gICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gcGFyZW50IGZvdW5kIG9y IG90aGVyIGVycm9yIG9jY3VycwotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2Vy cihmZHRfcGFyZW50X29mZnNldChzZWxmLl9mZHQsIG5vZGVvZmZzZXQpLCBxdWlldCkKLQogICAg IGRlZiBzZXRfbmFtZShzZWxmLCBub2Rlb2Zmc2V0LCBuYW1lLCBxdWlldD0oKSk6CiAgICAgICAg ICIiIlNldCB0aGUgbmFtZSBvZiBhIG5vZGUKIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAg bm9kZW9mZnNldDogTm9kZSBvZmZzZXQgb2Ygbm9kZSB0byB1cGRhdGUKLSAgICAgICAgICAgIG5h bWU6IE5ldyBub2RlIG5hbWUKKyAgICAgICAgICAgIG5hbWU6IE5ldyBub2RlIG5hbWUgKHN0cmlu ZyB3aXRob3V0IFwwKQogCiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgICBFcnJvciBjb2Rl LCBvciAwIGlmIE9LCkBAIC01NDksNiArNTQ4LDggQEAgY2xhc3MgRmR0OgogICAgICAgICBSYWlz ZXM6CiAgICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gcGFyZW50IGZvdW5kIG9yIG90aGVy IGVycm9yIG9jY3VycwogICAgICAgICAiIiIKKyAgICAgICAgaWYgY2hyKDApIGluIG5hbWU6Cisg ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQcm9wZXJ0eSBjb250YWlucyBlbWJlZGRlZCBu dWwgY2hhcmFjdGVycycpCiAgICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X3NldF9uYW1lKHNl bGYuX2ZkdCwgbm9kZW9mZnNldCwgbmFtZSksIHF1aWV0KQogCiAgICAgZGVmIHNldHByb3Aoc2Vs Ziwgbm9kZW9mZnNldCwgcHJvcF9uYW1lLCB2YWwsIHF1aWV0PSgpKToKQEAgLTYxMyw3ICs2MTQs OCBAQCBjbGFzcyBGZHQ6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBub2Rlb2Zmc2V0OiBO b2RlIG9mZnNldCBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSB0byBjcmVhdGUvdXBkYXRlCiAgICAg ICAgICAgICBwcm9wX25hbWU6IE5hbWUgb2YgcHJvcGVydHkKLSAgICAgICAgICAgIHZhbDogVmFs dWUgdG8gd3JpdGUgKHN0cmluZyB3aXRob3V0IG51bCB0ZXJtaW5hdG9yKQorICAgICAgICAgICAg dmFsOiBWYWx1ZSB0byB3cml0ZSAoc3RyaW5nIHdpdGhvdXQgbnVsIHRlcm1pbmF0b3IpLiBVbmlj b2RlIGlzCisgICAgICAgICAgICAgICAgc3VwcG9zZWQgYnkgZW5jb2RpbmcgdG8gVVRGLTgKICAg ICAgICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwg ZXJyb3JzKQogCiAgICAgICAgIFJldHVybnM6CkBAIC02MjIsNyArNjI0LDcgQEAgY2xhc3MgRmR0 OgogICAgICAgICBSYWlzZXM6CiAgICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gcGFyZW50 IGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycwogICAgICAgICAiIiIKLSAgICAgICAgdmFsICs9 ICdcMCcKKyAgICAgICAgdmFsID0gdmFsLmVuY29kZSgndXRmLTgnKSArICdcMCcKICAgICAgICAg cmV0dXJuIGNoZWNrX2VycihmZHRfc2V0cHJvcChzZWxmLl9mZHQsIG5vZGVvZmZzZXQsIHByb3Bf bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwsIGxlbih2YWwp KSwgcXVpZXQpCiAKQEAgLTYzOCwyMSArNjQwLDYgQEAgY2xhc3MgRmR0OgogICAgICAgICAiIiIK ICAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfZGVscHJvcChzZWxmLl9mZHQsIG5vZGVvZmZz ZXQsIHByb3BfbmFtZSkpCiAKLSAgICBkZWYgbm9kZV9vZmZzZXRfYnlfcGhhbmRsZShzZWxmLCBw aGFuZGxlLCBxdWlldD0oKSk6Ci0gICAgICAgICIiIkdldCB0aGUgb2Zmc2V0IG9mIGEgbm9kZSB3 aXRoIHRoZSBnaXZlbiBwaGFuZGxlCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHBoYW5k bGU6IFBoYW5kbGUgdG8gc2VhcmNoIGZvcgotICAgICAgICAgICAgcXVpZXQ6IEVycm9ycyB0byBp Z25vcmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMpCi0KLSAgICAgICAgUmV0dXJuczoK LSAgICAgICAgICAgIFRoZSBvZmZzZXQgb2Ygbm9kZSB3aXRoIHRoYXQgcGhhbmRsZSwgaWYgYW55 Ci0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIG5vZGUg Zm91bmQgb3Igb3RoZXIgZXJyb3Igb2NjdXJzCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4g Y2hlY2tfZXJyKGZkdF9ub2RlX29mZnNldF9ieV9waGFuZGxlKHNlbGYuX2ZkdCwgcGhhbmRsZSks IHF1aWV0KQotCiAgICAgZGVmIGRlbF9ub2RlKHNlbGYsIG5vZGVvZmZzZXQpOgogICAgICAgICAi IiJEZWxldGUgYSBub2RlCiAKQEAgLTY5NiwxNiArNjgzLDIwIEBAIGNsYXNzIFByb3BlcnR5KGJ5 dGVhcnJheSk6CiAgICAgICAgIHJldHVybiBzZWxmLmFzX2NlbGwoJ3EnKQogCiAgICAgZGVmIGFz X3N0cihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGZbOi0xXQorICAgICAgICAiIiJVbmljb2Rl IGlzIHN1cHBvcnRlZCBieSBkZWNvZGluZyBmcm9tIFVURi04IiIiCisgICAgICAgIGlmIHNlbGZb LTFdICE9IDA6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdQcm9wZXJ0eSBsYWNrcyBu dWwgdGVybWluYXRpb24nKQorICAgICAgICBpZiAwIGluIHNlbGZbOi0xXToKKyAgICAgICAgICAg IHJhaXNlIFZhbHVlRXJyb3IoJ1Byb3BlcnR5IGNvbnRhaW5zIGVtYmVkZGVkIG51bCBjaGFyYWN0 ZXJzJykKKyAgICAgICAgcmV0dXJuIHNlbGZbOi0xXS5kZWNvZGUoJ3V0Zi04JykKIAogCi1jbGFz cyBGZHRTdyhvYmplY3QpOgorY2xhc3MgRmR0U3coRmR0Um8pOgogICAgICIiIlNvZnR3YXJlIGlu dGVyZmFjZSB0byBjcmVhdGUgYSBkZXZpY2UgdHJlZSBmcm9tIHNjcmF0Y2gKIAogICAgIFRoZSBt ZXRob2RzIGluIHRoaXMgY2xhc3Mgd29yayBieSBhZGRpbmcgdG8gYW4gZXhpc3RpbmcgJ3BhcnRp YWwnIGRldmljZQogICAgIHRyZWUgYnVmZmVyIG9mIGEgZml4ZWQgc2l6ZSBjcmVhdGVkIGJ5IGlu c3RhbnRpYXRpbmcgdGhpcyBjbGFzcy4gV2hlbiB0aGUKLSAgICB0cmVlIGlzIGNvbXBsZXRlLCBj YWxsIGZpbmlzaCgpIHRvIGNvbXBsZXRlIHRoZSBkZXZpY2UgdHJlZSBzbyB0aGF0IGl0IGNhbgot ICAgIGJlIHVzZWQuCisgICAgdHJlZSBpcyBjb21wbGV0ZSwgY2FsbCBhc19mZHQoKSB0byBvYnRh aW4gYSBkZXZpY2UgdHJlZSByZWFkeSB0byBiZSB1c2VkLgogCiAgICAgU2ltaWxhcmx5IHdpdGgg bm9kZXMsIGEgbmV3IG5vZGUgaXMgc3RhcnRlZCB3aXRoIGJlZ2luX25vZGUoKSBhbmQgZmluaXNo ZWQKICAgICB3aXRoIGVuZF9ub2RlKCkuCkBAIC03MTMsNTggKzcwNCw4NyBAQCBjbGFzcyBGZHRT dyhvYmplY3QpOgogICAgIFRoZSBjb250ZXh0IG1hbmFnZXIgZnVuY3Rpb25zIGNhbiBiZSB1c2Vk IHRvIG1ha2UgdGhpcyBhIGJpdCBlYXNpZXI6CiAKICAgICAjIEZpcnN0IGNyZWF0ZSB0aGUgZGV2 aWNlIHRyZWUgd2l0aCBhIG5vZGUgYW5kIHByb3BlcnR5OgotICAgIHdpdGggRmR0U3coc21hbGxf c2l6ZSkgYXMgc3c6Ci0gICAgICAgIHdpdGggc3cuQWRkTm9kZSgnbm9kZScpOgotICAgICAgICAg ICAgc3cucHJvcGVydHlfdTMyKCdyZWcnLCAyKQotICAgIGZkdCA9IHN3LkFzRmR0KCkKKyAgICBz dyA9IEZkdFN3KCkKKyAgICB3aXRoIHN3LmFkZF9ub2RlKCdub2RlJyk6CisgICAgICAgIHN3LnBy b3BlcnR5X3UzMigncmVnJywgMikKKyAgICBmZHQgPSBzdy5hc19mZHQoKQogCiAgICAgIyBOb3cg d2UgY2FuIHVzZSBpdCBhcyBhIHJlYWwgZGV2aWNlIHRyZWUKICAgICBmZHQuc2V0cHJvcF91MzIo MCwgJ3JlZycsIDMpCisKKyAgICBUaGUgc2l6ZSBoaW50IHByb3ZpZGVzIGEgc3RhcnRpbmcgc2l6 ZSBmb3IgdGhlIHNwYWNlIHRvIGJlIHVzZWQgYnkgdGhlCisgICAgZGV2aWNlIHRyZWUuIFRoaXMg d2lsbCBiZSBpbmNyZWFzZWQgYXV0b21hdGljYWxseSBhcyBuZWVkZWQgYXMgbmV3IGl0ZW1zCisg ICAgYXJlIGFkZGVkIHRvIHRoZSB0cmVlLgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxm LCBzaXplLCBxdWlldD0oKSk6Ci0gICAgICAgIGZkdHJ3ID0gYnl0ZWFycmF5KHNpemUpCi0gICAg ICAgIGVyciA9IGNoZWNrX2VycihmZHRfY3JlYXRlKGZkdHJ3LCBzaXplKSkKLSAgICAgICAgaWYg ZXJyOgotICAgICAgICAgICAgcmV0dXJuIGVycgotICAgICAgICBzZWxmLl9mZHRydyA9IGZkdHJ3 CisgICAgSU5DX1NJWkUgPSAxMDI0ICAjIEV4cGFuZCBzaXplIGJ5IHRoaXMgbXVjaCB3aGVuIG91 dCBvZiBzcGFjZQogCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgIiIiQ29udGFj dCBtYW5hZ2VyIHRvIHVzZSB0byBjcmVhdGUgYSBkZXZpY2UgdHJlZSB2aWEgc29mdHdhcmUiIiIK LSAgICAgICAgcmV0dXJuIHNlbGYKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2l6ZV9oaW50PU5v bmUpOgorICAgICAgICAiIiJDcmVhdGUgYSBuZXcgRmR0U3cgb2JqZWN0CiAKLSAgICBkZWYgX19l eGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNlYmFjayk6Ci0gICAgICAgIGNoZWNrX2Vycihm ZHRfZmluaXNoKHNlbGYuX2ZkdHJ3KSkKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIHNpemVf aGludDogQSBoaW50IGFzIHRvIHRoZSBpbml0aWFsIHNpemUgdG8gdXNlCisKKyAgICAgICAgUmFp c2VzOgorICAgICAgICAgICAgVmFsdWVFcnJvciBpZiBzaXplX2hpbnQgaXMgbmVnYXRpdmUKIAot ICAgIGRlZiBBc0ZkdChzZWxmKToKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIEZkdFN3 IG9iamVjdCBvbiBzdWNjZXNzLCBlbHNlIGludGVnZXIgZXJyb3IgY29kZSAoaWYgbm90IHJhaXNp bmcpCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2l6ZV9oaW50OgorICAgICAgICAgICAg c2l6ZV9oaW50ID0gc2VsZi5JTkNfU0laRQorICAgICAgICBmZHRzdyA9IGJ5dGVhcnJheShzaXpl X2hpbnQpCisgICAgICAgIGVyciA9IGNoZWNrX2VycihmZHRfY3JlYXRlKGZkdHN3LCBzaXplX2hp bnQpKQorICAgICAgICBpZiBlcnI6CisgICAgICAgICAgICByZXR1cm4gZXJyCisgICAgICAgIHNl bGYuX2ZkdCA9IGZkdHN3CisKKyAgICBkZWYgYXNfZmR0KHNlbGYpOgogICAgICAgICAiIiJDb252 ZXJ0IGEgRmR0U3cgaW50byBhbiBGZHQgc28gaXQgY2FuIGJlIGFjY2Vzc2VkIGFzIG5vcm1hbAog Ci0gICAgICAgIE5vdGUgdGhhdCBmaW5pc2goKSBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgdGhpcyBm dW5jdGlvbiB3aWxsIHdvcmsuIElmCi0gICAgICAgIHlvdSBhcmUgdXNpbmcgdGhlIGNvbnRleHQg bWFuYWdlciAoc2VlICd3aXRoJyBjb2RlIGluIHRoZSBGZHRTdyBjbGFzcwotICAgICAgICBjb21t ZW50KSB0aGVuIHRoaXMgd2lsbCBoYXBwZW4gYXV0b21hdGljYWxseS4KKyAgICAgICAgQ3JlYXRl cyBhIG5ldyBGZHQgb2JqZWN0IGZyb20gdGhlIHdvcmstaW4tcHJvZ3Jlc3MgZGV2aWNlIHRyZWUu IFRoaXMKKyAgICAgICAgZG9lcyBub3QgY2FsbCBmZHRfZmluaXNoKCkgb24gdGhlIGN1cnJlbnQg b2JqZWN0LCBzbyBpdCBpcyBwb3NzaWJsZSB0bworICAgICAgICBhZGQgbW9yZSBub2Rlcy9wcm9w ZXJ0aWVzIGFuZCBjYWxsIGFzX2ZkdCgpIGFnYWluIHRvIGdldCBhbiB1cGRhdGVkCisgICAgICAg IHRyZWUuCiAKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICAgIEZkdCBvYmplY3QgYWxsb3dp bmcgYWNjZXNzIHRvIHRoZSBuZXdseSBjcmVhdGVkIGRldmljZSB0cmVlCiAgICAgICAgICIiIgot ICAgICAgICByZXR1cm4gRmR0KHNlbGYuX2ZkdHJ3KQorICAgICAgICBmZHRzdyA9IGJ5dGVhcnJh eShzZWxmLl9mZHQpCisgICAgICAgIGNoZWNrX2VycihmZHRfZmluaXNoKGZkdHN3KSkKKyAgICAg ICAgcmV0dXJuIEZkdChmZHRzdykKIAotICAgIGRlZiByZXNpemUoc2VsZiwgc2l6ZSwgcXVpZXQ9 KCkpOgorICAgIGRlZiBjaGVja19zcGFjZShzZWxmLCB2YWwpOgorICAgICAgICAiIiJDaGVjayBp ZiB3ZSBuZWVkIHRvIGFkZCBtb3JlIHNwYWNlIHRvIHRoZSBGRFQKKworICAgICAgICBUaGlzIHNo b3VsZCBiZSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IgY29kZSBmcm9tIGFuIG9wZXJhdGlvbi4gSWYg dGhpcyBpcworICAgICAgICAtTk9TUEFDRSB0aGVuIHRoZSBGRFQgd2lsbCBiZSBleHBhbmRlZCB0 byBoYXZlIG1vcmUgc3BhY2UsIGFuZCBUcnVlIHdpbGwKKyAgICAgICAgYmUgcmV0dXJuZWQsIGlu ZGljYXRpbmcgdGhhdCB0aGUgb3BlcmF0aW9uIG5lZWRzIHRvIGJlIHRyaWVkIGFnYWluLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICB2YWw6IFJldHVybiB2YWx1ZSBmcm9tIHRoZSBvcGVy YXRpb24gdGhhdCB3YXMgYXR0ZW1wdGVkCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg IFRydWUgaWYgdGhlIG9wZXJhdGlvbiBtdXN0IGJlIHJldHJpZWQsIGVsc2UgRmFsc2UKKyAgICAg ICAgIiIiCisgICAgICAgIGlmIGNoZWNrX2Vycih2YWwsIFFVSUVUX05PU1BBQ0UpIDwgMDoKKyAg ICAgICAgICAgIHNlbGYucmVzaXplKGxlbihzZWxmLl9mZHQpICsgc2VsZi5JTkNfU0laRSkKKyAg ICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIHJl c2l6ZShzZWxmLCBzaXplKToKICAgICAgICAgIiIiUmVzaXplIHRoZSBidWZmZXIgdG8gYWNjb21t b2RhdGUgYSBsYXJnZXIgdHJlZQogCiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAgICBzaXplOiBO ZXcgc2l6ZSBvZiB0cmVlCi0gICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1w dHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKIAogICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAg ICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1cnMKKyAg ICAgICAgICAgIEZkdEV4Y2VwdGlvbiBvbiBhbnkgZXJyb3IKICAgICAgICAgIiIiCiAgICAgICAg IGZkdCA9IGJ5dGVhcnJheShzaXplKQotICAgICAgICBmZHRbOmxlbihzZWxmLl9mZHRydyldID0g c2VsZi5fZmR0cncKLSAgICAgICAgZXJyID0gY2hlY2tfZXJyKGZkdF9yZXNpemUoc2VsZi5fZmR0 cncsIGZkdCwgc2l6ZSksIHF1aWV0KQotICAgICAgICBpZiBlcnI6Ci0gICAgICAgICAgICByZXR1 cm4gZXJyCi0gICAgICAgIHNlbGYuX2ZkdHJ3ID0gZmR0CisgICAgICAgIGVyciA9IGNoZWNrX2Vy cihmZHRfcmVzaXplKHNlbGYuX2ZkdCwgZmR0LCBzaXplKSkKKyAgICAgICAgc2VsZi5fZmR0ID0g ZmR0CiAKLSAgICBkZWYgYWRkX3Jlc2VydmVtYXBfZW50cnkoc2VsZiwgYWRkciwgc2l6ZSwgcXVp ZXQ9KCkpOgorICAgIGRlZiBhZGRfcmVzZXJ2ZW1hcF9lbnRyeShzZWxmLCBhZGRyLCBzaXplKToK ICAgICAgICAgIiIiQWRkIGEgbmV3IG1lbW9yeSByZXNlcnZlIG1hcCBlbnRyeQogCiAgICAgICAg IE9uY2UgZmluaXNoZWQgYWRkaW5nLCB5b3UgbXVzdCBjYWxsIGZpbmlzaF9yZXNlcnZlbWFwKCku CkBAIC03NzIsMjYgKzc5MiwyNCBAQCBjbGFzcyBGZHRTdyhvYmplY3QpOgogICAgICAgICBBcmdz OgogICAgICAgICAgICAgYWRkcjogNjQtYml0IHN0YXJ0IGFkZHJlc3MKICAgICAgICAgICAgIHNp emU6IDY0LWJpdCBzaXplCi0gICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1w dHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKIAogICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAg ICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1cnMKKyAg ICAgICAgICAgIEZkdEV4Y2VwdGlvbiBvbiBhbnkgZXJyb3IKICAgICAgICAgIiIiCi0gICAgICAg IHJldHVybiBjaGVja19lcnIoZmR0X2FkZF9yZXNlcnZlbWFwX2VudHJ5KHNlbGYuX2ZkdHJ3LCBh ZGRyLCBzaXplKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldCkKKyAgICAgICAgd2hp bGUgc2VsZi5jaGVja19zcGFjZShmZHRfYWRkX3Jlc2VydmVtYXBfZW50cnkoc2VsZi5fZmR0LCBh ZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplKSk6CisgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgZmluaXNoX3Jlc2VydmVt YXAoc2VsZiwgcXVpZXQ9KCkpOgorICAgIGRlZiBmaW5pc2hfcmVzZXJ2ZW1hcChzZWxmKToKICAg ICAgICAgIiIiSW5kaWNhdGUgdGhhdCB0aGVyZSBhcmUgbm8gbW9yZSByZXNlcnZlIG1hcCBlbnRy aWVzIHRvIGFkZAogCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBxdWlldDogRXJyb3JzIHRv IGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKLQogICAgICAgICBSYWlzZXM6 Ci0gICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBvdGhlciBlcnJv ciBvY2N1cnMKKyAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBvbiBhbnkgZXJyb3IKICAgICAgICAg IiIiCi0gICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X2ZpbmlzaF9yZXNlcnZlbWFwKHNlbGYu X2ZkdHJ3KSwgcXVpZXQpCisgICAgICAgIHdoaWxlIHNlbGYuY2hlY2tfc3BhY2UoZmR0X2Zpbmlz aF9yZXNlcnZlbWFwKHNlbGYuX2ZkdCkpOgorICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIGJl Z2luX25vZGUoc2VsZiwgbmFtZSwgcXVpZXQ9KCkpOgorICAgIGRlZiBiZWdpbl9ub2RlKHNlbGYs IG5hbWUpOgogICAgICAgICAiIiJCZWdpbiBhIG5ldyBub2RlCiAKICAgICAgICAgVXNlIHRoaXMg YmVmb3JlIGFkZGluZyBwcm9wZXJ0aWVzIHRvIHRoZSBub2RlLiBUaGVuIGNhbGwgZW5kX25vZGUo KSB0bwpAQCAtODAwLDE0ICs4MTgsMTQgQEAgY2xhc3MgRmR0U3cob2JqZWN0KToKIAogICAgICAg ICBBcmdzOgogICAgICAgICAgICAgbmFtZTogTmFtZSBvZiBub2RlIHRvIGJlZ2luCi0gICAgICAg ICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9yZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9y cykKIAogICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9k ZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1cnMKKyAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBv biBhbnkgZXJyb3IKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X2Jl Z2luX25vZGUoc2VsZi5fZmR0cncsIG5hbWUpLCBxdWlldCkKKyAgICAgICAgd2hpbGUgc2VsZi5j aGVja19zcGFjZShmZHRfYmVnaW5fbm9kZShzZWxmLl9mZHQsIG5hbWUpKToKKyAgICAgICAgICAg IHBhc3MKIAotICAgIGRlZiBwcm9wZXJ0eV9zdHJpbmcoc2VsZiwgbmFtZSwgc3RyaW5nLCBxdWll dD0oKSk6CisgICAgZGVmIHByb3BlcnR5X3N0cmluZyhzZWxmLCBuYW1lLCBzdHJpbmcpOgogICAg ICAgICAiIiJBZGQgYSBwcm9wZXJ0eSB3aXRoIGEgc3RyaW5nIHZhbHVlCiAKICAgICAgICAgVGhl IHN0cmluZyB3aWxsIGJlIG51bC10ZXJtaW5hdGVkIHdoZW4gd3JpdHRlbiB0byB0aGUgZGV2aWNl IHRyZWUKQEAgLTgxNSwxNCArODMzLDE0IEBAIGNsYXNzIEZkdFN3KG9iamVjdCk6CiAgICAgICAg IEFyZ3M6CiAgICAgICAgICAgICBuYW1lOiBOYW1lIG9mIHByb3BlcnR5IHRvIGFkZAogICAgICAg ICAgICAgc3RyaW5nOiBTdHJpbmcgdmFsdWUgb2YgcHJvcGVydHkKLSAgICAgICAgICAgIHF1aWV0 OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJyb3JzKQogCiAgICAg ICAgIFJhaXNlczoKLSAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBubyBub2RlIGZvdW5kIG9y IG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAgICAgRmR0RXhjZXB0aW9uIG9uIGFueSBlcnJv cgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfcHJvcGVydHlfc3Ry aW5nKHNlbGYuX2ZkdHJ3LCBuYW1lLCBzdHJpbmcpLCBxdWlldCkKKyAgICAgICAgd2hpbGUgc2Vs Zi5jaGVja19zcGFjZShmZHRfcHJvcGVydHlfc3RyaW5nKHNlbGYuX2ZkdCwgbmFtZSwgc3RyaW5n KSk6CisgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgcHJvcGVydHlfdTMyKHNlbGYsIG5hbWUs IHZhbCwgcXVpZXQ9KCkpOgorICAgIGRlZiBwcm9wZXJ0eV91MzIoc2VsZiwgbmFtZSwgdmFsKToK ICAgICAgICAgIiIiQWRkIGEgcHJvcGVydHkgd2l0aCBhIDMyLWJpdCB2YWx1ZQogCiAgICAgICAg IFdyaXRlIGEgc2luZ2xlLWNlbGwgdmFsdWUgdG8gdGhlIGRldmljZSB0cmVlCkBAIC04MzAsMTQg Kzg0OCwxNCBAQCBjbGFzcyBGZHRTdyhvYmplY3QpOgogICAgICAgICBBcmdzOgogICAgICAgICAg ICAgbmFtZTogTmFtZSBvZiBwcm9wZXJ0eSB0byBhZGQKICAgICAgICAgICAgIHZhbDogVmFsdWUg b2YgcHJvcGVydHkKLSAgICAgICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0 byByYWlzZSBvbiBhbGwgZXJyb3JzKQogCiAgICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEZk dEV4Y2VwdGlvbiBpZiBubyBub2RlIGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycworICAgICAg ICAgICAgRmR0RXhjZXB0aW9uIG9uIGFueSBlcnJvcgogICAgICAgICAiIiIKLSAgICAgICAgcmV0 dXJuIGNoZWNrX2VycihmZHRfcHJvcGVydHlfdTMyKHNlbGYuX2ZkdHJ3LCBuYW1lLCB2YWwpLCBx dWlldCkKKyAgICAgICAgd2hpbGUgc2VsZi5jaGVja19zcGFjZShmZHRfcHJvcGVydHlfdTMyKHNl bGYuX2ZkdCwgbmFtZSwgdmFsKSk6CisgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgcHJvcGVy dHlfdTY0KHNlbGYsIG5hbWUsIHZhbCwgcXVpZXQ9KCkpOgorICAgIGRlZiBwcm9wZXJ0eV91NjQo c2VsZiwgbmFtZSwgdmFsKToKICAgICAgICAgIiIiQWRkIGEgcHJvcGVydHkgd2l0aCBhIDY0LWJp dCB2YWx1ZQogCiAgICAgICAgIFdyaXRlIGEgZG91YmxlLWNlbGwgdmFsdWUgdG8gdGhlIGRldmlj ZSB0cmVlIGluIGJpZy1lbmRpYW4gZm9ybWF0CkBAIC04NDUsMTQgKzg2MywxNCBAQCBjbGFzcyBG ZHRTdyhvYmplY3QpOgogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbmFtZTogTmFtZSBvZiBw cm9wZXJ0eSB0byBhZGQKICAgICAgICAgICAgIHZhbDogVmFsdWUgb2YgcHJvcGVydHkKLSAgICAg ICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJy b3JzKQogCiAgICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBubyBu b2RlIGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAgICAgRmR0RXhjZXB0aW9u IG9uIGFueSBlcnJvcgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRf cHJvcGVydHlfdTY0KHNlbGYuX2ZkdHJ3LCBuYW1lLCB2YWwpLCBxdWlldCkKKyAgICAgICAgd2hp bGUgc2VsZi5jaGVja19zcGFjZShmZHRfcHJvcGVydHlfdTY0KHNlbGYuX2ZkdCwgbmFtZSwgdmFs KSk6CisgICAgICAgICAgICBwYXNzCiAKLSAgICBkZWYgcHJvcGVydHlfY2VsbChzZWxmLCBuYW1l LCB2YWwsIHF1aWV0PSgpKToKKyAgICBkZWYgcHJvcGVydHlfY2VsbChzZWxmLCBuYW1lLCB2YWwp OgogICAgICAgICAiIiJBZGQgYSBwcm9wZXJ0eSB3aXRoIGEgc2luZ2xlLWNlbGwgdmFsdWUKIAog ICAgICAgICBXcml0ZSBhIHNpbmdsZS1jZWxsIHZhbHVlIHRvIHRoZSBkZXZpY2UgdHJlZQpAQCAt ODYzLDExICs4ODEsMTIgQEAgY2xhc3MgRmR0U3cob2JqZWN0KToKICAgICAgICAgICAgIHF1aWV0 OiBFcnJvcnMgdG8gaWdub3JlIChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJyb3JzKQogCiAgICAg ICAgIFJhaXNlczoKLSAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBubyBub2RlIGZvdW5kIG9y IG90aGVyIGVycm9yIG9jY3VycworICAgICAgICAgICAgRmR0RXhjZXB0aW9uIG9uIGFueSBlcnJv cgogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIGNoZWNrX2VycihmZHRfcHJvcGVydHlfY2Vs bChzZWxmLl9mZHRydywgbmFtZSwgdmFsKSwgcXVpZXQpCisgICAgICAgIHdoaWxlIHNlbGYuY2hl Y2tfc3BhY2UoZmR0X3Byb3BlcnR5X2NlbGwoc2VsZi5fZmR0LCBuYW1lLCB2YWwpKToKKyAgICAg ICAgICAgIHBhc3MKIAotICAgIGRlZiBwcm9wZXJ0eShzZWxmLCBuYW1lLCB2YWwsIHF1aWV0PSgp KToKKyAgICBkZWYgcHJvcGVydHkoc2VsZiwgbmFtZSwgdmFsKToKICAgICAgICAgIiIiQWRkIGEg cHJvcGVydHkKIAogICAgICAgICBXcml0ZSBhIG5ldyBwcm9wZXJ0eSB3aXRoIHRoZSBnaXZlbiB2 YWx1ZSB0byB0aGUgZGV2aWNlIHRyZWUuIFRoZSB2YWx1ZQpAQCAtODc5LDExICs4OTgsMTMgQEAg Y2xhc3MgRmR0U3cob2JqZWN0KToKICAgICAgICAgICAgIHF1aWV0OiBFcnJvcnMgdG8gaWdub3Jl IChlbXB0eSB0byByYWlzZSBvbiBhbGwgZXJyb3JzKQogCiAgICAgICAgIFJhaXNlczoKLSAgICAg ICAgICAgIEZkdEV4Y2VwdGlvbiBpZiBubyBub2RlIGZvdW5kIG9yIG90aGVyIGVycm9yIG9jY3Vy cworICAgICAgICAgICAgRmR0RXhjZXB0aW9uIG9uIGFueSBlcnJvcgogICAgICAgICAiIiIKLSAg ICAgICAgcmV0dXJuIGNoZWNrX2VycihfZmR0X3Byb3BlcnR5KHNlbGYuX2ZkdHJ3LCBuYW1lLCB2 YWwsIGxlbih2YWwpKSwgcXVpZXQpCisgICAgICAgIHdoaWxlIHNlbGYuY2hlY2tfc3BhY2UoZmR0 X3Byb3BlcnR5X3N0dWIoc2VsZi5fZmR0LCBuYW1lLCB2YWwsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHZhbCkpKToKKyAgICAgICAgICAgIHBh c3MKIAotICAgIGRlZiBlbmRfbm9kZShzZWxmLCBxdWlldD0oKSk6CisgICAgZGVmIGVuZF9ub2Rl KHNlbGYpOgogICAgICAgICAiIiJFbmQgYSBub2RlCiAKICAgICAgICAgVXNlIHRoaXMgYWZ0ZXIg YWRkaW5nIHByb3BlcnRpZXMgdG8gYSBub2RlIHRvIGNsb3NlIGl0IG9mZi4gWW91IGNhbiBhbHNv CkBAIC04OTMsMjQgKzkxNCwxMiBAQCBjbGFzcyBGZHRTdyhvYmplY3QpOgogICAgICAgICAgICAg cXVpZXQ6IEVycm9ycyB0byBpZ25vcmUgKGVtcHR5IHRvIHJhaXNlIG9uIGFsbCBlcnJvcnMpCiAK ICAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgRmR0RXhjZXB0aW9uIGlmIG5vIG5vZGUgZm91 bmQgb3Igb3RoZXIgZXJyb3Igb2NjdXJzCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gY2hl Y2tfZXJyKGZkdF9lbmRfbm9kZShzZWxmLl9mZHRydyksIHF1aWV0KQotCi0gICAgZGVmIGZpbmlz aChzZWxmLCBxdWlldD0oKSk6Ci0gICAgICAgICIiIkZpbmlzaCB3cml0aW5nIHRoZSBkZXZpY2Ug dHJlZQotCi0gICAgICAgIFRoaXMgY2xvc2VzIG9mZiB0aGUgZGV2aWNlIHRyZWUgcmVhZHkgZm9y IHVzZQotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBxdWlldDogRXJyb3JzIHRvIGlnbm9y ZSAoZW1wdHkgdG8gcmFpc2Ugb24gYWxsIGVycm9ycykKLQotICAgICAgICBSYWlzZXM6Ci0gICAg ICAgICAgICBGZHRFeGNlcHRpb24gaWYgbm8gbm9kZSBmb3VuZCBvciBvdGhlciBlcnJvciBvY2N1 cnMKKyAgICAgICAgICAgIEZkdEV4Y2VwdGlvbiBvbiBhbnkgZXJyb3IKICAgICAgICAgIiIiCi0g ICAgICAgIHJldHVybiBjaGVja19lcnIoZmR0X2ZpbmlzaChzZWxmLl9mZHRydyksIHF1aWV0KQor ICAgICAgICB3aGlsZSBzZWxmLmNoZWNrX3NwYWNlKGZkdF9lbmRfbm9kZShzZWxmLl9mZHQpKToK KyAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiBBZGROb2RlKHNlbGYsIG5hbWUpOgorICAgIGRl ZiBhZGRfbm9kZShzZWxmLCBuYW1lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGNvbnRleHQg Zm9yIGFkZGluZyBhIG5vZGUKIAogICAgICAgICBXaGVuIHVzZWQgaW4gYSAnd2l0aCcgY2xhdXNl IHRoaXMgc3RhcnRzIGEgbmV3IG5vZGUgYW5kIGZpbmlzaGVzIGl0CkBAIC05MTksNyArOTI4LDcg QEAgY2xhc3MgRmR0U3cob2JqZWN0KToKICAgICAgICAgQXJnczoKICAgICAgICAgICAgIG5hbWU6 IE5hbWUgb2Ygbm9kZSB0byBhZGQKICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBOb2RlQWRk ZXIoc2VsZi5fZmR0cncsIG5hbWUpCisgICAgICAgIHJldHVybiBOb2RlQWRkZXIoc2VsZiwgbmFt ZSkKIAogCiBjbGFzcyBOb2RlQWRkZXIoKToKQEAgLTkyNywyNiArOTM2LDMwIEBAIGNsYXNzIE5v ZGVBZGRlcigpOgogCiAgICAgVGhpcyBhbGxvd3MgeW91IHRvIGFkZCBub2RlcyBpbiBhIG1vcmUg bmF0dXJhbCB3YXk6CiAKLSAgICAgICAgd2l0aCBmZHRzdy5BZGROb2RlKCduYW1lJyk6CisgICAg ICAgIHdpdGggZmR0c3cuYWRkX25vZGUoJ25hbWUnKToKICAgICAgICAgICAgIGZkdHN3LnByb3Bl cnR5X3N0cmluZygndGVzdCcsICd2YWx1ZScpCiAKICAgICBUaGUgbm9kZSBpcyBhdXRvbWF0aWNh bGx5IGNvbXBsZXRlZCB3aXRoIGEgY2FsbCB0byBlbmRfbm9kZSgpIHdoZW4gdGhlCiAgICAgY29u dGV4dCBleGl0cy4KICAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmR0LCBuYW1lKToK LSAgICAgICAgc2VsZi5fZmR0ID0gZmR0CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZkdHN3LCBu YW1lKToKKyAgICAgICAgc2VsZi5fZmR0ID0gZmR0c3cKICAgICAgICAgc2VsZi5fbmFtZSA9IG5h bWUKIAogICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIGNoZWNrX2VycihmZHRfYmVn aW5fbm9kZShzZWxmLl9mZHQsIHNlbGYuX25hbWUpKQorICAgICAgICBzZWxmLl9mZHQuYmVnaW5f bm9kZShzZWxmLl9uYW1lKQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGUsIHZhbHVlLCB0 cmFjZWJhY2spOgotICAgICAgICBjaGVja19lcnIoZmR0X2VuZF9ub2RlKHNlbGYuX2ZkdCkpCisg ICAgICAgIHNlbGYuX2ZkdC5lbmRfbm9kZSgpCiAlfQogCiAlcmVuYW1lKGZkdF9wcm9wZXJ0eSkg ZmR0X3Byb3BlcnR5X2Z1bmM7CiAKLXR5cGVkZWYgaW50IGZkdDMyX3Q7CisvKgorICogZmR0MzJf dCBpcyBhIGJpZy1lbmRpYW4gMzItYml0IHZhbHVlIGRlZmluZWQgdG8gdWludDMyX3QgaW4gbGli ZmR0X2Vudi5oCisgKiBzbyB1c2UgdGhlIHNhbWUgdHlwZSBoZXJlLgorICovCit0eXBlZGVmIHVp bnQzMl90IGZkdDMyX3Q7CiAKICVpbmNsdWRlICJsaWJmZHQvZmR0LmgiCiAKQEAgLTEwMzksMTYg KzEwNTIsMTcgQEAgdHlwZWRlZiBpbnQgZmR0MzJfdDsKICV3YXJuZmlsdGVyKDMwMikgZmR0X3By b3BlcnR5OwogCiAvKiBUaGVzZSBhcmUgbWFjcm9zIGluIHRoZSBoZWFkZXIgc28gaGF2ZSB0byBi ZSByZWRlZmluZWQgaGVyZSAqLwotaW50IGZkdF9tYWdpYyhjb25zdCB2b2lkICpmZHQpOwotaW50 IGZkdF90b3RhbHNpemUoY29uc3Qgdm9pZCAqZmR0KTsKLWludCBmZHRfb2ZmX2R0X3N0cnVjdChj b25zdCB2b2lkICpmZHQpOwotaW50IGZkdF9vZmZfZHRfc3RyaW5ncyhjb25zdCB2b2lkICpmZHQp OwotaW50IGZkdF9vZmZfbWVtX3Jzdm1hcChjb25zdCB2b2lkICpmZHQpOwotaW50IGZkdF92ZXJz aW9uKGNvbnN0IHZvaWQgKmZkdCk7Ci1pbnQgZmR0X2xhc3RfY29tcF92ZXJzaW9uKGNvbnN0IHZv aWQgKmZkdCk7Ci1pbnQgZmR0X2Jvb3RfY3B1aWRfcGh5cyhjb25zdCB2b2lkICpmZHQpOwotaW50 IGZkdF9zaXplX2R0X3N0cmluZ3MoY29uc3Qgdm9pZCAqZmR0KTsKLWludCBmZHRfc2l6ZV9kdF9z dHJ1Y3QoY29uc3Qgdm9pZCAqZmR0KTsKK3VpbnQzMl90IGZkdF9tYWdpYyhjb25zdCB2b2lkICpm ZHQpOwordWludDMyX3QgZmR0X3RvdGFsc2l6ZShjb25zdCB2b2lkICpmZHQpOwordWludDMyX3Qg ZmR0X29mZl9kdF9zdHJ1Y3QoY29uc3Qgdm9pZCAqZmR0KTsKK3VpbnQzMl90IGZkdF9vZmZfZHRf c3RyaW5ncyhjb25zdCB2b2lkICpmZHQpOwordWludDMyX3QgZmR0X29mZl9tZW1fcnN2bWFwKGNv bnN0IHZvaWQgKmZkdCk7Cit1aW50MzJfdCBmZHRfdmVyc2lvbihjb25zdCB2b2lkICpmZHQpOwor dWludDMyX3QgZmR0X2xhc3RfY29tcF92ZXJzaW9uKGNvbnN0IHZvaWQgKmZkdCk7Cit1aW50MzJf dCBmZHRfYm9vdF9jcHVpZF9waHlzKGNvbnN0IHZvaWQgKmZkdCk7Cit1aW50MzJfdCBmZHRfc2l6 ZV9kdF9zdHJpbmdzKGNvbnN0IHZvaWQgKmZkdCk7Cit1aW50MzJfdCBmZHRfc2l6ZV9kdF9zdHJ1 Y3QoY29uc3Qgdm9pZCAqZmR0KTsKKwogaW50IGZkdF9wcm9wZXJ0eV9zdHJpbmcodm9pZCAqZmR0 LCBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWwpOwogaW50IGZkdF9wcm9wZXJ0eV9j ZWxsKHZvaWQgKmZkdCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgdmFsKTsKIApAQCAtMTA1 Niw2ICsxMDcwLDYgQEAgaW50IGZkdF9wcm9wZXJ0eV9jZWxsKHZvaWQgKmZkdCwgY29uc3QgY2hh ciAqbmFtZSwgdWludDMyX3QgdmFsKTsKICAqIFRoaXMgZnVuY3Rpb24gaGFzIGEgc3R1YiBzaW5j ZSB0aGUgbmFtZSBmZHRfcHJvcGVydHkgaXMgdXNlZCBmb3IgYm90aCBhCiAgICogZnVuY3Rpb24g YW5kIGEgc3RydWN0LCB3aGljaCBjb25mdXNlcyBTV0lHLgogICovCi1pbnQgX2ZkdF9wcm9wZXJ0 eSh2b2lkICpmZHQsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbCwgaW50IGxlbik7 CitpbnQgZmR0X3Byb3BlcnR5X3N0dWIodm9pZCAqZmR0LCBjb25zdCBjaGFyICpuYW1lLCBjb25z dCBjaGFyICp2YWwsIGludCBsZW4pOwogCiAlaW5jbHVkZSA8Li4vbGliZmR0L2xpYmZkdC5oPgpk aWZmIC0tZ2l0IGEvdG9vbHMvZHRvYy9mZHQucHkgYi90b29scy9kdG9jL2ZkdC5weQppbmRleCA5 ZDY5YjQyNmMxNC4uNjYwNWJmYjc2YTQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2R0b2MvZmR0LnB5Cisr KyBiL3Rvb2xzL2R0b2MvZmR0LnB5CkBAIC0yNzksNyArMjc5LDcgQEAgY2xhc3MgTm9kZToKICAg ICAgICAgZmR0X29iaiA9IHNlbGYuX2ZkdC5fZmR0X29iagogICAgICAgICBpZiBmZHRfb2JqLnNl dHByb3BfdTMyKHNlbGYuT2Zmc2V0KCksIHByb3BfbmFtZSwgMCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAobGliZmR0Lk5PU1BBQ0UsKSkgPT0gLWxpYmZkdC5OT1NQQUNFOgotICAg ICAgICAgICAgZmR0X29iai5vcGVuX2ludG8oZmR0X29iai50b3RhbHNpemUoKSArIDEwMjQpCisg ICAgICAgICAgICBmZHRfb2JqLnJlc2l6ZShmZHRfb2JqLnRvdGFsc2l6ZSgpICsgMTAyNCkKICAg ICAgICAgICAgIGZkdF9vYmouc2V0cHJvcF91MzIoc2VsZi5PZmZzZXQoKSwgcHJvcF9uYW1lLCAw KQogICAgICAgICBzZWxmLnByb3BzW3Byb3BfbmFtZV0gPSBQcm9wKHNlbGYsIC0xLCBwcm9wX25h bWUsICdcMCcgKiA0KQogICAgICAgICBzZWxmLl9mZHQuSW52YWxpZGF0ZSgpCmRpZmYgLS1naXQg YS90b29scy9kdG9jL3Rlc3RfZmR0LnB5IGIvdG9vbHMvZHRvYy90ZXN0X2ZkdC5weQppbmRleCBm MDg1YjFkZDFhOS4uZWI3ZmIxMTM0MWUgMTAwNzU1Ci0tLSBhL3Rvb2xzL2R0b2MvdGVzdF9mZHQu cHkKKysrIGIvdG9vbHMvZHRvYy90ZXN0X2ZkdC5weQpAQCAtMjIyLDcgKzIyMiw3IEBAIGNsYXNz IFRlc3RQcm9wKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICAgICBSZXR1cm4gZmR0LlByb3Ag b2JqZWN0IGZvciB0aGlzIHByb3BlcnR5CiAgICAgICAgICIiIgotICAgICAgICBwID0gc2VsZi5m ZHQuZ2V0X3Byb3BlcnR5KHNlbGYubm9kZS5PZmZzZXQoKSwgcHJvcF9uYW1lKQorICAgICAgICBw ID0gc2VsZi5mZHQuZ2V0cHJvcChzZWxmLm5vZGUuT2Zmc2V0KCksIHByb3BfbmFtZSkKICAgICAg ICAgcmV0dXJuIGZkdC5Qcm9wKHNlbGYubm9kZSwgLTEsIHByb3BfbmFtZSwgcCkKIAogICAgIGRl ZiB0ZXN0TWFrZVByb3Aoc2VsZik6Ci0tIAoyLjE4LjAuMzQ1Lmc1YzljZTY0NGMzLWdvb2cKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClUtQm9vdCBtYWls aW5nIGxpc3QKVS1Cb290QGxpc3RzLmRlbnguZGUKaHR0cHM6Ly9saXN0cy5kZW54LmRlL2xpc3Rp bmZvL3UtYm9vdAo=