Name: series-workflowq82n5 Phase: Succeeded StartedAt: 2026-08-07 21:02:38 +0000 UTC FinishedAt: 2026-08-07 22:41:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[0] Phase: Succeeded StartedAt: 2026-08-07 21:02:38 +0000 UTC FinishedAt: 2026-08-07 21:21:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 21:02:38 +0000 UTC FinishedAt: 2026-08-07 21:21:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ea2bff00da89d7767d677bb68470130ba96f4928", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ea2bff00da89d7767d677bb68470130ba96f4928", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PCI" ], "series_id": "94ca89a0-1bb0-4a70-9fef-a25e166fa2e8" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_pci_core_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BjaV9jb3JlX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgUENJIHJlc2V0IG9wZXJhdGlvbnMgaW4gdGhlIFZGSU8gUENJIGRyaXZlci4gSXQgZHJvcHMgbG9ja3MgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUgUENJIGNvcmUgYW5kIHJlLWFjcXVpcmVzIHRoZW0gdmlhIG5ldyBgLnJlc2V0X3ByZXBhcmVgIGFuZCBgLnJlc2V0X2RvbmVgIGhvb2tzIHRvIHByZXZlbnQgZGVhZGxvY2tzLiBJdCBhbHNvIGZpeGVzIGxvY2sgdW53aW5kaW5nIGluIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHN5bmNocm9uaXphdGlvbiBhbmQgZGV2aWNlIHN0YXRlLCBhbmQgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyBkZWFkbG9ja3Mgb3IgdXNlLWFmdGVyLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtBU0FOLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIHVubmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTBiYjFlNzBjMjA1MzQyZDUzMTcyNTRhNjc4NTYyNDU1NzUxYzRmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggYTExM2M1NTg0NWUxMC4uZTQ2YjBiMWQ4YTU5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuQEAgLTEzMzQsMTIgJiM0MzsxMzM0LDE0IEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcmVzZXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIFx0ICovXG4gXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcbi1cdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbi1cdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cdTAwM2VwZGV2KTtcbi1cdGlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKVxuLVx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRHJvcCB0aGUgbG9jayBiZWZvcmUgZW50ZXJpbmcgdGhlIFBDSSBjb3JlLlxuJiM0MztcdCAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLlxuJiM0MztcdCAqL1xuIFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4mIzQzO1x0cmV0ID0gcGNpX3RyeV9yZXNldF9mdW5jdGlvbih2ZGV2LVx1MDAzZXBkZXYpO1xuJiM0MztcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTI0MTgsOCAmIzQzOzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAodmRldikge1xuJiM0MztcdFx0ZG93bl93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiYjNDM7XHRcdHZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApO1xuJiM0MztcdFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XG4mIzQzO1x0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAodmRldikge1xuJiM0MztcdFx0aWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4mIzQzO1x0XHRcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7XG4mIzQzO1x0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcbiBcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcbiYjNDM7XHQucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSxcbiYjNDM7XHQucmVzZXRfZG9uZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZSxcbiB9O1xuIEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzKTtcbiBcbkBAIC0yNTYxLDU1ICYjNDM7MjU4OCw1MiBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsXG4gXG4gXHRcdGlmICghb3duZWQpIHtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRnb3RvIGVycl9vdXQ7XG4gXHRcdH1cbiYjNDM7XHR9XG4gXG4mIzQzO1x0LyogWmFwLCBhbmQgc2V0IHBvd2VyIHN0YXRlICovXG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuIFx0XHQvKlxuLVx0XHQgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UgYW5kIHphcCBCQVJcbi1cdFx0ICogbWFwcGluZ3MgdG8gcHJldmVudCB0aGUgdXNlciBhY2Nlc3NpbmcgdGhlIGRldmljZSB3aGlsZSBpblxuLVx0XHQgKiByZXNldC4gIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbiYjNDM7XHRcdCAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSwgemFwIEJBUlxuJiM0MztcdFx0ICogbWFwcGluZ3MsIGFuZCByZXN0b3JlIHBvd2VyIHN0YXRlIGJlZm9yZSByZXNldC5cbiYjNDM7XHRcdCAqIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbiBcdFx0ICogcnVuYXdheSBhbmQgdW53aW5kIGlmIHdlIGhpdCBjb250ZW50aW9uLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFkb3duX3dyaXRlX3RyeWxvY2soXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jaykpIHtcbiBcdFx0XHRyZXQgPSAtRUJVU1k7XG4tXHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXZSBmYWlsZWQgdG8gbG9jayBUSElTIGRldmljZS4gV2UgbXVzdCBzdGVwIGJhY2sgb25lXG4mIzQzO1x0XHRcdCAqIGRldmljZSBzbyBlcnJfdW5kbyBvbmx5IHVubG9ja3MgZGV2aWNlcyB0aGF0IHN1Y2NlZWRlZC5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSkge1xuJiM0MztcdFx0XHRcdHZkZXYgPSBsaXN0X3ByZXZfZW50cnkodmRldiwgdmRldi5kZXZfc2V0X2xpc3QpO1xuJiM0MztcdFx0XHRcdGdvdG8gZXJyX3VuZG87XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0Z290byBlcnJfb3V0O1xuIFx0XHR9XG4gXG4tXHRcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbiBcdFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XG4mIzQzO1x0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcdH1cbiBcbi1cdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsXG4tXHRcdFx0XHRcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcbi1cdFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4tXHRcdGdvdG8gZXJyX3VuZG87XG4tXHR9XG4tXG4tXHQvKlxuLVx0ICogVGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIHJlc2V0IGFsbCB0aGUgZGV2aWNlcyBpbiB0aGUgYnVzLlxuLVx0ICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cbi1cdCAqIEZvciB0aGVzZSBkZXZpY2VzLCB0aGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgaW50ZXJuYWxseSBzZXRcbi1cdCAqIHRoZSBwb3dlciBzdGF0ZSB0byBEMCB3aXRob3V0IHZmaW8gZHJpdmVyIGludm9sdmVtZW50LlxuLVx0ICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhblxuLVx0ICogY2F1c2UgdGhlIFBDSSBjb25maWcgc3BhY2UgcmVzZXQgd2l0aG91dCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsXG4tXHQgKiBzdGF0ZSAoc2F2ZWQgbG9jYWxseSBpbiAmIzM5O3ZkZXYtXHUwMDNlcG1fc2F2ZSYjMzk7KS5cbi1cdCAqL1xuJiM0MztcdC8qIERyb3AgbG9ja3MgYmVmb3JlIGNyb3NzaW5nIGludG8gUENJIGNvcmUgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpXG4tXHRcdHZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApO1xuJiM0MztcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4mIzQzO1x0LyogUENJIGNvcmUgaGFuZGxlcyB0aGUgcmVzZXQgYW5kIGNhbGxzIC5yZXNldCBob29rcyAqL1xuIFx0cmV0ID0gcGNpX3Jlc2V0X2J1cyhwZGV2KTtcbiBcbi1cdHZkZXYgPSBsaXN0X2xhc3RfZW50cnkoXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCxcbi1cdFx0XHQgICAgICAgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4mIzQzO1x0Z290byBlcnJfb3V0O1xuIFxuIGVycl91bmRvOlxuJiM0MztcdC8qIFVud2luZCBsb2NrcyBjbGVhbmx5IGZvciBkZXZpY2VzIHdlIHN1Y2Nlc3NmdWxseSBsb2NrZWQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsXG4tXHRcdFx0XHRcdCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuLVx0XHRpZiAodmRldi1cdTAwM2V2ZGV2Lm9wZW5fY291bnQgXHUwMDI2XHUwMDI2IF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4tXHRcdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbiYjNDM7XHRcdFx0XHRcdCB2ZGV2LmRldl9zZXRfbGlzdClcbiBcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4tXHR9XG4gXG4mIzQzO2Vycl9vdXQ6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxuIFx0XHRwbV9ydW50aW1lX3B1dChcdTAwMjZ2ZGV2LVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyAoYm90aCBzaW5nbGUgZGV2aWNlIHJlc2V0IGFuZCBob3QgcmVzZXQpLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVkZJT19ERVZJQ0VfUkVTRVQgYW5kIFZGSU9fREVWSUNFX1BDSV9IT1RfUkVTRVQgaW9jdGxzLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIG9uIHZpcnR1YWwgUENJIGRldmljZXMgYm91bmQgdG8gdGhlIHZmaW8tcGNpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwYmIxZTcwYzIwNTM0MmQ1MzE3MjU0YTY3ODU2MjQ1NTc1MWM0ZjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDIxOjE5OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCBhMTEzYzU1ODQ1ZTEwLi5lNDZiMGIxZDhhNTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwpAQCAtMTMzNCwxMiAmIzQzOzEzMzQsMTQgQEAgc3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsCiAJICovCiAJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiAKLQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7Ci0JcmV0ID0gcGNpX3RyeV9yZXNldF9mdW5jdGlvbih2ZGV2LSZndDtwZGV2KTsKLQlpZiAoX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSkKLQkJdmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTsKJiM0MzsJLyoKJiM0MzsJICogRHJvcCB0aGUgbG9jayBiZWZvcmUgZW50ZXJpbmcgdGhlIFBDSSBjb3JlLgomIzQzOwkgKiBUaGUgUENJIGNvcmUgd2lsbCByZS1hY3F1aXJlIGl0IHZpYSBvdXIgLnJlc2V0X3ByZXBhcmUgaG9vay4KJiM0MzsJICovCiAJdXBfd3JpdGUoJmFtcDt2ZGV2LSZndDttZW1vcnlfbG9jayk7CiAKJiM0MzsJcmV0ID0gcGNpX3RyeV9yZXNldF9mdW5jdGlvbih2ZGV2LSZndDtwZGV2KTsKJiM0MzsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yNDE4LDggJiM0MzsyNDIwLDMzIEBAIGludCB2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZSk7CiAKJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwomIzQzOwlpZiAodmRldikgewomIzQzOwkJZG93bl93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKJiM0MzsJCXZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApOwomIzQzOwkJdmZpb19wY2lfemFwX2JhcnModmRldik7CiYjNDM7CQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsKJiM0MzsJaWYgKHZkZXYpIHsKJiM0MzsJCWlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKQomIzQzOwkJCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7CiYjNDM7CQl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMgPSB7CiAJLmVycm9yX2RldGVjdGVkID0gdmZpb19wY2lfY29yZV9hZXJfZXJyX2RldGVjdGVkLAomIzQzOwkucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSwKJiM0MzsJLnJlc2V0X2RvbmUgPSB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUsCiB9OwogRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMpOwogCkBAIC0yNTYxLDU1ICYjNDM7MjU4OCw1MiBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsCiAKIAkJaWYgKCFvd25lZCkgewogCQkJcmV0ID0gLUVJTlZBTDsKLQkJCWJyZWFrOwomIzQzOwkJCWdvdG8gZXJyX291dDsKIAkJfQomIzQzOwl9CiAKJiM0MzsJLyogWmFwLCBhbmQgc2V0IHBvd2VyIHN0YXRlICovCiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpIHsKIAkJLyoKLQkJICogVGFrZSB0aGUgbWVtb3J5IHdyaXRlIGxvY2sgZm9yIGVhY2ggZGV2aWNlIGFuZCB6YXAgQkFSCi0JCSAqIG1hcHBpbmdzIHRvIHByZXZlbnQgdGhlIHVzZXIgYWNjZXNzaW5nIHRoZSBkZXZpY2Ugd2hpbGUgaW4KLQkJICogcmVzZXQuICBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssCiYjNDM7CQkgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UsIHphcCBCQVIKJiM0MzsJCSAqIG1hcHBpbmdzLCBhbmQgcmVzdG9yZSBwb3dlciBzdGF0ZSBiZWZvcmUgcmVzZXQuCiYjNDM7CQkgKiBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssCiAJCSAqIHJ1bmF3YXkgYW5kIHVud2luZCBpZiB3ZSBoaXQgY29udGVudGlvbi4KIAkJICovCiAJCWlmICghZG93bl93cml0ZV90cnlsb2NrKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spKSB7CiAJCQlyZXQgPSAtRUJVU1k7Ci0JCQlicmVhazsKJiM0MzsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFdlIGZhaWxlZCB0byBsb2NrIFRISVMgZGV2aWNlLiBXZSBtdXN0IHN0ZXAgYmFjayBvbmUKJiM0MzsJCQkgKiBkZXZpY2Ugc28gZXJyX3VuZG8gb25seSB1bmxvY2tzIGRldmljZXMgdGhhdCBzdWNjZWVkZWQuCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpKSB7CiYjNDM7CQkJCXZkZXYgPSBsaXN0X3ByZXZfZW50cnkodmRldiwgdmRldi5kZXZfc2V0X2xpc3QpOwomIzQzOwkJCQlnb3RvIGVycl91bmRvOwomIzQzOwkJCX0KJiM0MzsJCQlnb3RvIGVycl9vdXQ7CiAJCX0KIAotCQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7CiAJCXZmaW9fcGNpX3phcF9iYXJzKHZkZXYpOwomIzQzOwkJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiAJfQogCi0JaWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwKLQkJCQkmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHsKLQkJdmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7Ci0JCWdvdG8gZXJyX3VuZG87Ci0JfQotCi0JLyoKLQkgKiBUaGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgcmVzZXQgYWxsIHRoZSBkZXZpY2VzIGluIHRoZSBidXMuCi0JICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy4KLQkgKiBGb3IgdGhlc2UgZGV2aWNlcywgdGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIGludGVybmFsbHkgc2V0Ci0JICogdGhlIHBvd2VyIHN0YXRlIHRvIEQwIHdpdGhvdXQgdmZpbyBkcml2ZXIgaW52b2x2ZW1lbnQuCi0JICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhbgotCSAqIGNhdXNlIHRoZSBQQ0kgY29uZmlnIHNwYWNlIHJlc2V0IHdpdGhvdXQgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbAotCSAqIHN0YXRlIChzYXZlZCBsb2NhbGx5IGluICYjMzk7dmRldi0mZ3Q7cG1fc2F2ZSYjMzk7KS4KLQkgKi8KJiM0MzsJLyogRHJvcCBsb2NrcyBiZWZvcmUgY3Jvc3NpbmcgaW50byBQQ0kgY29yZSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpCi0JCXZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApOwomIzQzOwkJdXBfd3JpdGUoJmFtcDt2ZGV2LSZndDttZW1vcnlfbG9jayk7CiAKJiM0MzsJLyogUENJIGNvcmUgaGFuZGxlcyB0aGUgcmVzZXQgYW5kIGNhbGxzIC5yZXNldCBob29rcyAqLwogCXJldCA9IHBjaV9yZXNldF9idXMocGRldik7CiAKLQl2ZGV2ID0gbGlzdF9sYXN0X2VudHJ5KCZhbXA7ZGV2X3NldC0mZ3Q7ZGV2aWNlX2xpc3QsCi0JCQkgICAgICAgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2LmRldl9zZXRfbGlzdCk7CiYjNDM7CWdvdG8gZXJyX291dDsKIAogZXJyX3VuZG86CiYjNDM7CS8qIFVud2luZCBsb2NrcyBjbGVhbmx5IGZvciBkZXZpY2VzIHdlIHN1Y2Nlc3NmdWxseSBsb2NrZWQgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb21fcmV2ZXJzZSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LAotCQkJCQkgdmRldi5kZXZfc2V0X2xpc3QpIHsKLQkJaWYgKHZkZXYtJmd0O3ZkZXYub3Blbl9jb3VudCAmYW1wOyZhbXA7IF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpCi0JCQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpOwomIzQzOwkJCQkJIHZkZXYuZGV2X3NldF9saXN0KQogCQl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKLQl9CiAKJiM0MztlcnJfb3V0OgogCWxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpCiAJCXBtX3J1bnRpbWVfcHV0KCZhbXA7dmRldi0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUENJIFJlc2V0IFBhdGNoIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAsIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAsIGFuZCBpdCYjMzk7cyBhZGRpbmcgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gaGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQWZ0ZXIgYWxsLCBWRklPIGlzIGFsbCBhYm91dCBwYXNzaW5nIFBDSSBkZXZpY2VzIHRocm91Z2ggdG8gdXNlcnNwYWNlIG9yIFZNcy4KClJpZ2h0LCBzbyBjYW4gd2UgZnV6eiBWRklPIFBDSSBpbnNpZGUgUUVNVT8gSSBrbm93IHRoZXJlIGFyZSB2aXJ0dWFsIFBDSSBkZXZpY2VzLCBhbmQgc3l6a2FsbGVyIGhhcyBzb21lIFZGSU8gZGVzY3JpcHRpb25zLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGNoZWNrIGlmIFZGSU8gUENJIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIuIElmIG5vdCwgY2FuIHdlIGVuYWJsZSBpdD8gSG9sZCBvbiwgdGhvdWdoLi4uIFZGSU8gUENJIG5lZWRzIGEgUENJIGRldmljZSB0byBsYXRjaCBvbnRvLCBkb2VzbiYjMzk7dCBpdD8gT2theSwgc28gc3l6a2FsbGVyICpjb3VsZCogdXNlIHRoZSBgdmZpby1wY2lgIGRyaXZlciB0byBiaW5kIHRvIHNvbWUgZHVtbXkgb3IgdmlydHVhbCBQQ0kgZGV2aWNlcy4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQuCgpOb3csIGxldCYjMzk7cyBhbHNvIGNoZWNrIGlmIGBWRklPX1BDSWAgaXMgZ2VuZXJhbGx5IGVuYWJsZWQgaW4gc3RhbmRhcmQga2VybmVsIGNvbmZpZ3MuIFRoYXQmIzM5O3MgYSBzYW5pdHkgY2hlY2suIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gZG8gc29tZSBjb2RlIGFyY2hhZW9sb2d5IGFuZCBodW50IGZvciBldmVyeSBzaW5nbGUgaW5zdGFuY2Ugb2YgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBhbmQgYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gR290dGEgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2lvY3RsX3Jlc2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTEyODA9c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTMxNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjEzMTY6c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMzE3LVx0XHRcdFx0dm9pZCBfX3VzZXIgKmFyZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNTU4PWxvbmcgdmZpb19wY2lfY29yZV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTc2LVx0Y2FzZSBWRklPX0RFVklDRV9SRVNFVDpcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1Nzc6XHRcdHJldHVybiB2ZmlvX3BjaV9pb2N0bF9yZXNldCh2ZGV2LCB1YXJnKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1NzgtXHRjYXNlIFZGSU9fREVWSUNFX1NFVF9JUlFTOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBWRklPLVBDSSByZXNldCBtZWNoYW5pc21zOgoKKipSZXNldHRpbmcgdGhlIFZGSU8gUENJIERldmljZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIHRoZXJlIGFyZSB0d28ga2V5IHBsYWNlcyB3aGVyZSByZXNldHMgYXJlIGluaXRpYXRlZCBpbiB0aGUgVkZJTy1QQ0kgZHJpdmVyLiBGaXJzdCwgdGhlIGBWRklPX0RFVklDRV9SRVNFVGAgaW9jdGwgY2FsbCDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHRyaWdnZXJpbmcgdGhlIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgdGhpcyBpcyB0aGUgbWFpbiwgZ2VuZXJhbCByZXNldCBwYXRoIHdlJiMzOTtyZSB1c2luZyBhdCB0aGF0IHBvaW50LiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgbWlnaHQgYmUgdGhlIGhpZ2hlci1sZXZlbCByZXNldCB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LgoKTm93LCB3ZSBhbHNvIGhhdmUgdGhpcyBvdGhlciBzY2VuYXJpbywgdHJpZ2dlcmVkIGJ5IGBWRklPX1BDSV9IT1RfUkVTRVRgLiBUaGF0IG9uZSBjYWxscyB0aGUgYHZmaW9fcGNpX2lvY3RsX3BjaV9ob3RfcmVzZXRgIGlvY3RsLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGEgY2FsbCB0byBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBTbyB0aGlzIGFwcGVhcnMgdG8gYmUgdGhlIG1lY2hhbmlzbSBmb3IgZGVhbGluZyB3aXRoICYjMzQ7aG90IHJlc2V0cyYjMzQ7LiBUaGF0IG1lYW5zIHdlIGhhdmUgc29tZSBkaWZmZXJlbnQgY29kZSBwYXRoIHRoYXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGVzZS4gVGhhdCBjb3VsZCBiZSB3aGVyZSBteSBjb2RlIHdvdWxkIGRpZmZlcmVudGlhdGUgZm9yIHRoZSB0eXBlIG9mIHJlc2V0IG9yIGV2ZW4gdGhlIHR5cGUgb2YgZGV2aWNlLgoKSXQgbG9va3MgbGlrZSB0aGUgZHJpdmVyIGhhcyBzZXBhcmF0ZSwgYnV0IHJlbGF0ZWQsIHJvdXRpbmVzIHRvIGhhbmRsZSB0aGVzZSBkaWZmZXJlbnQgcmVzZXQgdHlwZXMsIGJvdGggc3RlbW1pbmcgZnJvbSB0aGUgaW9jdGwgbGF5ZXIuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIHdvdWxkIGV4cGVjdCBmb3IgYSByb2J1c3QgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI2NT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9kZXZfc2V0X3RyeV9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI2NjpzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19wY2lfZ3JvdXBfaW5mbyAqZ3JvdXBzLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE0MjU9dmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldF9ncm91cHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE0OTItXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxNDkzOlx0cmV0ID0gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cdTAwM2V2ZGV2LmRldl9zZXQsIFx1MDAyNmluZm8sIE5VTEwpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTQ5NC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNTAzPXN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTUyOC1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1Mjk6XHRyZXR1cm4gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cdTAwM2V2ZGV2LmRldl9zZXQsIE5VTEwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTMwLVx0XHRcdFx0XHQgIHZmaW9faW9tbXVmZF9kZXZpY2VfaWN0eChcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0yNTExPXN0YXRpYyBpbnQgdmZpb19wY2lfZGV2X3NldF9wbV9ydW50aW1lX2dldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1MzEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTMyOnN0YXRpYyBpbnQgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQoc3RydWN0IHZmaW9fZGV2aWNlX3NldCAqZGV2X3NldCxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1MzMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19wY2lfZ3JvdXBfaW5mbyAqZ3JvdXBzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MDAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWRklPIFBDSSBSZXNldCBMb2NrIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIGEgc2lnbmlmaWNhbnQgYWRqdXN0bWVudCB0byBob3cgbG9ja3MgYXJlIG1hbmFnZWQgZHVyaW5nIHRoZSByZXNldCBwcm9jZXNzIHdpdGhpbiB0aGUgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGtleSBjaGFuZ2UgaXMgZHJvcHBpbmcgdGhlIGB2ZGV2LSZndDttZW1vcnlfbG9ja2AgKmJlZm9yZSogY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdoaWNoIGlzIGEgZGVwYXJ0dXJlIGZyb20gdGhlIHByZXZpb3VzIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuIFRoZSBub3RlIG1lbnRpb25zIHRoYXQgdGhlIFBDSSBjb3JlIHdpbGwgcmVhY3F1aXJlIHRoZSBsb2NrIHRocm91Z2ggYSBgLnJlc2V0X3ByZXBhcmVgIGhvb2ssIGFuZCB0aGUgYWRkaXRpb24gb2YgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdCBjb25maXJtcyB0aGlzIG5ldyBpbnRlcmFjdGlvbiBwYXR0ZXJuIHdpdGggdGhlIFBDSSBjb3JlJiMzOTtzIHJlc2V0IG1lY2hhbmlzbS4KClRoaXMgY2hhbmdlIGlzIGRlZmluaXRlbHkgd29ydGggdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgVkZJTyBQQ0ksIGFuZCwgZ2l2ZW4gaXQmIzM5O3MgZXhwb3NlZCB2aWEgYW4gaW9jdGwsIGl0JiMzOTtzIGFjY2Vzc2libGUgYW5kIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBmdXp6IGl0IGVmZmVjdGl2ZWx5PyBGb3J0dW5hdGVseSwgeWVzLCB0aGUgZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgaW4gb3JkZXIgYW5kIHN5emthbGxlciBkb2VzIHN1cHBvcnQgVkZJTyBhbmQgYmluZGluZyBkZXZpY2VzIHRvIHZmaW8tcGNpLCBzbyB3ZSBzaG91bGQgYmUgZ29vZCB0byBnby4KCkJlZm9yZSB3ZSBnZXQgc3RhcnRlZCwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBWRklPX1BDSSBLY29uZmlnIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGFzIGV4cGVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9Mj1tZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1OmNvbmZpZyBWRklPX1BDSV9DT1JFXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTktXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMS1cdGRlZl9ib29sIHkgaWYgIVMzOTBcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTQ6Y29uZmlnIFZGSU9fUENJXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IFBDSSBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9MjM9aWYgVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMjUtXHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MzQ6Y29uZmlnIFZGSU9fUENJX0lHRFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTM1LVx0Ym9vbCBcJiMzNDtHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU4OmNvbmZpZyBWRklPX1BDSV9ETUFCVUZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy01OS1cdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcdTAwMjZcdTAwMjYgUENJX1AyUERNQSBcdTAwMjZcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODgzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipWRklPX1BDSSBEZWVwIERpdmUqKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgYFZGSU9fUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyBlc3RhYmxpc2ggYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHRpZSBpbnRvIGBWRklPX1BDSWAmIzM0Oy4gSSYjMzk7bSBub3QganVzdCBnb2luZyB0byBibGluZGx5IGRpdmUgaW47IGEgdGhvcm91Z2ggY2hlY2sgb2Ygd2hhdCB0aGlzIHJlbGllcyBvbiBpcyBjcnVjaWFsIGZvciB0cm91Ymxlc2hvb3Rpbmcgb3IgbW9kaWZpY2F0aW9uIGxhdGVyLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGZpdHMgaW50byB0aGUgd2hvbGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTA6XHRjb25maWcgVkZJT19QQ0lfSU5UWFxuICAxMTpcdFx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxuICAxMjpcdFx0ZGVwZW5kcyBvbiBWRklPX1BDSV9DT1JFXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFZGSU9fUENJXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IFBDSSBkZXZpY2VcJiMzNDtcbiAgMTY6XHRcdHNlbGVjdCBWRklPX1BDSV9DT1JFXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFN1cHBvcnQgZm9yIHRoZSBnZW5lcmljIFBDSSBWRklPIGJ1cyBkcml2ZXIgd2hpY2ggY2FuIGNvbm5lY3QgYW55XG4gIDE5Olx0XHQgIFBDSSBkZXZpY2UgdG8gdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAyMDpcdFxuICAyMTpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMjI6XHRcbiAgMjM6XHRpZiBWRklPX1BDSVxuICAyNDpcdGNvbmZpZyBWRklPX1BDSV9WR0FcbiAgMjU6XHRcdGJvb2wgXCYjMzQ7R2VuZXJpYyBWRklPIFBDSSBzdXBwb3J0IGZvciBWR0EgZGV2aWNlc1wmIzM0O1xuICAyNjpcdFx0ZGVwZW5kcyBvbiBYODYgXHUwMDI2XHUwMDI2IFZHQV9BUkJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgU3VwcG9ydCBmb3IgVkdBIGV4dGVuc2lvbiB0byBWRklPIFBDSS4gIFRoaXMgZXhwb3NlcyBhbiBhZGRpdGlvbmFsXG4gIDI5Olx0XHQgIHJlZ2lvbiBvbiBWR0EgZGV2aWNlcyBmb3IgYWNjZXNzaW5nIGxlZ2FjeSBWR0EgYWRkcmVzc2VzIHVzZWQgYnlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMzOAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIFZGSU8gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaW1tZWRpYXRlbHkgZGlyZWN0ZWQgdG93YXJkcyBgVkZJT19QQ0lgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gSSBleHBlY3QgdG8gYmUgaW52b2x2ZWQgaW4gdGhlIHZpcnR1YWxpemF0aW9uIHByb2Nlc3MuIFRoYXQmIzM5O3MgdGhlIG1vZHVsZSBJIGFsd2F5cyBzdGFydCB3aXRoIHdoZW4gY29uZmlndXJpbmcgYSBQQ0kgcGFzc3Rocm91Z2guCgpCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBpbmNsdWRlIGBWRklPYCBhcyB3ZWxsLiBPZiBjb3Vyc2UhIEl0JiMzOTtzIHRoZSBvdmVyYXJjaGluZyBmcmFtZXdvcmssIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggYFZGSU9fUENJYCBzaXRzLiBUaGUgUENJLXNwZWNpZmljIHBhcnQgaXMgaW1wb3J0YW50IHRvIG1hbmFnZSB0aGUgcGFzc3Rocm91Z2ggb2YgdGhlIHBoeXNpY2FsIGRldmljZSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLCBidXQgSSBjYW4mIzM5O3QgZm9yZ2V0IHRoZSBiYXNlIGBWRklPYCBtb2R1bGUgdGhhdCBwcm92aWRlcyB0aGUgY29yZSBkZXZpY2UgYXNzaWdubWVudCBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSBib3RoIG9idmlvdXNseSBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPJCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy92ZmlvL0tjb25maWc6MjptZW51Y29uZmlnIFZGSU9cbmRyaXZlcnMvdmZpby9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MzgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOgoKKipWRklPIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIHNvbGlkIGhhbmRsZSBvbiB0aGUgYFZGSU9gIGRlcGVuZGVuY2llcy4gQmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBhbnkgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb3IgY29uZmlndXJhdGlvbiwgaXQmIzM5O3MgY3JpdGljYWwgdG8gZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW4gcGxhY2UuIFRoaXMgbWVhbnMgc3lzdGVtYXRpY2FsbHkgaWRlbnRpZnlpbmcgYW5kIHZlcmlmeWluZyB0aGUgdW5kZXJseWluZyBsaWJyYXJpZXMsIGtlcm5lbCBtb2R1bGVzLCBhbmQgYW55IG90aGVyIHJlcXVpcmVkIGNvbXBvbmVudHMgdGhhdCBgVkZJT2AgcmVsaWVzIHVwb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQuIEkgd2lsbCBhcHByb2FjaCB0aGlzIHN5c3RlbWF0aWNhbGx5LCBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbWlzc2luZyBwaWVjZXMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSSB3YW50IGEgY2xlYW4sIHdlbGwtdW5kZXJzdG9vZCBmb3VuZGF0aW9uIGJlZm9yZSBwcm9jZWVkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBWRklPXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgSU9NTVVfQVBJXG4gICA1Olx0XHRkZXBlbmRzIG9uIElPTU1VRkQgfHwgIUlPTU1VRkRcbiAgIDY6XHRcdHNlbGVjdCBJTlRFUlZBTF9UUkVFXG4gICA3Olx0XHRzZWxlY3QgVkZJT19HUk9VUCBpZiBTUEFQUl9UQ0VfSU9NTVUgfHwgSU9NTVVGRD1uXG4gICA4Olx0XHRzZWxlY3QgVkZJT19ERVZJQ0VfQ0RFViBpZiAhVkZJT19HUk9VUFxuICAgOTpcdFx0c2VsZWN0IFZGSU9fQ09OVEFJTkVSIGlmIElPTU1VRkQ9blxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBWRklPIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBzZWN1cmUgdXNlcnNwYWNlIGRldmljZSBkcml2ZXJzLlxuICAxMjpcdFx0ICBTZWUgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8ucnN0IGZvciBtb3JlIGRldGFpbHMuXG4gIDEzOlx0XG4gIDE0Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAxNTpcdFxuICAxNjpcdGlmIFZGSU9cbiAgMTc6XHRjb25maWcgVkZJT19ERVZJQ0VfQ0RFVlxuICAxODpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjZGV2IC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIElPTU1VRkQgXHUwMDI2XHUwMDI2ICFTUEFQUl9UQ0VfSU9NTVVcbiAgMjA6XHRcdGRlZmF1bHQgIVZGSU9fR1JPVVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8vUENJIFJlc2V0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYFZGSU9gIGFuZCBgVkZJT19QQ0lgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcywgd2hhdCBhYm91dCB0aGUgZm9jdXMgc3ltYm9scyBoZXJlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlc2V0IGxvZ2ljIGlzIHN0cnVjdHVyZWQuIFJpZ2h0LCBzbyB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBJdCBhbHNvIGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnM6IGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmVgIGFuZCBgdmZpb19wY2lfY29yZV9yZXNldF9kb25lYC4gTXkgZ3V0IHRlbGxzIG1lIEkgc2hvdWxkIGNoZWNrIGlmIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgaXMgc3RhdGljLiBZZXMsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBOb3cgaG9sZCBvbiwgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBpcyBgdmZpb19wY2lfY29yZV9pb2N0bGAsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHdpdGhpbiB0aGUgbGFyZ2VyIGlvY3RsIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19wY2lfY29yZV9pb2N0bCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU4Ni1cdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODc6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg4LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gaGlzaV9hY2NfdmZpb19pb2N0bF9nZXRfcmVnaW9uLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNTg5Olx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTkwLVx0LnJlYWQgPSBoaXNpX2FjY192ZmlvX3BjaV9yZWFkLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTYwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA3LVx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNjA4Olx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwOS1cdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fcGNpX2lvY3RsX2dldF9yZWdpb25faW5mbyxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTYxMDpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYxMS1cdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zMzU9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaXNtX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0MC1cdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozNDE6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0Mi1cdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IGlzbV92ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6MzQzOlx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0NC1cdC5yZWFkID0gaXNtX3ZmaW9fcGNpX3JlYWQsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM5MS1cdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTM5MjpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTMtXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzOTQ6XHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTUtXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz01ODk9c3RhdGljIGxvbmcgbnZncmFjZV9ncHVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTk4LVx0ZGVmYXVsdDpcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjU5OTpcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfaW9jdGwoY29yZV92ZGV2LCBjbWQsIGFyZyk7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy02MDAtXHR9XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzItXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSBudmdyYWNlX2dwdV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDczOlx0LmRldmljZV9mZWF0dXJlXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzQtXHQucmVhZFx0XHQ9IG52Z3JhY2VfZ3B1X3JlYWQsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA5MD1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5NS1cdC5jbG9zZV9kZXZpY2VcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDk2Olx0LmlvY3RsXHRcdD0gdmZpb19wY2lfY29yZV9pb2N0bCxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwOTctXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDk4Olx0LmRldmljZV9mZWF0dXJlXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwOTktXHQucmVhZFx0XHQ9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBwZHNfdmZpb19vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTYtXHQuY2xvc2VfZGV2aWNlID0gcGRzX3ZmaW9fY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYzoxOTc6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTgtXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjE5OTpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMjAwLVx0LnJlYWQgPSB2ZmlvX3BjaV9jb3JlX3JlYWQsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTYwND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBxYXRfdmZfcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjA5LVx0LmNsb3NlX2RldmljZSA9IHFhdF92Zl9wY2lfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYxMDpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjExLVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xNDk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTQtXHQuY2xvc2VfZGV2aWNlXHQ9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NTpcdC5pb2N0bFx0XHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTU2LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NzpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTgtXHQucmVhZFx0XHQ9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNTMzPXN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfaW9ldmVudGZkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTU3LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTU1ODpsb25nIHZmaW9fcGNpX2NvcmVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHVuc2lnbmVkIGludCBjbWQsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTU5LVx0XHRcdCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTgzLX1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1ODQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9pb2N0bCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTg1LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTU4Nj1zdGF0aWMgaW50IHZmaW9fcGNpX2NvcmVfZmVhdHVyZV90b2tlbihzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTYxMi1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE2MTM6aW50IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSwgdTMyIGZsYWdzLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTYxNC1cdFx0XHRcdHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNjM0LX1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE2MzU6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE2MzYtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtODktXHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo5MDpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTEtXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6OTI6XHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTMtXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX3RyYW5fbG1fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTEtXHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMTI6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExMy1cdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZpcnRpb3ZmX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTE0Olx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExNS1cdC5yZWFkID0gdmlydGlvdmZfcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTMzLVx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzNDpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTM1LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzNjpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzctXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyNy1cdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1Mjg6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI5LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6NTMwOlx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTMxLVx0LnJlYWQgPSB2ZmlvX3BjaV9jb3JlX3JlYWQsXG4tLVxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MTcyPWludCB2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0xNzMtXHRcdFx0XHQgIGludCBucl92aXJ0Zm4pO1xuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg6MTc0OmxvbmcgdmZpb19wY2lfY29yZV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgdW5zaWduZWQgaW50IGNtZCxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3NS1cdFx0dW5zaWduZWQgbG9uZyBhcmcpO1xuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg6MTc2OmludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3Ny1cdFx0XHRcdHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDc1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcyBwcmVzZW50ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBWRklPIFBDSSBDb3JlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBjZW50ZXJlZCBhcm91bmQgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGlvY3RsIGhhbmRsZXIsIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBpbnRlcmFjdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgSSYjMzk7bGwgZGVmaW5pdGVseSBsaXN0IHRoYXQgYXMgdGhlIGZvY3VzIHN5bWJvbCBmb3IgdGhlIHBhdGNoLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmVgIGFuZCBgdmZpb19wY2lfY29yZV9yZXNldF9kb25lYCB0byBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgLiBUaGVzZSByZXNldCBmdW5jdGlvbnMgYXJlIHN0YXRpYy4gVGhlIFBDSSBjb3JlIGRpcmVjdGx5IGNhbGxzIHRob3NlLCBzbyBpdCBpcyBhbiBpbnRlcmVzdGluZyBwb2ludCBvZiBkaXNjdXNzaW9uLCBidXQgc3RpbGwsIGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBpcyB0aGUgbWFpbiBmb2N1cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBjbGVhcmx5IG5vdGUgd2hlcmUgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGZyb20uIEkgc2F3IFNSSU9WIGNvbmZpZ3VyYXRpb24gbWVudGlvbmVkIGJ1dCBpdCYjMzk7cyBqdXN0IGFkamFjZW50IHRvIHRob3NlIG5ldyByZXNldCBob29rcyBpbiB0aGUgcGF0Y2gsIHNvIHRoZSBTUklPViByb3V0aW5lIGl0c2VsZiBpc24mIzM5O3QgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQsIGl0IGlzIGp1c3QgaW4gdGhlIG5laWdoYm9yaG9vZC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdHVyZSwganVzdCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zOTU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlzbV92ZmlvX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM5OS1cdC5yZW1vdmUgPSBpc21fdmZpb19wY2lfcmVtb3ZlLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjQwMDpcdC5lcnJfaGFuZGxlciA9IFx1MDAyNnZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTQwMS1cdC5kcml2ZXJfbWFuYWdlZF9kbWEgPSB0cnVlLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0yMjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHZmaW9fcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMjMxLVx0LnNyaW92X2NvbmZpZ3VyZVx0PSB2ZmlvX3BjaV9zcmlvdl9jb25maWd1cmUsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MjMyOlx0LmVycl9oYW5kbGVyXHRcdD0gXHUwMDI2dmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMjMzLVx0LmRyaXZlcl9tYW5hZ2VkX2RtYVx0PSB0cnVlLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI0MzU9c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0NDUtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDQ2OmNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMgPSB7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDQ3LVx0LmVycm9yX2RldGVjdGVkID0gdmZpb19wY2lfY29yZV9hZXJfZXJyX2RldGVjdGVkLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0NTAtfTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0NTE6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjQ1Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaD0xNzA9dm9pZCB2ZmlvX3BjaV9jb3JlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaDoxNzE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnM7XG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0xNzItaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MjAKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogNTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWRklPIFBDSSBSZXNldCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmaW5kIGEgZ29vZCBlbnRyeSBwb2ludCBzeW1ib2wuIEkgc3RhcnRlZCBieSBsb29raW5nIGF0IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBhcyBhIHBvdGVudGlhbCBmb2N1cy4gSSBjb25zaWRlcmVkIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIGJ1dCB0aGF0JiMzOTtzIGEgc3RydWN0LCBub3QgYSBmdW5jdGlvbi4gVGhlIGFjdHVhbCByZXNldCBmdW5jdGlvbnMsIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmVgIGFuZCBgdmZpb19wY2lfY29yZV9yZXNldF9kb25lYCwgYXJlIHN0YXRpYywgc28gdGhleSYjMzk7cmUgbm90IGdvaW5nIHRvIGJlIHZpc2libGUgc3ltYm9scyBkaXJlY3RseS4gVGhlbiBJIGZvdW5kIHRoYXQgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIGlzIGV4cG9ydGVkLCBhbmQgdGhlcmVmb3JlLCB2aXNpYmxlLiBBbHNvLCBJIHJlYWxpemVkIHRoYXQgYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YCBhbmQgYHZmaW9fcGNpX2lvY3RsX3BjaV9ob3RfcmVzZXRgIGFyZSBzdGF0aWMuIFRoZXJlZm9yZSwgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludC4KCkkgY2hlY2tlZCB0byBzZWUgaWYgYW55IG90aGVyIGV4cG9ydGVkIGZ1bmN0aW9ucyBoYWQgYmVlbiBtb2RpZmllZCwgYnV0IG5vLCBpdCBzZWVtcyBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgdGhlIG1haW4gb25lIGFuZCBjYWxscyBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldGAuIFNvLCBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgZGVmaW5pdGVseSB0aGUgbWFpbiBmb2N1cy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGtlcm5lbCBjb25maWdzLiBJIGNvbmZpcm1lZCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgYXJlIGltcG9ydGFudC4gSSBjaGVja2VkIHRvIHNlZSBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciBjb25maWdzLCBhbmQgZm91bmQgYFZGSU9fUENJX0NPUkVgIGlzIHNlbGVjdGVkIGJ5IGBWRklPX1BDSWAuIFNvLCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgYWxvbmUgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBjb2RlLgoKU3VtbWFyaXppbmcgbXkgZmluZGluZ3MsIHRoaXMgcGF0Y2ggaXMgKndvcnRoIGZ1enppbmcqIGJlY2F1c2UgaXQgdG91Y2hlcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zLCBib3RoIHJlZ3VsYXIgZGV2aWNlIHJlc2V0cyBhbmQgaG90IHJlc2V0cy4gVGhlc2UgcmVzZXRzIGFyZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB2ZmlvLXBjaSB2aWEgdGhlIGBWRklPX0RFVklDRV9SRVNFVGAgYW5kIGBWRklPX0RFVklDRV9QQ0lfSE9UX1JFU0VUYCBpb2N0bHMuIFRoZSBtYWluIGZvY3VzIHN5bWJvbCBmb3IgZnV6emluZyBpcyBkZWZpbml0ZWx5IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYC4gQXMgZm9yIGVuYWJsZSBjb25maWdzLCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgd2lsbCBiZSBlbm91Z2guIEkgZGlkIG5vdGUgdGhhdCBgVkZJT2AgZGVwZW5kcyBvbiBgSU9NTVVGRGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBpdCYjMzk7cyBnb29kIHRvIGhhdmUgaXQsIGJ1dCBub3Qgc3RyaWN0bHkgcmVxdWlyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTBiYjFlNzBjMjA1MzQyZDUzMTcyNTRhNjc4NTYyNDU1NzUxYzRmNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCmluZGV4IGExMTNjNTU4NDVlMTAuLmU0NmIwYjFkOGE1OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCkBAIC0xMzM0LDEyICYjNDM7MTMzNCwxNCBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2lvY3RsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwKIAkgKi8KIAl2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTsKIAotCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTsKLQlyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtJmd0O3BkZXYpOwotCWlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKQotCQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpOwomIzQzOwkvKgomIzQzOwkgKiBEcm9wIHRoZSBsb2NrIGJlZm9yZSBlbnRlcmluZyB0aGUgUENJIGNvcmUuCiYjNDM7CSAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLgomIzQzOwkgKi8KIAl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKIAomIzQzOwlyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtJmd0O3BkZXYpOwomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTI0MTgsOCAmIzQzOzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKTsKIAomIzQzO3N0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YSgmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CiYjNDM7CWlmICh2ZGV2KSB7CiYjNDM7CQlkb3duX3dyaXRlKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spOwomIzQzOwkJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiYjNDM7CQl2ZmlvX3BjaV96YXBfYmFycyh2ZGV2KTsKJiM0MzsJCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwomIzQzOwlpZiAodmRldikgewomIzQzOwkJaWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpCiYjNDM7CQkJdmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTsKJiM0MzsJCXVwX3dyaXRlKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spOwomIzQzOwl9CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHsKIAkuZXJyb3JfZGV0ZWN0ZWQgPSB2ZmlvX3BjaV9jb3JlX2Flcl9lcnJfZGV0ZWN0ZWQsCiYjNDM7CS5yZXNldF9wcmVwYXJlID0gdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlLAomIzQzOwkucmVzZXRfZG9uZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZSwKIH07CiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyk7CiAKQEAgLTI1NjEsNTUgJiM0MzsyNTg4LDUyIEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQoc3RydWN0IHZmaW9fZGV2aWNlX3NldCAqZGV2X3NldCwKIAogCQlpZiAoIW93bmVkKSB7CiAJCQlyZXQgPSAtRUlOVkFMOwotCQkJYnJlYWs7CiYjNDM7CQkJZ290byBlcnJfb3V0OwogCQl9CiYjNDM7CX0KIAomIzQzOwkvKiBaYXAsIGFuZCBzZXQgcG93ZXIgc3RhdGUgKi8KJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkgewogCQkvKgotCQkgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UgYW5kIHphcCBCQVIKLQkJICogbWFwcGluZ3MgdG8gcHJldmVudCB0aGUgdXNlciBhY2Nlc3NpbmcgdGhlIGRldmljZSB3aGlsZSBpbgotCQkgKiByZXNldC4gIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jaywKJiM0MzsJCSAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSwgemFwIEJBUgomIzQzOwkJICogbWFwcGluZ3MsIGFuZCByZXN0b3JlIHBvd2VyIHN0YXRlIGJlZm9yZSByZXNldC4KJiM0MzsJCSAqIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jaywKIAkJICogcnVuYXdheSBhbmQgdW53aW5kIGlmIHdlIGhpdCBjb250ZW50aW9uLgogCQkgKi8KIAkJaWYgKCFkb3duX3dyaXRlX3RyeWxvY2soJmFtcDt2ZGV2LSZndDttZW1vcnlfbG9jaykpIHsKIAkJCXJldCA9IC1FQlVTWTsKLQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCS8qCiYjNDM7CQkJICogV2UgZmFpbGVkIHRvIGxvY2sgVEhJUyBkZXZpY2UuIFdlIG11c3Qgc3RlcCBiYWNrIG9uZQomIzQzOwkJCSAqIGRldmljZSBzbyBlcnJfdW5kbyBvbmx5IHVubG9ja3MgZGV2aWNlcyB0aGF0IHN1Y2NlZWRlZC4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAoIWxpc3RfZW50cnlfaXNfaGVhZCh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHsKJiM0MzsJCQkJdmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7CiYjNDM7CQkJCWdvdG8gZXJyX3VuZG87CiYjNDM7CQkJfQomIzQzOwkJCWdvdG8gZXJyX291dDsKIAkJfQogCi0JCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTsKIAkJdmZpb19wY2lfemFwX2JhcnModmRldik7CiYjNDM7CQl2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTsKIAl9CiAKLQlpZiAoIWxpc3RfZW50cnlfaXNfaGVhZCh2ZGV2LAotCQkJCSZhbXA7ZGV2X3NldC0mZ3Q7ZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSkgewotCQl2ZGV2ID0gbGlzdF9wcmV2X2VudHJ5KHZkZXYsIHZkZXYuZGV2X3NldF9saXN0KTsKLQkJZ290byBlcnJfdW5kbzsKLQl9Ci0KLQkvKgotCSAqIFRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCByZXNldCBhbGwgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy4KLQkgKiBUaGUgcG93ZXIgc3RhdGUgY2FuIGJlIG5vbi1EMCBmb3Igc29tZSBvZiB0aGUgZGV2aWNlcyBpbiB0aGUgYnVzLgotCSAqIEZvciB0aGVzZSBkZXZpY2VzLCB0aGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgaW50ZXJuYWxseSBzZXQKLQkgKiB0aGUgcG93ZXIgc3RhdGUgdG8gRDAgd2l0aG91dCB2ZmlvIGRyaXZlciBpbnZvbHZlbWVudC4KLQkgKiBGb3IgdGhlIGRldmljZXMgd2hpY2ggaGF2ZSBOb1NvZnRSc3QtLCB0aGUgcmVzZXQgZnVuY3Rpb24gY2FuCi0JICogY2F1c2UgdGhlIFBDSSBjb25maWcgc3BhY2UgcmVzZXQgd2l0aG91dCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsCi0JICogc3RhdGUgKHNhdmVkIGxvY2FsbHkgaW4gJiMzOTt2ZGV2LSZndDtwbV9zYXZlJiMzOTspLgotCSAqLwomIzQzOwkvKiBEcm9wIGxvY2tzIGJlZm9yZSBjcm9zc2luZyBpbnRvIFBDSSBjb3JlICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkKLQkJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiYjNDM7CQl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKIAomIzQzOwkvKiBQQ0kgY29yZSBoYW5kbGVzIHRoZSByZXNldCBhbmQgY2FsbHMgLnJlc2V0IGhvb2tzICovCiAJcmV0ID0gcGNpX3Jlc2V0X2J1cyhwZGV2KTsKIAotCXZkZXYgPSBsaXN0X2xhc3RfZW50cnkoJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwKLQkJCSAgICAgICBzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UsIHZkZXYuZGV2X3NldF9saXN0KTsKJiM0MzsJZ290byBlcnJfb3V0OwogCiBlcnJfdW5kbzoKJiM0MzsJLyogVW53aW5kIGxvY2tzIGNsZWFubHkgZm9yIGRldmljZXMgd2Ugc3VjY2Vzc2Z1bGx5IGxvY2tlZCAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsICZhbXA7ZGV2X3NldC0mZ3Q7ZGV2aWNlX2xpc3QsCi0JCQkJCSB2ZGV2LmRldl9zZXRfbGlzdCkgewotCQlpZiAodmRldi0mZ3Q7dmRldi5vcGVuX2NvdW50ICZhbXA7JmFtcDsgX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSkKLQkJCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7CiYjNDM7CQkJCQkgdmRldi5kZXZfc2V0X2xpc3QpCiAJCXVwX3dyaXRlKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spOwotCX0KIAomIzQzO2Vycl9vdXQ6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkKIAkJcG1fcnVudGltZV9wdXQoJmFtcDt2ZGV2LSZndDtwZGV2LSZndDtkZXYpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ0CgkJCQkJCQlvdXRwdXQ6IDE4NQoJCQkJCQkJdGhvdWdodHM6IDk0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8gUENJIExvY2tpbmcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgLiBJdCYjMzk7cyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCB0aGUgbG9ja2luZyBhcm91bmQgUENJIHJlc2V0IG9wZXJhdGlvbnMg4oCTIHNwZWNpZmljYWxseSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBJdCYjMzk7cyBhIHByZXR0eSB0YXJnZXRlZCBjaGFuZ2UsIHJlYWxseSBkcmlsbGluZyBkb3duIG9uIHRoZSBzeW5jaHJvbml6YXRpb24uCgpNeSBpbW1lZGlhdGUgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgYSAqZ29vZCogdGhpbmcuIFRoZXkmIzM5O3JlIGFkZGluZyBgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlYCBhbmQgYHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZWAgaG9va3MgdG8gdGhlIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIHdoaWNoIGlzIGEgc21hcnQgbW92ZS4gVGhleSYjMzk7cmUgY2xlYXJseSB0cnlpbmcgdG8gYXZvaWQgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrIG9yZGVyIHJldmVyc2FscyBkdXJpbmcgUENJIHJlc2V0IHNlcXVlbmNlcy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIGhvdyB0aGUgY29kZSB3YXMgbWFuYWdpbmcgYHZkZXYtJmd0O21lbW9yeV9sb2NrYCDigJMgc3BlY2lmaWNhbGx5IGBkb3duX3dyaXRlYCBhbmQgYHVwX3dyaXRlYCBhcm91bmQgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIGludm9sdmluZyBwb3dlciBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgRE1BIGJ1ZmZlciBtYW5hZ2VtZW50LgoKTG9va2luZyBjbG9zZWx5IGF0IHRoZSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGRpZmYsIHRoZSBrZXkgY2hhbmdlIGlzIGRyb3BwaW5nIHRoZSBsb2NrIChgdXBfd3JpdGVgKSBiZWZvcmUgY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdpdGggdGhlIFBDSSBjb3JlIHJlLWFjcXVpcmluZyBpdCB2aWEgdGhlIGAucmVzZXRfcHJlcGFyZWAgaG9vay4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3RyYXRlZ3kgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGZvciBhdm9pZGluZyBsb2NrIGNvbnRlbnRpb24gd2hlbiBkZWFsaW5nIHdpdGggc2hhcmVkIHJlc291cmNlcyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuIEFuZCBmcm9tIHdoYXQgSSBzZWUsIHdlIGVuc3VyZSB0aGF0IHdlIHJlLWFjcXVpcmUgaXQgbGF0ZXIuIFRoZSBgLnJlc2V0X3ByZXBhcmVgIGFuZCBgLnJlc2V0X2RvbmVgIGhvb2tzIGhhbmRsZSB0aGUgbmVjZXNzYXJ5IHN0YXRlIHRyYW5zaXRpb25zIGFuZCBETUEgYnVmZmVyIG1vdmVtZW50IHdpdGhpbiB0aGUgcHJvdGVjdGVkIGNyaXRpY2FsIHNlY3Rpb24uCgpUaGUgY29kZSBtb2RpZmljYXRpb25zIGZvciB0aGUgdHJ5X2xvY2sgYXJlIGludGVyZXN0aW5nLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIGhhbmRsaW5nIGVycl91bmRvIGFuZCBhdm9pZGluZyB1bmxvY2tpbmcgZGV2aWNlcyB3ZSBuZXZlciBsb2NrZWQgaW4gdGhlIGZpcnN0IHBsYWNlLCBtYWtlcyBzZW5zZSBpbiBhbiBhdG9taWMgY29udGV4dC4KCkNydWNpYWxseSwgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gYW55IGRhdGEgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBhbGxvY2F0aW9ucywgYW5kICphYnNvbHV0ZWx5IG5vKiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIEtBU0FOL0xPQ0tERVAgYXJlIHRoZSBtYWluIHRvb2xzIHRoYXQgd291bGQgcGljayB1cCBhbnkgbGluZ2VyaW5nIGlzc3Vlcy4gIEtNU0FOIGlzbiYjMzk7dCByZWxldmFudCBoZXJlIHNpbmNlIGl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYSBsb2NraW5nIGlzc3VlLCBhbmQgdGhvc2UgYXJlIGNhdWdodCBieSBLQVNBTi4KClllYWgsIGl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkLCB3ZWxsLWNvbnNpZGVyZWQgbG9ja2luZyBmaXguCkkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgZGVhZGxvY2suCkkmIzM5O2xsIGNhbGwgaXQgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NDkuODczMDg2OTg0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ0OTU0OTc4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2lvY3RsXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyBpbiB0aGUgVkZJTyBQQ0kgZHJpdmVyLiBJdCBkcm9wcyBsb2NrcyBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSBQQ0kgY29yZSBhbmQgcmUtYWNxdWlyZXMgdGhlbSB2aWEgbmV3IGAucmVzZXRfcHJlcGFyZWAgYW5kIGAucmVzZXRfZG9uZWAgaG9va3MgdG8gcHJldmVudCBkZWFkbG9ja3MuIEl0IGFsc28gZml4ZXMgbG9jayB1bndpbmRpbmcgaW4gYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uIGFuZCBkZXZpY2Ugc3RhdGUsIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIGRlYWRsb2NrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0FTQU4sIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gdW5uZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyAoYm90aCBzaW5nbGUgZGV2aWNlIHJlc2V0IGFuZCBob3QgcmVzZXQpLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVkZJT19ERVZJQ0VfUkVTRVQgYW5kIFZGSU9fREVWSUNFX1BDSV9IT1RfUkVTRVQgaW9jdGxzLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIG9uIHZpcnR1YWwgUENJIGRldmljZXMgYm91bmQgdG8gdGhlIHZmaW8tcGNpIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NDkuODczMDkyMjY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI1MzA1OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMGJiMWU3MGMyMDUzNDJkNTMxNzI1NGE2Nzg1NjI0NTU3NTFjNGY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbmluZGV4IGExMTNjNTU4NDVlMTAuLmU0NmIwYjFkOGE1OTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbkBAIC0xMzM0LDEyICsxMzM0LDE0IEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcmVzZXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbiBcXHQgKi9cXG4gXFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XFxuIFxcbi1cXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XFxuLVxcdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cXHUwMDNlcGRldik7XFxuLVxcdGlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKVxcbi1cXHRcXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xcbitcXHQvKlxcbitcXHQgKiBEcm9wIHRoZSBsb2NrIGJlZm9yZSBlbnRlcmluZyB0aGUgUENJIGNvcmUuXFxuK1xcdCAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLlxcbitcXHQgKi9cXG4gXFx0dXBfd3JpdGUoXFx1MDAyNnZkZXYtXFx1MDAzZW1lbW9yeV9sb2NrKTtcXG4gXFxuK1xcdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cXHUwMDNlcGRldik7XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yNDE4LDggKzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZSk7XFxuIFxcbitzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXG4rXFx0aWYgKHZkZXYpIHtcXG4rXFx0XFx0ZG93bl93cml0ZShcXHUwMDI2dmRldi1cXHUwMDNlbWVtb3J5X2xvY2spO1xcbitcXHRcXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcXG4rXFx0XFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XFxuK1xcdFxcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXG4rXFx0aWYgKHZkZXYpIHtcXG4rXFx0XFx0aWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXFxuK1xcdFxcdFxcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7XFxuK1xcdFxcdHVwX3dyaXRlKFxcdTAwMjZ2ZGV2LVxcdTAwM2VtZW1vcnlfbG9jayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcXG4gXFx0LmVycm9yX2RldGVjdGVkID0gdmZpb19wY2lfY29yZV9hZXJfZXJyX2RldGVjdGVkLFxcbitcXHQucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSxcXG4rXFx0LnJlc2V0X2RvbmUgPSB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUsXFxuIH07XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzKTtcXG4gXFxuQEAgLTI1NjEsNTUgKzI1ODgsNTIgQEAgc3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxcbiBcXG4gXFx0XFx0aWYgKCFvd25lZCkge1xcbiBcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbiBcXHRcXHR9XFxuK1xcdH1cXG4gXFxuK1xcdC8qIFphcCwgYW5kIHNldCBwb3dlciBzdGF0ZSAqL1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFxcdTAwMjZkZXZfc2V0LVxcdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpIHtcXG4gXFx0XFx0LypcXG4tXFx0XFx0ICogVGFrZSB0aGUgbWVtb3J5IHdyaXRlIGxvY2sgZm9yIGVhY2ggZGV2aWNlIGFuZCB6YXAgQkFSXFxuLVxcdFxcdCAqIG1hcHBpbmdzIHRvIHByZXZlbnQgdGhlIHVzZXIgYWNjZXNzaW5nIHRoZSBkZXZpY2Ugd2hpbGUgaW5cXG4tXFx0XFx0ICogcmVzZXQuICBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssXFxuK1xcdFxcdCAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSwgemFwIEJBUlxcbitcXHRcXHQgKiBtYXBwaW5ncywgYW5kIHJlc3RvcmUgcG93ZXIgc3RhdGUgYmVmb3JlIHJlc2V0LlxcbitcXHRcXHQgKiBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssXFxuIFxcdFxcdCAqIHJ1bmF3YXkgYW5kIHVud2luZCBpZiB3ZSBoaXQgY29udGVudGlvbi5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFxcdTAwMjZ2ZGV2LVxcdTAwM2VtZW1vcnlfbG9jaykpIHtcXG4gXFx0XFx0XFx0cmV0ID0gLUVCVVNZO1xcbi1cXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdCAqIFdlIGZhaWxlZCB0byBsb2NrIFRISVMgZGV2aWNlLiBXZSBtdXN0IHN0ZXAgYmFjayBvbmVcXG4rXFx0XFx0XFx0ICogZGV2aWNlIHNvIGVycl91bmRvIG9ubHkgdW5sb2NrcyBkZXZpY2VzIHRoYXQgc3VjY2VlZGVkLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwgXFx1MDAyNmRldl9zZXQtXFx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcXG4rXFx0XFx0XFx0XFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyX3VuZG87XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XFxuIFxcdFxcdHZmaW9fcGNpX3phcF9iYXJzKHZkZXYpO1xcbitcXHRcXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldixcXG4tXFx0XFx0XFx0XFx0XFx1MDAyNmRldl9zZXQtXFx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcXG4tXFx0XFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XFxuLVxcdFxcdGdvdG8gZXJyX3VuZG87XFxuLVxcdH1cXG4tXFxuLVxcdC8qXFxuLVxcdCAqIFRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCByZXNldCBhbGwgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cXG4tXFx0ICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cXG4tXFx0ICogRm9yIHRoZXNlIGRldmljZXMsIHRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCBpbnRlcm5hbGx5IHNldFxcbi1cXHQgKiB0aGUgcG93ZXIgc3RhdGUgdG8gRDAgd2l0aG91dCB2ZmlvIGRyaXZlciBpbnZvbHZlbWVudC5cXG4tXFx0ICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhblxcbi1cXHQgKiBjYXVzZSB0aGUgUENJIGNvbmZpZyBzcGFjZSByZXNldCB3aXRob3V0IHJlc3RvcmluZyB0aGUgb3JpZ2luYWxcXG4tXFx0ICogc3RhdGUgKHNhdmVkIGxvY2FsbHkgaW4gJ3ZkZXYtXFx1MDAzZXBtX3NhdmUnKS5cXG4tXFx0ICovXFxuK1xcdC8qIERyb3AgbG9ja3MgYmVmb3JlIGNyb3NzaW5nIGludG8gUENJIGNvcmUgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcXHUwMDI2ZGV2X3NldC1cXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxcbi1cXHRcXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcXG4rXFx0XFx0dXBfd3JpdGUoXFx1MDAyNnZkZXYtXFx1MDAzZW1lbW9yeV9sb2NrKTtcXG4gXFxuK1xcdC8qIFBDSSBjb3JlIGhhbmRsZXMgdGhlIHJlc2V0IGFuZCBjYWxscyAucmVzZXQgaG9va3MgKi9cXG4gXFx0cmV0ID0gcGNpX3Jlc2V0X2J1cyhwZGV2KTtcXG4gXFxuLVxcdHZkZXYgPSBsaXN0X2xhc3RfZW50cnkoXFx1MDAyNmRldl9zZXQtXFx1MDAzZWRldmljZV9saXN0LFxcbi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2LmRldl9zZXRfbGlzdCk7XFxuK1xcdGdvdG8gZXJyX291dDtcXG4gXFxuIGVycl91bmRvOlxcbitcXHQvKiBVbndpbmQgbG9ja3MgY2xlYW5seSBmb3IgZGV2aWNlcyB3ZSBzdWNjZXNzZnVsbHkgbG9ja2VkICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsIFxcdTAwMjZkZXZfc2V0LVxcdTAwM2VkZXZpY2VfbGlzdCxcXG4tXFx0XFx0XFx0XFx0XFx0IHZkZXYuZGV2X3NldF9saXN0KSB7XFxuLVxcdFxcdGlmICh2ZGV2LVxcdTAwM2V2ZGV2Lm9wZW5fY291bnQgXFx1MDAyNlxcdTAwMjYgX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcXG4tXFx0XFx0XFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcXG4rXFx0XFx0XFx0XFx0XFx0IHZkZXYuZGV2X3NldF9saXN0KVxcbiBcXHRcXHR1cF93cml0ZShcXHUwMDI2dmRldi1cXHUwMDNlbWVtb3J5X2xvY2spO1xcbi1cXHR9XFxuIFxcbitlcnJfb3V0OlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFxcdTAwMjZkZXZfc2V0LVxcdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpXFxuIFxcdFxcdHBtX3J1bnRpbWVfcHV0KFxcdTAwMjZ2ZGV2LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NTAuMzE2NDAyMzIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTE4MDA1MjQ4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyAoYm90aCBzaW5nbGUgZGV2aWNlIHJlc2V0IGFuZCBob3QgcmVzZXQpLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVkZJT19ERVZJQ0VfUkVTRVQgYW5kIFZGSU9fREVWSUNFX1BDSV9IT1RfUkVTRVQgaW9jdGxzLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIG9uIHZpcnR1YWwgUENJIGRldmljZXMgYm91bmQgdG8gdGhlIHZmaW8tcGNpIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTBiYjFlNzBjMjA1MzQyZDUzMTcyNTRhNjc4NTYyNDU1NzUxYzRmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCBhMTEzYzU1ODQ1ZTEwLi5lNDZiMGIxZDhhNTk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtMTMzNCwxMiArMTMzNCwxNCBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2lvY3RsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdCAqL1xuIFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XG4gXG4tXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4tXHRyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtXHUwMDNlcGRldik7XG4tXHRpZiAoX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcbi1cdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbitcdC8qXG4rXHQgKiBEcm9wIHRoZSBsb2NrIGJlZm9yZSBlbnRlcmluZyB0aGUgUENJIGNvcmUuXG4rXHQgKiBUaGUgUENJIGNvcmUgd2lsbCByZS1hY3F1aXJlIGl0IHZpYSBvdXIgLnJlc2V0X3ByZXBhcmUgaG9vay5cbitcdCAqL1xuIFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4rXHRyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtXHUwMDNlcGRldik7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yNDE4LDggKzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUpO1xuIFxuK3N0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbit7XG4rXHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1xuK1x0aWYgKHZkZXYpIHtcbitcdFx0ZG93bl93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbitcdFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XG4rXHRcdHZmaW9fcGNpX3phcF9iYXJzKHZkZXYpO1xuK1x0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbit7XG4rXHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1xuK1x0aWYgKHZkZXYpIHtcbitcdFx0aWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4rXHRcdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbitcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4rXHR9XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMgPSB7XG4gXHQuZXJyb3JfZGV0ZWN0ZWQgPSB2ZmlvX3BjaV9jb3JlX2Flcl9lcnJfZGV0ZWN0ZWQsXG4rXHQucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSxcbitcdC5yZXNldF9kb25lID0gdmZpb19wY2lfY29yZV9yZXNldF9kb25lLFxuIH07XG4gRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMpO1xuIFxuQEAgLTI1NjEsNTUgKzI1ODgsNTIgQEAgc3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxuIFxuIFx0XHRpZiAoIW93bmVkKSB7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0XHRicmVhaztcbitcdFx0XHRnb3RvIGVycl9vdXQ7XG4gXHRcdH1cbitcdH1cbiBcbitcdC8qIFphcCwgYW5kIHNldCBwb3dlciBzdGF0ZSAqL1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuIFx0XHQvKlxuLVx0XHQgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UgYW5kIHphcCBCQVJcbi1cdFx0ICogbWFwcGluZ3MgdG8gcHJldmVudCB0aGUgdXNlciBhY2Nlc3NpbmcgdGhlIGRldmljZSB3aGlsZSBpblxuLVx0XHQgKiByZXNldC4gIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbitcdFx0ICogVGFrZSB0aGUgbWVtb3J5IHdyaXRlIGxvY2sgZm9yIGVhY2ggZGV2aWNlLCB6YXAgQkFSXG4rXHRcdCAqIG1hcHBpbmdzLCBhbmQgcmVzdG9yZSBwb3dlciBzdGF0ZSBiZWZvcmUgcmVzZXQuXG4rXHRcdCAqIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbiBcdFx0ICogcnVuYXdheSBhbmQgdW53aW5kIGlmIHdlIGhpdCBjb250ZW50aW9uLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFkb3duX3dyaXRlX3RyeWxvY2soXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jaykpIHtcbiBcdFx0XHRyZXQgPSAtRUJVU1k7XG4tXHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0LypcbitcdFx0XHQgKiBXZSBmYWlsZWQgdG8gbG9jayBUSElTIGRldmljZS4gV2UgbXVzdCBzdGVwIGJhY2sgb25lXG4rXHRcdFx0ICogZGV2aWNlIHNvIGVycl91bmRvIG9ubHkgdW5sb2NrcyBkZXZpY2VzIHRoYXQgc3VjY2VlZGVkLlxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSkge1xuK1x0XHRcdFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4rXHRcdFx0XHRnb3RvIGVycl91bmRvO1xuK1x0XHRcdH1cbitcdFx0XHRnb3RvIGVycl9vdXQ7XG4gXHRcdH1cbiBcbi1cdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIHRydWUpO1xuIFx0XHR2ZmlvX3BjaV96YXBfYmFycyh2ZGV2KTtcbitcdFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XG4gXHR9XG4gXG4tXHRpZiAoIWxpc3RfZW50cnlfaXNfaGVhZCh2ZGV2LFxuLVx0XHRcdFx0XHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpKSB7XG4tXHRcdHZkZXYgPSBsaXN0X3ByZXZfZW50cnkodmRldiwgdmRldi5kZXZfc2V0X2xpc3QpO1xuLVx0XHRnb3RvIGVycl91bmRvO1xuLVx0fVxuLVxuLVx0Lypcbi1cdCAqIFRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCByZXNldCBhbGwgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cbi1cdCAqIFRoZSBwb3dlciBzdGF0ZSBjYW4gYmUgbm9uLUQwIGZvciBzb21lIG9mIHRoZSBkZXZpY2VzIGluIHRoZSBidXMuXG4tXHQgKiBGb3IgdGhlc2UgZGV2aWNlcywgdGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIGludGVybmFsbHkgc2V0XG4tXHQgKiB0aGUgcG93ZXIgc3RhdGUgdG8gRDAgd2l0aG91dCB2ZmlvIGRyaXZlciBpbnZvbHZlbWVudC5cbi1cdCAqIEZvciB0aGUgZGV2aWNlcyB3aGljaCBoYXZlIE5vU29mdFJzdC0sIHRoZSByZXNldCBmdW5jdGlvbiBjYW5cbi1cdCAqIGNhdXNlIHRoZSBQQ0kgY29uZmlnIHNwYWNlIHJlc2V0IHdpdGhvdXQgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbFxuLVx0ICogc3RhdGUgKHNhdmVkIGxvY2FsbHkgaW4gJ3ZkZXYtXHUwMDNlcG1fc2F2ZScpLlxuLVx0ICovXG4rXHQvKiBEcm9wIGxvY2tzIGJlZm9yZSBjcm9zc2luZyBpbnRvIFBDSSBjb3JlICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxuLVx0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbitcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4rXHQvKiBQQ0kgY29yZSBoYW5kbGVzIHRoZSByZXNldCBhbmQgY2FsbHMgLnJlc2V0IGhvb2tzICovXG4gXHRyZXQgPSBwY2lfcmVzZXRfYnVzKHBkZXYpO1xuIFxuLVx0dmRldiA9IGxpc3RfbGFzdF9lbnRyeShcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LFxuLVx0XHRcdCAgICAgICBzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UsIHZkZXYuZGV2X3NldF9saXN0KTtcbitcdGdvdG8gZXJyX291dDtcbiBcbiBlcnJfdW5kbzpcbitcdC8qIFVud2luZCBsb2NrcyBjbGVhbmx5IGZvciBkZXZpY2VzIHdlIHN1Y2Nlc3NmdWxseSBsb2NrZWQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsXG4tXHRcdFx0XHRcdCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuLVx0XHRpZiAodmRldi1cdTAwM2V2ZGV2Lm9wZW5fY291bnQgXHUwMDI2XHUwMDI2IF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4tXHRcdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbitcdFx0XHRcdFx0IHZkZXYuZGV2X3NldF9saXN0KVxuIFx0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbi1cdH1cbiBcbitlcnJfb3V0OlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdClcbiBcdFx0cG1fcnVudGltZV9wdXQoXHUwMDI2dmRldi1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToxOTo1MC4zMTY0MDM3ODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Njk5OTg4MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZGSU8gUENJIFJlc2V0IFBhdGNoIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgbWVzc2luZyB3aXRoIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAsIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAsIGFuZCBpdCdzIGFkZGluZyBgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlYCBhbmQgYHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZWAgdG8gYHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiBoaXQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBZnRlciBhbGwsIFZGSU8gaXMgYWxsIGFib3V0IHBhc3NpbmcgUENJIGRldmljZXMgdGhyb3VnaCB0byB1c2Vyc3BhY2Ugb3IgVk1zLlxuXG5SaWdodCwgc28gY2FuIHdlIGZ1enogVkZJTyBQQ0kgaW5zaWRlIFFFTVU/IEkga25vdyB0aGVyZSBhcmUgdmlydHVhbCBQQ0kgZGV2aWNlcywgYW5kIHN5emthbGxlciBoYXMgc29tZSBWRklPIGRlc2NyaXB0aW9ucy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGNoZWNrIGlmIFZGSU8gUENJIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIuIElmIG5vdCwgY2FuIHdlIGVuYWJsZSBpdD8gSG9sZCBvbiwgdGhvdWdoLi4uIFZGSU8gUENJIG5lZWRzIGEgUENJIGRldmljZSB0byBsYXRjaCBvbnRvLCBkb2Vzbid0IGl0PyBPa2F5LCBzbyBzeXprYWxsZXIgKmNvdWxkKiB1c2UgdGhlIGB2ZmlvLXBjaWAgZHJpdmVyIHRvIGJpbmQgdG8gc29tZSBkdW1teSBvciB2aXJ0dWFsIFBDSSBkZXZpY2VzLiBMZXQncyBkaWcgaW50byB0aGF0LlxuXG5Ob3csIGxldCdzIGFsc28gY2hlY2sgaWYgYFZGSU9fUENJYCBpcyBnZW5lcmFsbHkgZW5hYmxlZCBpbiBzdGFuZGFyZCBrZXJuZWwgY29uZmlncy4gVGhhdCdzIGEgc2FuaXR5IGNoZWNrLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gZG8gc29tZSBjb2RlIGFyY2hhZW9sb2d5IGFuZCBodW50IGZvciBldmVyeSBzaW5nbGUgaW5zdGFuY2Ugb2YgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBhbmQgYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gR290dGEgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NTYuMDE2Mzk0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg4MjQ1NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX2lvY3RsX3Jlc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTEyODA9c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMzE1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjEzMTY6c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTMxNy1cXHRcXHRcXHRcXHR2b2lkIF9fdXNlciAqYXJnKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTU1OD1sb25nIHZmaW9fcGNpX2NvcmVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTc2LVxcdGNhc2UgVkZJT19ERVZJQ0VfUkVTRVQ6XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTU3NzpcXHRcXHRyZXR1cm4gdmZpb19wY2lfaW9jdGxfcmVzZXQodmRldiwgdWFyZyk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTU3OC1cXHRjYXNlIFZGSU9fREVWSUNFX1NFVF9JUlFTOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToxOTo1Ny43MDQ2NDcwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTU3NTcwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBWRklPLVBDSSByZXNldCBtZWNoYW5pc21zOlxuXG4qKlJlc2V0dGluZyB0aGUgVkZJTyBQQ0kgRGV2aWNlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhlcmUgYXJlIHR3byBrZXkgcGxhY2VzIHdoZXJlIHJlc2V0cyBhcmUgaW5pdGlhdGVkIGluIHRoZSBWRklPLVBDSSBkcml2ZXIuIEZpcnN0LCB0aGUgYFZGSU9fREVWSUNFX1JFU0VUYCBpb2N0bCBjYWxsIOKAkyB0aGF0J3MgdGhlIG9uZSB0cmlnZ2VyaW5nIHRoZSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHRoaXMgaXMgdGhlIG1haW4sIGdlbmVyYWwgcmVzZXQgcGF0aCB3ZSdyZSB1c2luZyBhdCB0aGF0IHBvaW50LiBJJ20gYXNzdW1pbmcgdGhpcyBtaWdodCBiZSB0aGUgaGlnaGVyLWxldmVsIHJlc2V0IHRoYXQgd2UncmUgdGFsa2luZyBhYm91dC5cblxuTm93LCB3ZSBhbHNvIGhhdmUgdGhpcyBvdGhlciBzY2VuYXJpbywgdHJpZ2dlcmVkIGJ5IGBWRklPX1BDSV9IT1RfUkVTRVRgLiBUaGF0IG9uZSBjYWxscyB0aGUgYHZmaW9fcGNpX2lvY3RsX3BjaV9ob3RfcmVzZXRgIGlvY3RsLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGEgY2FsbCB0byBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBTbyB0aGlzIGFwcGVhcnMgdG8gYmUgdGhlIG1lY2hhbmlzbSBmb3IgZGVhbGluZyB3aXRoIFwiaG90IHJlc2V0c1wiLiBUaGF0IG1lYW5zIHdlIGhhdmUgc29tZSBkaWZmZXJlbnQgY29kZSBwYXRoIHRoYXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGVzZS4gVGhhdCBjb3VsZCBiZSB3aGVyZSBteSBjb2RlIHdvdWxkIGRpZmZlcmVudGlhdGUgZm9yIHRoZSB0eXBlIG9mIHJlc2V0IG9yIGV2ZW4gdGhlIHR5cGUgb2YgZGV2aWNlLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBkcml2ZXIgaGFzIHNlcGFyYXRlLCBidXQgcmVsYXRlZCwgcm91dGluZXMgdG8gaGFuZGxlIHRoZXNlIGRpZmZlcmVudCByZXNldCB0eXBlcywgYm90aCBzdGVtbWluZyBmcm9tIHRoZSBpb2N0bCBsYXllci4gR29vZCwgdGhhdCdzIHdoYXQgSSB3b3VsZCBleHBlY3QgZm9yIGEgcm9idXN0IGRlc2lnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY0NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjAxLjQyMDQwODE5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMyMzUyMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI2NT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9kZXZfc2V0X3RyeV9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNjY6c3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI2Ny1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdmZpb19wY2lfZ3JvdXBfaW5mbyAqZ3JvdXBzLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTQyNT12ZmlvX3BjaV9pb2N0bF9wY2lfaG90X3Jlc2V0X2dyb3VwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNDkyLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE0OTM6XFx0cmV0ID0gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cXHUwMDNldmRldi5kZXZfc2V0LCBcXHUwMDI2aW5mbywgTlVMTCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTQ5NC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE1MDM9c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9wY2lfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1MjgtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTUyOTpcXHRyZXR1cm4gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cXHUwMDNldmRldi5kZXZfc2V0LCBOVUxMLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1MzAtXFx0XFx0XFx0XFx0XFx0ICB2ZmlvX2lvbW11ZmRfZGV2aWNlX2ljdHgoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI1MTE9c3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X3BtX3J1bnRpbWVfZ2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNTMxLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI1MzI6c3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1MzMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHZmaW9fcGNpX2dyb3VwX2luZm8gKmdyb3VwcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MDMuMjUyNzY3NjA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwOTEyNTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGSU8gUENJIFJlc2V0IExvY2sgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IG1ha2luZyBhIHNpZ25pZmljYW50IGFkanVzdG1lbnQgdG8gaG93IGxvY2tzIGFyZSBtYW5hZ2VkIGR1cmluZyB0aGUgcmVzZXQgcHJvY2VzcyB3aXRoaW4gdGhlIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZSBrZXkgY2hhbmdlIGlzIGRyb3BwaW5nIHRoZSBgdmRldi1cdTAwM2VtZW1vcnlfbG9ja2AgKmJlZm9yZSogY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdoaWNoIGlzIGEgZGVwYXJ0dXJlIGZyb20gdGhlIHByZXZpb3VzIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuIFRoZSBub3RlIG1lbnRpb25zIHRoYXQgdGhlIFBDSSBjb3JlIHdpbGwgcmVhY3F1aXJlIHRoZSBsb2NrIHRocm91Z2ggYSBgLnJlc2V0X3ByZXBhcmVgIGhvb2ssIGFuZCB0aGUgYWRkaXRpb24gb2YgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdCBjb25maXJtcyB0aGlzIG5ldyBpbnRlcmFjdGlvbiBwYXR0ZXJuIHdpdGggdGhlIFBDSSBjb3JlJ3MgcmVzZXQgbWVjaGFuaXNtLlxuXG5UaGlzIGNoYW5nZSBpcyBkZWZpbml0ZWx5IHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0LCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcuIEl0J3MgYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgVkZJTyBQQ0ksIGFuZCwgZ2l2ZW4gaXQncyBleHBvc2VkIHZpYSBhbiBpb2N0bCwgaXQncyBhY2Nlc3NpYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiBpdCBlZmZlY3RpdmVseT8gRm9ydHVuYXRlbHksIHllcywgdGhlIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGluIG9yZGVyIGFuZCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IFZGSU8gYW5kIGJpbmRpbmcgZGV2aWNlcyB0byB2ZmlvLXBjaSwgc28gd2Ugc2hvdWxkIGJlIGdvb2QgdG8gZ28uXG5cbkJlZm9yZSB3ZSBnZXQgc3RhcnRlZCwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIFZGSU9fUENJIEtjb25maWcgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MDguODYxODk1OTU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODczNDI5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NTpjb25maWcgVkZJT19QQ0lfQ09SRVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy02LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTEtXFx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTEzLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxNDpjb25maWcgVkZJT19QQ0lcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yMz1pZiBWRklPX1BDSVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjM0OmNvbmZpZyBWRklPX1BDSV9JR0RcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzUtXFx0Ym9vbCBcXFwiR2VuZXJpYyBWRklPIFBDSSBleHRlbnNpb25zIGZvciBJbnRlbCBncmFwaGljcyAoR1ZULWQpXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTQ1PWVuZGlmXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1ODpjb25maWcgVkZJT19QQ0lfRE1BQlVGXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU5LVxcdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcXHUwMDI2XFx1MDAyNiBQQ0lfUDJQRE1BIFxcdTAwMjZcXHUwMDI2IERNQV9TSEFSRURfQlVGRkVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjEwLjY0OTI0NzA4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3OTUxNjQ0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqVkZJT19QQ0kgRGVlcCBEaXZlKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIHdvcmtpbmcgd2l0aCBpcyBgVkZJT19QQ0lgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgbGV0J3MgZXN0YWJsaXNoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB0aWUgaW50byBgVkZJT19QQ0lgXCIuIEknbSBub3QganVzdCBnb2luZyB0byBibGluZGx5IGRpdmUgaW47IGEgdGhvcm91Z2ggY2hlY2sgb2Ygd2hhdCB0aGlzIHJlbGllcyBvbiBpcyBjcnVjaWFsIGZvciB0cm91Ymxlc2hvb3Rpbmcgb3IgbW9kaWZpY2F0aW9uIGxhdGVyLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGZpdHMgaW50byB0aGUgd2hvbGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODgzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MTMuNDQ0NDE0OTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEwOlxcdGNvbmZpZyBWRklPX1BDSV9JTlRYXFxuICAxMTpcXHRcXHRkZWZfYm9vbCB5IGlmICFTMzkwXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFZGSU9fUENJX0NPUkVcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZGSU9fUENJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXFxcIlxcbiAgMTY6XFx0XFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIGdlbmVyaWMgUENJIFZGSU8gYnVzIGRyaXZlciB3aGljaCBjYW4gY29ubmVjdCBhbnlcXG4gIDE5OlxcdFxcdCAgUENJIGRldmljZSB0byB0aGUgVkZJTyBmcmFtZXdvcmsuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0aWYgVkZJT19QQ0lcXG4gIDI0OlxcdGNvbmZpZyBWRklPX1BDSV9WR0FcXG4gIDI1OlxcdFxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBWR0FfQVJCXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFN1cHBvcnQgZm9yIFZHQSBleHRlbnNpb24gdG8gVkZJTyBQQ0kuICBUaGlzIGV4cG9zZXMgYW4gYWRkaXRpb25hbFxcbiAgMjk6XFx0XFx0ICByZWdpb24gb24gVkdBIGRldmljZXMgZm9yIGFjY2Vzc2luZyBsZWdhY3kgVkdBIGFkZHJlc3NlcyB1c2VkIGJ5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjEzLjQ0NDQ3ODUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODExNDExNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVjb2RpbmcgdGhlIFZGSU8gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGltbWVkaWF0ZWx5IGRpcmVjdGVkIHRvd2FyZHMgYFZGSU9fUENJYC4gVGhhdCdzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gSSBleHBlY3QgdG8gYmUgaW52b2x2ZWQgaW4gdGhlIHZpcnR1YWxpemF0aW9uIHByb2Nlc3MuIFRoYXQncyB0aGUgbW9kdWxlIEkgYWx3YXlzIHN0YXJ0IHdpdGggd2hlbiBjb25maWd1cmluZyBhIFBDSSBwYXNzdGhyb3VnaC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gaXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gaW5jbHVkZSBgVkZJT2AgYXMgd2VsbC4gT2YgY291cnNlISBJdCdzIHRoZSBvdmVyYXJjaGluZyBmcmFtZXdvcmssIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggYFZGSU9fUENJYCBzaXRzLiBUaGUgUENJLXNwZWNpZmljIHBhcnQgaXMgaW1wb3J0YW50IHRvIG1hbmFnZSB0aGUgcGFzc3Rocm91Z2ggb2YgdGhlIHBoeXNpY2FsIGRldmljZSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLCBidXQgSSBjYW4ndCBmb3JnZXQgdGhlIGJhc2UgYFZGSU9gIG1vZHVsZSB0aGF0IHByb3ZpZGVzIHRoZSBjb3JlIGRldmljZSBhc3NpZ25tZW50IGNhcGFiaWxpdGllcy4gVGhlc2UgYXJlIGJvdGggb2J2aW91c2x5IG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMzOCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MTYuMzI1NjIyMTEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY4OTQ2NjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPJFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjI6bWVudWNvbmZpZyBWRklPXFxuZHJpdmVycy92ZmlvL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVkZJTyBOb24tUHJpdmlsZWdlZCB1c2Vyc3BhY2UgZHJpdmVyIGZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MTguNjk0NTc1MDMzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzIwNTQyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqVkZJTyBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgc29saWQgaGFuZGxlIG9uIHRoZSBgVkZJT2AgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IGFueSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvciBjb25maWd1cmF0aW9uLCBpdCdzIGNyaXRpY2FsIHRvIGVuc3VyZSBhbGwgdGhlIG5lY2Vzc2FyeSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLiBUaGlzIG1lYW5zIHN5c3RlbWF0aWNhbGx5IGlkZW50aWZ5aW5nIGFuZCB2ZXJpZnlpbmcgdGhlIHVuZGVybHlpbmcgbGlicmFyaWVzLCBrZXJuZWwgbW9kdWxlcywgYW5kIGFueSBvdGhlciByZXF1aXJlZCBjb21wb25lbnRzIHRoYXQgYFZGSU9gIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSdsbCBuZWVkIHRvIGtub3cgdGhpcyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQuIEkgd2lsbCBhcHByb2FjaCB0aGlzIHN5c3RlbWF0aWNhbGx5LCBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbWlzc2luZyBwaWVjZXMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSSB3YW50IGEgY2xlYW4sIHdlbGwtdW5kZXJzdG9vZCBmb3VuZGF0aW9uIGJlZm9yZSBwcm9jZWVkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MjEuNDI2NjMxOTkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIFZGSU9cXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IElPTU1VX0FQSVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBJT01NVUZEIHx8ICFJT01NVUZEXFxuICAgNjpcXHRcXHRzZWxlY3QgSU5URVJWQUxfVFJFRVxcbiAgIDc6XFx0XFx0c2VsZWN0IFZGSU9fR1JPVVAgaWYgU1BBUFJfVENFX0lPTU1VIHx8IElPTU1VRkQ9blxcbiAgIDg6XFx0XFx0c2VsZWN0IFZGSU9fREVWSUNFX0NERVYgaWYgIVZGSU9fR1JPVVBcXG4gICA5OlxcdFxcdHNlbGVjdCBWRklPX0NPTlRBSU5FUiBpZiBJT01NVUZEPW5cXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVkZJTyBwcm92aWRlcyBhIGZyYW1ld29yayBmb3Igc2VjdXJlIHVzZXJzcGFjZSBkZXZpY2UgZHJpdmVycy5cXG4gIDEyOlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLnJzdCBmb3IgbW9yZSBkZXRhaWxzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAxNTpcXHRcXG4gIDE2OlxcdGlmIFZGSU9cXG4gIDE3OlxcdGNvbmZpZyBWRklPX0RFVklDRV9DREVWXFxuICAxODpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVkZJTyBjZGV2IC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBJT01NVUZEIFxcdTAwMjZcXHUwMDI2ICFTUEFQUl9UQ0VfSU9NTVVcXG4gIDIwOlxcdFxcdGRlZmF1bHQgIVZGSU9fR1JPVVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MjEuNDI2Njk5OTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mzc3NDk4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPL1BDSSBSZXNldCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVkZJT2AgYW5kIGBWRklPX1BDSWAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCB3aGF0IGFib3V0IHRoZSBmb2N1cyBzeW1ib2xzIGhlcmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVzZXQgbG9naWMgaXMgc3RydWN0dXJlZC4gUmlnaHQsIHNvIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgYW5kIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAuIEl0IGFsc28gaW50cm9kdWNlcyB0d28gbmV3IGZ1bmN0aW9uczogYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgLiBNeSBndXQgdGVsbHMgbWUgSSBzaG91bGQgY2hlY2sgaWYgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBpcyBzdGF0aWMuIFllcywgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gTm93IGhvbGQgb24sIHRoZSBhY3R1YWwgZW50cnkgcG9pbnQgaXMgYHZmaW9fcGNpX2NvcmVfaW9jdGxgLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB3aXRoaW4gdGhlIGxhcmdlciBpb2N0bCBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNzEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDoyNS4yNjQ0NTI0NTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjkyNjgzODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfY29yZV9pb2N0bFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg2LVxcdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNTg3OlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg4LVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IGhpc2lfYWNjX3ZmaW9faW9jdGxfZ2V0X3JlZ2lvbixcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODk6XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU5MC1cXHQucmVhZCA9IGhpc2lfYWNjX3ZmaW9fcGNpX3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA3LVxcdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDg6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE2MDktXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTYxMDpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjExLVxcdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTMzNT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBpc21fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zNDAtXFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozNDE6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmMtMzQyLVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IGlzbV92ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjM0MzpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0NC1cXHQucmVhZCA9IGlzbV92ZmlvX3BjaV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzkxLVxcdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzOTI6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTMtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTM5NDpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzk1LVxcdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9NTg5PXN0YXRpYyBsb25nIG52Z3JhY2VfZ3B1X2lvY3RsKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTk4LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NTk5OlxcdFxcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2lvY3RsKGNvcmVfdmRldiwgY21kLCBhcmcpO1xcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTYwMC1cXHR9XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xMDY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG52Z3JhY2VfZ3B1X3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDcyLVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IG52Z3JhY2VfZ3B1X2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDczOlxcdC5kZXZpY2VfZmVhdHVyZVxcdD0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzQtXFx0LnJlYWRcXHRcXHQ9IG52Z3JhY2VfZ3B1X3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG52Z3JhY2VfZ3B1X3BjaV9jb3JlX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwOTUtXFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTA5NjpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5Ny1cXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTA5ODpcXHQuZGV2aWNlX2ZlYXR1cmVcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDk5LVxcdC5yZWFkXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBwZHNfdmZpb19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE5Ni1cXHQuY2xvc2VfZGV2aWNlID0gcGRzX3ZmaW9fY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTk3OlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTgtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTk5OlxcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTIwMC1cXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz02MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcWF0X3ZmX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjA5LVxcdC5jbG9zZV9kZXZpY2UgPSBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM6NjEwOlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTYxMS1cXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTQtXFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NTpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1Ni1cXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NzpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1OC1cXHQucmVhZFxcdFxcdD0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTUzMz1zdGF0aWMgaW50IHZmaW9fcGNpX2lvY3RsX2lvZXZlbnRmZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTU3LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1NTg6bG9uZyB2ZmlvX3BjaV9jb3JlX2lvY3RsKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCB1bnNpZ25lZCBpbnQgY21kLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1NTktXFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTU4My19XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTU4NDpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2lvY3RsKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTg1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE1ODY9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfdG9rZW4oc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTYxMi1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxNjEzOmludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNjE0LVxcdFxcdFxcdFxcdHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE2MzQtfVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE2MzU6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNjM2LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy04OS1cXHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6OTA6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTEtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo5MjpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTkzLVxcdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV90cmFuX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTEtXFx0LmNsb3NlX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjExMjpcXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTMtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmlydGlvdmZfcGNpX2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTE0OlxcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTE1LVxcdC5yZWFkID0gdmlydGlvdmZfcGNpX2NvcmVfcmVhZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMjg9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTEzMy1cXHQuY2xvc2VfZGV2aWNlID0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzNDpcXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzUtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMzY6XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzctXFx0LnJlYWQgPSB2ZmlvX3BjaV9jb3JlX3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI3LVxcdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6NTI4OlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI5LVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fcGNpX2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1MzA6XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUzMS1cXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcXG4tLVxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oPTE3Mj1pbnQgdmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3My1cXHRcXHRcXHRcXHQgIGludCBucl92aXJ0Zm4pO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjE3NDpsb25nIHZmaW9fcGNpX2NvcmVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHVuc2lnbmVkIGludCBjbWQsXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmgtMTc1LVxcdFxcdHVuc2lnbmVkIGxvbmcgYXJnKTtcXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaDoxNzY6aW50IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSwgdTMyIGZsYWdzLFxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3Ny1cXHRcXHRcXHRcXHR2b2lkIF9fdXNlciAqYXJnLCBzaXplX3QgYXJnc3opO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDoyNi44OTM3MjYxNzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2MDI3ODc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcyBwcmVzZW50ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFZGSU8gUENJIENvcmUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgY2VudGVyZWQgYXJvdW5kIGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCDigJMgdGhhdCdzIHRoZSBwcmltYXJ5IGlvY3RsIGhhbmRsZXIsIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBpbnRlcmFjdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgSSdsbCBkZWZpbml0ZWx5IGxpc3QgdGhhdCBhcyB0aGUgZm9jdXMgc3ltYm9sIGZvciB0aGUgcGF0Y2guIFRoZSBwYXRjaCBhbHNvIGFkZHMgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AuIFRoZXNlIHJlc2V0IGZ1bmN0aW9ucyBhcmUgc3RhdGljLiBUaGUgUENJIGNvcmUgZGlyZWN0bHkgY2FsbHMgdGhvc2UsIHNvIGl0IGlzIGFuIGludGVyZXN0aW5nIHBvaW50IG9mIGRpc2N1c3Npb24sIGJ1dCBzdGlsbCwgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIGlzIHRoZSBtYWluIGZvY3VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNsZWFybHkgbm90ZSB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgZnJvbS4gSSBzYXcgU1JJT1YgY29uZmlndXJhdGlvbiBtZW50aW9uZWQgYnV0IGl0J3MganVzdCBhZGphY2VudCB0byB0aG9zZSBuZXcgcmVzZXQgaG9va3MgaW4gdGhlIHBhdGNoLCBzbyB0aGUgU1JJT1Ygcm91dGluZSBpdHNlbGYgaXNuJ3QgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQsIGl0IGlzIGp1c3QgaW4gdGhlIG5laWdoYm9yaG9vZC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdHVyZSwganVzdCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ3NSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDozMS4yNTQwMDg2NjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzg5OTkyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTM5NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXNtX3ZmaW9fcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zOTktXFx0LnJlbW92ZSA9IGlzbV92ZmlvX3BjaV9yZW1vdmUsXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjQwMDpcXHQuZXJyX2hhbmRsZXIgPSBcXHUwMDI2dmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMsXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTQwMS1cXHQuZHJpdmVyX21hbmFnZWRfZG1hID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0yMjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHZmaW9fcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0yMzEtXFx0LnNyaW92X2NvbmZpZ3VyZVxcdD0gdmZpb19wY2lfc3Jpb3ZfY29uZmlndXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoyMzI6XFx0LmVycl9oYW5kbGVyXFx0XFx0PSBcXHUwMDI2dmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTIzMy1cXHQuZHJpdmVyX21hbmFnZWRfZG1hXFx0PSB0cnVlLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MjQzNT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDQ1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0NDY6Y29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDQ3LVxcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0NTAtfTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDUxOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDUyLVxcbi0tXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MTcwPXZvaWQgdmZpb19wY2lfY29yZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjE3MTpleHRlcm4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycztcXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0xNzItaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MzIuODkzMDE4MDA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxNDM3MDI3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZGSU8gUENJIFJlc2V0IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmaW5kIGEgZ29vZCBlbnRyeSBwb2ludCBzeW1ib2wuIEkgc3RhcnRlZCBieSBsb29raW5nIGF0IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBhcyBhIHBvdGVudGlhbCBmb2N1cy4gSSBjb25zaWRlcmVkIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIGJ1dCB0aGF0J3MgYSBzdHJ1Y3QsIG5vdCBhIGZ1bmN0aW9uLiBUaGUgYWN0dWFsIHJlc2V0IGZ1bmN0aW9ucywgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgLCBhcmUgc3RhdGljLCBzbyB0aGV5J3JlIG5vdCBnb2luZyB0byBiZSB2aXNpYmxlIHN5bWJvbHMgZGlyZWN0bHkuIFRoZW4gSSBmb3VuZCB0aGF0IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBpcyBleHBvcnRlZCwgYW5kIHRoZXJlZm9yZSwgdmlzaWJsZS4gQWxzbywgSSByZWFsaXplZCB0aGF0IGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAgYW5kIGB2ZmlvX3BjaV9pb2N0bF9wY2lfaG90X3Jlc2V0YCBhcmUgc3RhdGljLiBUaGVyZWZvcmUsIGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBpcyB0aGUgZW50cnkgcG9pbnQuXG5cbkkgY2hlY2tlZCB0byBzZWUgaWYgYW55IG90aGVyIGV4cG9ydGVkIGZ1bmN0aW9ucyBoYWQgYmVlbiBtb2RpZmllZCwgYnV0IG5vLCBpdCBzZWVtcyBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgdGhlIG1haW4gb25lIGFuZCBjYWxscyBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldGAuIFNvLCBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgZGVmaW5pdGVseSB0aGUgbWFpbiBmb2N1cy5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBrZXJuZWwgY29uZmlncy4gSSBjb25maXJtZWQgYFZGSU9gIGFuZCBgVkZJT19QQ0lgIGFyZSBpbXBvcnRhbnQuIEkgY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUgd2VyZSBhbnkgb3RoZXIgY29uZmlncywgYW5kIGZvdW5kIGBWRklPX1BDSV9DT1JFYCBpcyBzZWxlY3RlZCBieSBgVkZJT19QQ0lgLiBTbywgYFZGSU9gIGFuZCBgVkZJT19QQ0lgIGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGUgcmVsZXZhbnQgY29kZS5cblxuU3VtbWFyaXppbmcgbXkgZmluZGluZ3MsIHRoaXMgcGF0Y2ggaXMgKndvcnRoIGZ1enppbmcqIGJlY2F1c2UgaXQgdG91Y2hlcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zLCBib3RoIHJlZ3VsYXIgZGV2aWNlIHJlc2V0cyBhbmQgaG90IHJlc2V0cy4gVGhlc2UgcmVzZXRzIGFyZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB2ZmlvLXBjaSB2aWEgdGhlIGBWRklPX0RFVklDRV9SRVNFVGAgYW5kIGBWRklPX0RFVklDRV9QQ0lfSE9UX1JFU0VUYCBpb2N0bHMuIFRoZSBtYWluIGZvY3VzIHN5bWJvbCBmb3IgZnV6emluZyBpcyBkZWZpbml0ZWx5IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYC4gQXMgZm9yIGVuYWJsZSBjb25maWdzLCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgd2lsbCBiZSBlbm91Z2guIEkgZGlkIG5vdGUgdGhhdCBgVkZJT2AgZGVwZW5kcyBvbiBgSU9NTVVGRGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBpdCdzIGdvb2QgdG8gaGF2ZSBpdCwgYnV0IG5vdCBzdHJpY3RseSByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MjAsIk91dHB1dFRva2VucyI6MTIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjQyLjAzNjcyNDU0NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMTk4Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPXCIsXG4gICAgXCJWRklPX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGNpX2NvcmVfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfY29yZV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFZGSU8gUENJIHJlc2V0IG9wZXJhdGlvbnMgKGJvdGggc2luZ2xlIGRldmljZSByZXNldCBhbmQgaG90IHJlc2V0KS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIFZGSU9fREVWSUNFX1JFU0VUIGFuZCBWRklPX0RFVklDRV9QQ0lfSE9UX1JFU0VUIGlvY3Rscywgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBvbiB2aXJ0dWFsIFBDSSBkZXZpY2VzIGJvdW5kIHRvIHRoZSB2ZmlvLXBjaSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjQyLjExNjkzMzI5M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNTE2MzU1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDo0Mi4xMTc1ODA1NTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIyNTA5ODQ2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMGJiMWU3MGMyMDUzNDJkNTMxNzI1NGE2Nzg1NjI0NTU3NTFjNGY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAyMToxOTo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbmluZGV4IGExMTNjNTU4NDVlMTAuLmU0NmIwYjFkOGE1OTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuKysrIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbkBAIC0xMzM0LDEyICsxMzM0LDE0IEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcmVzZXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIFx0ICovXG4gXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcbi1cdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbi1cdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cdTAwM2VwZGV2KTtcbi1cdGlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKVxuLVx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuK1x0LypcbitcdCAqIERyb3AgdGhlIGxvY2sgYmVmb3JlIGVudGVyaW5nIHRoZSBQQ0kgY29yZS5cbitcdCAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLlxuK1x0ICovXG4gXHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiBcbitcdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cdTAwM2VwZGV2KTtcbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTI0MTgsOCArMjQyMCwzMyBAQCBpbnQgdmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZSk7XG4gXG4rc3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuK3tcbitcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXG4rXHRpZiAodmRldikge1xuK1x0XHRkb3duX3dyaXRlKFx1MDAyNnZkZXYtXHUwMDNlbWVtb3J5X2xvY2spO1xuK1x0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbitcdFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XG4rXHRcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbitcdH1cbit9XG4rXG4rc3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuK3tcbitcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXG4rXHRpZiAodmRldikge1xuK1x0XHRpZiAoX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcbitcdFx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuK1x0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbitcdH1cbit9XG4rXG4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcbiBcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcbitcdC5yZXNldF9wcmVwYXJlID0gdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlLFxuK1x0LnJlc2V0X2RvbmUgPSB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUsXG4gfTtcbiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyk7XG4gXG5AQCAtMjU2MSw1NSArMjU4OCw1MiBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsXG4gXG4gXHRcdGlmICghb3duZWQpIHtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRcdGJyZWFrO1xuK1x0XHRcdGdvdG8gZXJyX291dDtcbiBcdFx0fVxuK1x0fVxuIFxuK1x0LyogWmFwLCBhbmQgc2V0IHBvd2VyIHN0YXRlICovXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSB7XG4gXHRcdC8qXG4tXHRcdCAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSBhbmQgemFwIEJBUlxuLVx0XHQgKiBtYXBwaW5ncyB0byBwcmV2ZW50IHRoZSB1c2VyIGFjY2Vzc2luZyB0aGUgZGV2aWNlIHdoaWxlIGluXG4tXHRcdCAqIHJlc2V0LiAgTG9ja2luZyBtdWx0aXBsZSBkZXZpY2VzIGlzIHByb25lIHRvIGRlYWRsb2NrLFxuK1x0XHQgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UsIHphcCBCQVJcbitcdFx0ICogbWFwcGluZ3MsIGFuZCByZXN0b3JlIHBvd2VyIHN0YXRlIGJlZm9yZSByZXNldC5cbitcdFx0ICogTG9ja2luZyBtdWx0aXBsZSBkZXZpY2VzIGlzIHByb25lIHRvIGRlYWRsb2NrLFxuIFx0XHQgKiBydW5hd2F5IGFuZCB1bndpbmQgaWYgd2UgaGl0IGNvbnRlbnRpb24uXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWRvd25fd3JpdGVfdHJ5bG9jayhcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKSkge1xuIFx0XHRcdHJldCA9IC1FQlVTWTtcbi1cdFx0XHRicmVhaztcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIFdlIGZhaWxlZCB0byBsb2NrIFRISVMgZGV2aWNlLiBXZSBtdXN0IHN0ZXAgYmFjayBvbmVcbitcdFx0XHQgKiBkZXZpY2Ugc28gZXJyX3VuZG8gb25seSB1bmxvY2tzIGRldmljZXMgdGhhdCBzdWNjZWVkZWQuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpKSB7XG4rXHRcdFx0XHR2ZGV2ID0gbGlzdF9wcmV2X2VudHJ5KHZkZXYsIHZkZXYuZGV2X3NldF9saXN0KTtcbitcdFx0XHRcdGdvdG8gZXJyX3VuZG87XG4rXHRcdFx0fVxuK1x0XHRcdGdvdG8gZXJyX291dDtcbiBcdFx0fVxuIFxuLVx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4gXHRcdHZmaW9fcGNpX3phcF9iYXJzKHZkZXYpO1xuK1x0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcdH1cbiBcbi1cdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsXG4tXHRcdFx0XHRcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcbi1cdFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4tXHRcdGdvdG8gZXJyX3VuZG87XG4tXHR9XG4tXG4tXHQvKlxuLVx0ICogVGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIHJlc2V0IGFsbCB0aGUgZGV2aWNlcyBpbiB0aGUgYnVzLlxuLVx0ICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cbi1cdCAqIEZvciB0aGVzZSBkZXZpY2VzLCB0aGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgaW50ZXJuYWxseSBzZXRcbi1cdCAqIHRoZSBwb3dlciBzdGF0ZSB0byBEMCB3aXRob3V0IHZmaW8gZHJpdmVyIGludm9sdmVtZW50LlxuLVx0ICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhblxuLVx0ICogY2F1c2UgdGhlIFBDSSBjb25maWcgc3BhY2UgcmVzZXQgd2l0aG91dCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsXG4tXHQgKiBzdGF0ZSAoc2F2ZWQgbG9jYWxseSBpbiAndmRldi1cdTAwM2VwbV9zYXZlJykuXG4tXHQgKi9cbitcdC8qIERyb3AgbG9ja3MgYmVmb3JlIGNyb3NzaW5nIGludG8gUENJIGNvcmUgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpXG4tXHRcdHZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApO1xuK1x0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiBcbitcdC8qIFBDSSBjb3JlIGhhbmRsZXMgdGhlIHJlc2V0IGFuZCBjYWxscyAucmVzZXQgaG9va3MgKi9cbiBcdHJldCA9IHBjaV9yZXNldF9idXMocGRldik7XG4gXG4tXHR2ZGV2ID0gbGlzdF9sYXN0X2VudHJ5KFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsXG4tXHRcdFx0ICAgICAgIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldi5kZXZfc2V0X2xpc3QpO1xuK1x0Z290byBlcnJfb3V0O1xuIFxuIGVycl91bmRvOlxuK1x0LyogVW53aW5kIGxvY2tzIGNsZWFubHkgZm9yIGRldmljZXMgd2Ugc3VjY2Vzc2Z1bGx5IGxvY2tlZCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tX3JldmVyc2UodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCxcbi1cdFx0XHRcdFx0IHZkZXYuZGV2X3NldF9saXN0KSB7XG4tXHRcdGlmICh2ZGV2LVx1MDAzZXZkZXYub3Blbl9jb3VudCBcdTAwMjZcdTAwMjYgX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcbi1cdFx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuK1x0XHRcdFx0XHQgdmRldi5kZXZfc2V0X2xpc3QpXG4gXHRcdHVwX3dyaXRlKFx1MDAyNnZkZXYtXHUwMDNlbWVtb3J5X2xvY2spO1xuLVx0fVxuIFxuK2Vycl9vdXQ6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxuIFx0XHRwbV9ydW50aW1lX3B1dChcdTAwMjZ2ZGV2LVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjQyLjExNzU4MTg2M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI1MDk1Njc2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGSU8gUENJIExvY2tpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gSXQncyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCB0aGUgbG9ja2luZyBhcm91bmQgUENJIHJlc2V0IG9wZXJhdGlvbnMg4oCTIHNwZWNpZmljYWxseSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBJdCdzIGEgcHJldHR5IHRhcmdldGVkIGNoYW5nZSwgcmVhbGx5IGRyaWxsaW5nIGRvd24gb24gdGhlIHN5bmNocm9uaXphdGlvbi5cblxuTXkgaW1tZWRpYXRlIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGEgKmdvb2QqIHRoaW5nLiBUaGV5J3JlIGFkZGluZyBgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlYCBhbmQgYHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZWAgaG9va3MgdG8gdGhlIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIHdoaWNoIGlzIGEgc21hcnQgbW92ZS4gVGhleSdyZSBjbGVhcmx5IHRyeWluZyB0byBhdm9pZCBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgcmV2ZXJzYWxzIGR1cmluZyBQQ0kgcmVzZXQgc2VxdWVuY2VzLiBUaGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgaG93IHRoZSBjb2RlIHdhcyBtYW5hZ2luZyBgdmRldi1cdTAwM2VtZW1vcnlfbG9ja2Ag4oCTIHNwZWNpZmljYWxseSBgZG93bl93cml0ZWAgYW5kIGB1cF93cml0ZWAgYXJvdW5kIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBpbnZvbHZpbmcgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbnMgYW5kIERNQSBidWZmZXIgbWFuYWdlbWVudC5cblxuTG9va2luZyBjbG9zZWx5IGF0IHRoZSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGRpZmYsIHRoZSBrZXkgY2hhbmdlIGlzIGRyb3BwaW5nIHRoZSBsb2NrIChgdXBfd3JpdGVgKSBiZWZvcmUgY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdpdGggdGhlIFBDSSBjb3JlIHJlLWFjcXVpcmluZyBpdCB2aWEgdGhlIGAucmVzZXRfcHJlcGFyZWAgaG9vay4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3RyYXRlZ3kgSSdkIGV4cGVjdCB0byBzZWUgZm9yIGF2b2lkaW5nIGxvY2sgY29udGVudGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBzaGFyZWQgcmVzb3VyY2VzIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4gQW5kIGZyb20gd2hhdCBJIHNlZSwgd2UgZW5zdXJlIHRoYXQgd2UgcmUtYWNxdWlyZSBpdCBsYXRlci4gVGhlIGAucmVzZXRfcHJlcGFyZWAgYW5kIGAucmVzZXRfZG9uZWAgaG9va3MgaGFuZGxlIHRoZSBuZWNlc3Nhcnkgc3RhdGUgdHJhbnNpdGlvbnMgYW5kIERNQSBidWZmZXIgbW92ZW1lbnQgd2l0aGluIHRoZSBwcm90ZWN0ZWQgY3JpdGljYWwgc2VjdGlvbi5cblxuVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBmb3IgdGhlIHRyeV9sb2NrIGFyZSBpbnRlcmVzdGluZywgYW5kIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlcyB0byBoYW5kbGluZyBlcnJfdW5kbyBhbmQgYXZvaWRpbmcgdW5sb2NraW5nIGRldmljZXMgd2UgbmV2ZXIgbG9ja2VkIGluIHRoZSBmaXJzdCBwbGFjZSwgbWFrZXMgc2Vuc2UgaW4gYW4gYXRvbWljIGNvbnRleHQuXG5cbkNydWNpYWxseSwgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gYW55IGRhdGEgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBhbGxvY2F0aW9ucywgYW5kICphYnNvbHV0ZWx5IG5vKiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIEtBU0FOL0xPQ0tERVAgYXJlIHRoZSBtYWluIHRvb2xzIHRoYXQgd291bGQgcGljayB1cCBhbnkgbGluZ2VyaW5nIGlzc3Vlcy4gIEtNU0FOIGlzbid0IHJlbGV2YW50IGhlcmUgc2luY2UgaXQncyBmdW5kYW1lbnRhbGx5IGEgbG9ja2luZyBpc3N1ZSwgYW5kIHRob3NlIGFyZSBjYXVnaHQgYnkgS0FTQU4uXG5cblllYWgsIGl0J3MgYSBzdHJhaWdodGZvcndhcmQsIHdlbGwtY29uc2lkZXJlZCBsb2NraW5nIGZpeC5cbkknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBwYXRjaCByZXNvbHZlcyBhIHBvdGVudGlhbCBkZWFkbG9jay5cbkknbGwgY2FsbCBpdCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0NCwiT3V0cHV0VG9rZW5zIjoxODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDo1NC4zNjg1NDE5NTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyBpbiB0aGUgVkZJTyBQQ0kgZHJpdmVyLiBJdCBkcm9wcyBsb2NrcyBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSBQQ0kgY29yZSBhbmQgcmUtYWNxdWlyZXMgdGhlbSB2aWEgbmV3IGAucmVzZXRfcHJlcGFyZWAgYW5kIGAucmVzZXRfZG9uZWAgaG9va3MgdG8gcHJldmVudCBkZWFkbG9ja3MuIEl0IGFsc28gZml4ZXMgbG9jayB1bndpbmRpbmcgaW4gYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uIGFuZCBkZXZpY2Ugc3RhdGUsIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIGRlYWRsb2NrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0FTQU4sIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gdW5uZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 21:02:38 +0000 UTC FinishedAt: 2026-08-07 21:20:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ea2bff00da89d7767d677bb68470130ba96f4928", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "ea2bff00da89d7767d677bb68470130ba96f4928", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VFIO", "VFIO_PCI" ], "series_id": "94ca89a0-1bb0-4a70-9fef-a25e166fa2e8" }, "track": "KASAN", "fuzz": { "focus": [ "kvm" ], "focus_symbols": [ "vfio_pci_core_ioctl" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZGSU8mIzM0OywKICAgICYjMzQ7VkZJT19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2ZmlvX3BjaV9jb3JlX2lvY3RsJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgUENJIHJlc2V0IG9wZXJhdGlvbnMgaW4gdGhlIFZGSU8gUENJIGRyaXZlci4gSXQgZHJvcHMgbG9ja3MgYmVmb3JlIGNhbGxpbmcgaW50byB0aGUgUENJIGNvcmUgYW5kIHJlLWFjcXVpcmVzIHRoZW0gdmlhIG5ldyBgLnJlc2V0X3ByZXBhcmVgIGFuZCBgLnJlc2V0X2RvbmVgIGhvb2tzIHRvIHByZXZlbnQgZGVhZGxvY2tzLiBJdCBhbHNvIGZpeGVzIGxvY2sgdW53aW5kaW5nIGluIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAuIFRoZXNlIGNoYW5nZXMgYXJlIHB1cmVseSByZWxhdGVkIHRvIHN5bmNocm9uaXphdGlvbiBhbmQgZGV2aWNlIHN0YXRlLCBhbmQgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IHN0cnVjdHVyZXMsIGFsbG9jYXRpb25zLCBvciBkYXRhIGNvcGllcyB0byB1c2VyIHNwYWNlLiBUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyBkZWFkbG9ja3Mgb3IgdXNlLWFmdGVyLWZyZWUpIHdvdWxkIGJlIGNhdWdodCBieSBMT0NLREVQIG9yIEtBU0FOLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIHVubmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTBiYjFlNzBjMjA1MzQyZDUzMTcyNTRhNjc4NTYyNDU1NzUxYzRmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuaW5kZXggYTExM2M1NTg0NWUxMC4uZTQ2YjBiMWQ4YTU5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuQEAgLTEzMzQsMTIgJiM0MzsxMzM0LDE0IEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcmVzZXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIFx0ICovXG4gXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcbi1cdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbi1cdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cdTAwM2VwZGV2KTtcbi1cdGlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKVxuLVx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogRHJvcCB0aGUgbG9jayBiZWZvcmUgZW50ZXJpbmcgdGhlIFBDSSBjb3JlLlxuJiM0MztcdCAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLlxuJiM0MztcdCAqL1xuIFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4mIzQzO1x0cmV0ID0gcGNpX3RyeV9yZXNldF9mdW5jdGlvbih2ZGV2LVx1MDAzZXBkZXYpO1xuJiM0MztcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTI0MTgsOCAmIzQzOzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAodmRldikge1xuJiM0MztcdFx0ZG93bl93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiYjNDM7XHRcdHZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApO1xuJiM0MztcdFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XG4mIzQzO1x0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuJiM0MztcbiYjNDM7XHRpZiAodmRldikge1xuJiM0MztcdFx0aWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4mIzQzO1x0XHRcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7XG4mIzQzO1x0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiYjNDM7XHR9XG4mIzQzO31cbiYjNDM7XG4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcbiBcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcbiYjNDM7XHQucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSxcbiYjNDM7XHQucmVzZXRfZG9uZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZSxcbiB9O1xuIEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzKTtcbiBcbkBAIC0yNTYxLDU1ICYjNDM7MjU4OCw1MiBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsXG4gXG4gXHRcdGlmICghb3duZWQpIHtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRnb3RvIGVycl9vdXQ7XG4gXHRcdH1cbiYjNDM7XHR9XG4gXG4mIzQzO1x0LyogWmFwLCBhbmQgc2V0IHBvd2VyIHN0YXRlICovXG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuIFx0XHQvKlxuLVx0XHQgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UgYW5kIHphcCBCQVJcbi1cdFx0ICogbWFwcGluZ3MgdG8gcHJldmVudCB0aGUgdXNlciBhY2Nlc3NpbmcgdGhlIGRldmljZSB3aGlsZSBpblxuLVx0XHQgKiByZXNldC4gIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbiYjNDM7XHRcdCAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSwgemFwIEJBUlxuJiM0MztcdFx0ICogbWFwcGluZ3MsIGFuZCByZXN0b3JlIHBvd2VyIHN0YXRlIGJlZm9yZSByZXNldC5cbiYjNDM7XHRcdCAqIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbiBcdFx0ICogcnVuYXdheSBhbmQgdW53aW5kIGlmIHdlIGhpdCBjb250ZW50aW9uLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFkb3duX3dyaXRlX3RyeWxvY2soXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jaykpIHtcbiBcdFx0XHRyZXQgPSAtRUJVU1k7XG4tXHRcdFx0YnJlYWs7XG4mIzQzO1xuJiM0MztcdFx0XHQvKlxuJiM0MztcdFx0XHQgKiBXZSBmYWlsZWQgdG8gbG9jayBUSElTIGRldmljZS4gV2UgbXVzdCBzdGVwIGJhY2sgb25lXG4mIzQzO1x0XHRcdCAqIGRldmljZSBzbyBlcnJfdW5kbyBvbmx5IHVubG9ja3MgZGV2aWNlcyB0aGF0IHN1Y2NlZWRlZC5cbiYjNDM7XHRcdFx0ICovXG4mIzQzO1x0XHRcdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSkge1xuJiM0MztcdFx0XHRcdHZkZXYgPSBsaXN0X3ByZXZfZW50cnkodmRldiwgdmRldi5kZXZfc2V0X2xpc3QpO1xuJiM0MztcdFx0XHRcdGdvdG8gZXJyX3VuZG87XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdFx0Z290byBlcnJfb3V0O1xuIFx0XHR9XG4gXG4tXHRcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbiBcdFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XG4mIzQzO1x0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcdH1cbiBcbi1cdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsXG4tXHRcdFx0XHRcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcbi1cdFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4tXHRcdGdvdG8gZXJyX3VuZG87XG4tXHR9XG4tXG4tXHQvKlxuLVx0ICogVGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIHJlc2V0IGFsbCB0aGUgZGV2aWNlcyBpbiB0aGUgYnVzLlxuLVx0ICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cbi1cdCAqIEZvciB0aGVzZSBkZXZpY2VzLCB0aGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgaW50ZXJuYWxseSBzZXRcbi1cdCAqIHRoZSBwb3dlciBzdGF0ZSB0byBEMCB3aXRob3V0IHZmaW8gZHJpdmVyIGludm9sdmVtZW50LlxuLVx0ICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhblxuLVx0ICogY2F1c2UgdGhlIFBDSSBjb25maWcgc3BhY2UgcmVzZXQgd2l0aG91dCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsXG4tXHQgKiBzdGF0ZSAoc2F2ZWQgbG9jYWxseSBpbiAmIzM5O3ZkZXYtXHUwMDNlcG1fc2F2ZSYjMzk7KS5cbi1cdCAqL1xuJiM0MztcdC8qIERyb3AgbG9ja3MgYmVmb3JlIGNyb3NzaW5nIGludG8gUENJIGNvcmUgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpXG4tXHRcdHZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApO1xuJiM0MztcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4mIzQzO1x0LyogUENJIGNvcmUgaGFuZGxlcyB0aGUgcmVzZXQgYW5kIGNhbGxzIC5yZXNldCBob29rcyAqL1xuIFx0cmV0ID0gcGNpX3Jlc2V0X2J1cyhwZGV2KTtcbiBcbi1cdHZkZXYgPSBsaXN0X2xhc3RfZW50cnkoXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCxcbi1cdFx0XHQgICAgICAgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4mIzQzO1x0Z290byBlcnJfb3V0O1xuIFxuIGVycl91bmRvOlxuJiM0MztcdC8qIFVud2luZCBsb2NrcyBjbGVhbmx5IGZvciBkZXZpY2VzIHdlIHN1Y2Nlc3NmdWxseSBsb2NrZWQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsXG4tXHRcdFx0XHRcdCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuLVx0XHRpZiAodmRldi1cdTAwM2V2ZGV2Lm9wZW5fY291bnQgXHUwMDI2XHUwMDI2IF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4tXHRcdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbiYjNDM7XHRcdFx0XHRcdCB2ZGV2LmRldl9zZXRfbGlzdClcbiBcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4tXHR9XG4gXG4mIzQzO2Vycl9vdXQ6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxuIFx0XHRwbV9ydW50aW1lX3B1dChcdTAwMjZ2ZGV2LVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VkZJTyYjMzQ7LAogICAgJiMzNDtWRklPX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZmaW9fcGNpX2NvcmVfaW9jdGwmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyAoYm90aCBzaW5nbGUgZGV2aWNlIHJlc2V0IGFuZCBob3QgcmVzZXQpLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVkZJT19ERVZJQ0VfUkVTRVQgYW5kIFZGSU9fREVWSUNFX1BDSV9IT1RfUkVTRVQgaW9jdGxzLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIG9uIHZpcnR1YWwgUENJIGRldmljZXMgYm91bmQgdG8gdGhlIHZmaW8tcGNpIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwYmIxZTcwYzIwNTM0MmQ1MzE3MjU0YTY3ODU2MjQ1NTc1MWM0ZjUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyA3IDIxOjE5OjQ4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwppbmRleCBhMTEzYzU1ODQ1ZTEwLi5lNDZiMGIxZDhhNTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYwpAQCAtMTMzNCwxMiAmIzQzOzEzMzQsMTQgQEAgc3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsCiAJICovCiAJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiAKLQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7Ci0JcmV0ID0gcGNpX3RyeV9yZXNldF9mdW5jdGlvbih2ZGV2LSZndDtwZGV2KTsKLQlpZiAoX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSkKLQkJdmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTsKJiM0MzsJLyoKJiM0MzsJICogRHJvcCB0aGUgbG9jayBiZWZvcmUgZW50ZXJpbmcgdGhlIFBDSSBjb3JlLgomIzQzOwkgKiBUaGUgUENJIGNvcmUgd2lsbCByZS1hY3F1aXJlIGl0IHZpYSBvdXIgLnJlc2V0X3ByZXBhcmUgaG9vay4KJiM0MzsJICovCiAJdXBfd3JpdGUoJmFtcDt2ZGV2LSZndDttZW1vcnlfbG9jayk7CiAKJiM0MzsJcmV0ID0gcGNpX3RyeV9yZXNldF9mdW5jdGlvbih2ZGV2LSZndDtwZGV2KTsKJiM0MzsKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0yNDE4LDggJiM0MzsyNDIwLDMzIEBAIGludCB2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsCiB9CiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZSk7CiAKJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwomIzQzOwlpZiAodmRldikgewomIzQzOwkJZG93bl93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKJiM0MzsJCXZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApOwomIzQzOwkJdmZpb19wY2lfemFwX2JhcnModmRldik7CiYjNDM7CQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7CiYjNDM7CX0KJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQomIzQzO3sKJiM0MzsJc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKCZhbXA7cGRldi0mZ3Q7ZGV2KTsKJiM0MzsKJiM0MzsJaWYgKHZkZXYpIHsKJiM0MzsJCWlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKQomIzQzOwkJCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7CiYjNDM7CQl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMgPSB7CiAJLmVycm9yX2RldGVjdGVkID0gdmZpb19wY2lfY29yZV9hZXJfZXJyX2RldGVjdGVkLAomIzQzOwkucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSwKJiM0MzsJLnJlc2V0X2RvbmUgPSB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUsCiB9OwogRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMpOwogCkBAIC0yNTYxLDU1ICYjNDM7MjU4OCw1MiBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsCiAKIAkJaWYgKCFvd25lZCkgewogCQkJcmV0ID0gLUVJTlZBTDsKLQkJCWJyZWFrOwomIzQzOwkJCWdvdG8gZXJyX291dDsKIAkJfQomIzQzOwl9CiAKJiM0MzsJLyogWmFwLCBhbmQgc2V0IHBvd2VyIHN0YXRlICovCiYjNDM7CWxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpIHsKIAkJLyoKLQkJICogVGFrZSB0aGUgbWVtb3J5IHdyaXRlIGxvY2sgZm9yIGVhY2ggZGV2aWNlIGFuZCB6YXAgQkFSCi0JCSAqIG1hcHBpbmdzIHRvIHByZXZlbnQgdGhlIHVzZXIgYWNjZXNzaW5nIHRoZSBkZXZpY2Ugd2hpbGUgaW4KLQkJICogcmVzZXQuICBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssCiYjNDM7CQkgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UsIHphcCBCQVIKJiM0MzsJCSAqIG1hcHBpbmdzLCBhbmQgcmVzdG9yZSBwb3dlciBzdGF0ZSBiZWZvcmUgcmVzZXQuCiYjNDM7CQkgKiBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssCiAJCSAqIHJ1bmF3YXkgYW5kIHVud2luZCBpZiB3ZSBoaXQgY29udGVudGlvbi4KIAkJICovCiAJCWlmICghZG93bl93cml0ZV90cnlsb2NrKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spKSB7CiAJCQlyZXQgPSAtRUJVU1k7Ci0JCQlicmVhazsKJiM0MzsKJiM0MzsJCQkvKgomIzQzOwkJCSAqIFdlIGZhaWxlZCB0byBsb2NrIFRISVMgZGV2aWNlLiBXZSBtdXN0IHN0ZXAgYmFjayBvbmUKJiM0MzsJCQkgKiBkZXZpY2Ugc28gZXJyX3VuZG8gb25seSB1bmxvY2tzIGRldmljZXMgdGhhdCBzdWNjZWVkZWQuCiYjNDM7CQkJICovCiYjNDM7CQkJaWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpKSB7CiYjNDM7CQkJCXZkZXYgPSBsaXN0X3ByZXZfZW50cnkodmRldiwgdmRldi5kZXZfc2V0X2xpc3QpOwomIzQzOwkJCQlnb3RvIGVycl91bmRvOwomIzQzOwkJCX0KJiM0MzsJCQlnb3RvIGVycl9vdXQ7CiAJCX0KIAotCQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7CiAJCXZmaW9fcGNpX3phcF9iYXJzKHZkZXYpOwomIzQzOwkJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiAJfQogCi0JaWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwKLQkJCQkmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHsKLQkJdmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7Ci0JCWdvdG8gZXJyX3VuZG87Ci0JfQotCi0JLyoKLQkgKiBUaGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgcmVzZXQgYWxsIHRoZSBkZXZpY2VzIGluIHRoZSBidXMuCi0JICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy4KLQkgKiBGb3IgdGhlc2UgZGV2aWNlcywgdGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIGludGVybmFsbHkgc2V0Ci0JICogdGhlIHBvd2VyIHN0YXRlIHRvIEQwIHdpdGhvdXQgdmZpbyBkcml2ZXIgaW52b2x2ZW1lbnQuCi0JICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhbgotCSAqIGNhdXNlIHRoZSBQQ0kgY29uZmlnIHNwYWNlIHJlc2V0IHdpdGhvdXQgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbAotCSAqIHN0YXRlIChzYXZlZCBsb2NhbGx5IGluICYjMzk7dmRldi0mZ3Q7cG1fc2F2ZSYjMzk7KS4KLQkgKi8KJiM0MzsJLyogRHJvcCBsb2NrcyBiZWZvcmUgY3Jvc3NpbmcgaW50byBQQ0kgY29yZSAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpCi0JCXZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApOwomIzQzOwkJdXBfd3JpdGUoJmFtcDt2ZGV2LSZndDttZW1vcnlfbG9jayk7CiAKJiM0MzsJLyogUENJIGNvcmUgaGFuZGxlcyB0aGUgcmVzZXQgYW5kIGNhbGxzIC5yZXNldCBob29rcyAqLwogCXJldCA9IHBjaV9yZXNldF9idXMocGRldik7CiAKLQl2ZGV2ID0gbGlzdF9sYXN0X2VudHJ5KCZhbXA7ZGV2X3NldC0mZ3Q7ZGV2aWNlX2xpc3QsCi0JCQkgICAgICAgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2LmRldl9zZXRfbGlzdCk7CiYjNDM7CWdvdG8gZXJyX291dDsKIAogZXJyX3VuZG86CiYjNDM7CS8qIFVud2luZCBsb2NrcyBjbGVhbmx5IGZvciBkZXZpY2VzIHdlIHN1Y2Nlc3NmdWxseSBsb2NrZWQgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X2Zyb21fcmV2ZXJzZSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LAotCQkJCQkgdmRldi5kZXZfc2V0X2xpc3QpIHsKLQkJaWYgKHZkZXYtJmd0O3ZkZXYub3Blbl9jb3VudCAmYW1wOyZhbXA7IF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpCi0JCQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpOwomIzQzOwkJCQkJIHZkZXYuZGV2X3NldF9saXN0KQogCQl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKLQl9CiAKJiM0MztlcnJfb3V0OgogCWxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpCiAJCXBtX3J1bnRpbWVfcHV0KCZhbXA7dmRldi0mZ3Q7cGRldi0mZ3Q7ZGV2KTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ3CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjcyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlZGSU8gUENJIFJlc2V0IFBhdGNoIEFuYWx5c2lzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbWVzc2luZyB3aXRoIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAsIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAsIGFuZCBpdCYjMzk7cyBhZGRpbmcgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gaGl0IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gQWZ0ZXIgYWxsLCBWRklPIGlzIGFsbCBhYm91dCBwYXNzaW5nIFBDSSBkZXZpY2VzIHRocm91Z2ggdG8gdXNlcnNwYWNlIG9yIFZNcy4KClJpZ2h0LCBzbyBjYW4gd2UgZnV6eiBWRklPIFBDSSBpbnNpZGUgUUVNVT8gSSBrbm93IHRoZXJlIGFyZSB2aXJ0dWFsIFBDSSBkZXZpY2VzLCBhbmQgc3l6a2FsbGVyIGhhcyBzb21lIFZGSU8gZGVzY3JpcHRpb25zLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGNoZWNrIGlmIFZGSU8gUENJIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIuIElmIG5vdCwgY2FuIHdlIGVuYWJsZSBpdD8gSG9sZCBvbiwgdGhvdWdoLi4uIFZGSU8gUENJIG5lZWRzIGEgUENJIGRldmljZSB0byBsYXRjaCBvbnRvLCBkb2VzbiYjMzk7dCBpdD8gT2theSwgc28gc3l6a2FsbGVyICpjb3VsZCogdXNlIHRoZSBgdmZpby1wY2lgIGRyaXZlciB0byBiaW5kIHRvIHNvbWUgZHVtbXkgb3IgdmlydHVhbCBQQ0kgZGV2aWNlcy4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQuCgpOb3csIGxldCYjMzk7cyBhbHNvIGNoZWNrIGlmIGBWRklPX1BDSWAgaXMgZ2VuZXJhbGx5IGVuYWJsZWQgaW4gc3RhbmRhcmQga2VybmVsIGNvbmZpZ3MuIFRoYXQmIzM5O3MgYSBzYW5pdHkgY2hlY2suIEZpbmFsbHksIEkmIzM5O2xsIG5lZWQgdG8gZG8gc29tZSBjb2RlIGFyY2hhZW9sb2d5IGFuZCBodW50IGZvciBldmVyeSBzaW5nbGUgaW5zdGFuY2Ugb2YgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBhbmQgYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gR290dGEgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2lvY3RsX3Jlc2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTEyODA9c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTMxNS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjEzMTY6c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMzE3LVx0XHRcdFx0dm9pZCBfX3VzZXIgKmFyZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNTU4PWxvbmcgdmZpb19wY2lfY29yZV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgdW5zaWduZWQgaW50IGNtZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTc2LVx0Y2FzZSBWRklPX0RFVklDRV9SRVNFVDpcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1Nzc6XHRcdHJldHVybiB2ZmlvX3BjaV9pb2N0bF9yZXNldCh2ZGV2LCB1YXJnKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1NzgtXHRjYXNlIFZGSU9fREVWSUNFX1NFVF9JUlFTOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NDQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBWRklPLVBDSSByZXNldCBtZWNoYW5pc21zOgoKKipSZXNldHRpbmcgdGhlIFZGSU8gUENJIERldmljZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSYjMzk7bSBzZWVpbmcsIHRoZXJlIGFyZSB0d28ga2V5IHBsYWNlcyB3aGVyZSByZXNldHMgYXJlIGluaXRpYXRlZCBpbiB0aGUgVkZJTy1QQ0kgZHJpdmVyLiBGaXJzdCwgdGhlIGBWRklPX0RFVklDRV9SRVNFVGAgaW9jdGwgY2FsbCDigJMgdGhhdCYjMzk7cyB0aGUgb25lIHRyaWdnZXJpbmcgdGhlIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgZnVuY3Rpb24uIEl0IHNlZW1zIGxpa2UgdGhpcyBpcyB0aGUgbWFpbiwgZ2VuZXJhbCByZXNldCBwYXRoIHdlJiMzOTtyZSB1c2luZyBhdCB0aGF0IHBvaW50LiBJJiMzOTttIGFzc3VtaW5nIHRoaXMgbWlnaHQgYmUgdGhlIGhpZ2hlci1sZXZlbCByZXNldCB0aGF0IHdlJiMzOTtyZSB0YWxraW5nIGFib3V0LgoKTm93LCB3ZSBhbHNvIGhhdmUgdGhpcyBvdGhlciBzY2VuYXJpbywgdHJpZ2dlcmVkIGJ5IGBWRklPX1BDSV9IT1RfUkVTRVRgLiBUaGF0IG9uZSBjYWxscyB0aGUgYHZmaW9fcGNpX2lvY3RsX3BjaV9ob3RfcmVzZXRgIGlvY3RsLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGEgY2FsbCB0byBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBTbyB0aGlzIGFwcGVhcnMgdG8gYmUgdGhlIG1lY2hhbmlzbSBmb3IgZGVhbGluZyB3aXRoICYjMzQ7aG90IHJlc2V0cyYjMzQ7LiBUaGF0IG1lYW5zIHdlIGhhdmUgc29tZSBkaWZmZXJlbnQgY29kZSBwYXRoIHRoYXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGVzZS4gVGhhdCBjb3VsZCBiZSB3aGVyZSBteSBjb2RlIHdvdWxkIGRpZmZlcmVudGlhdGUgZm9yIHRoZSB0eXBlIG9mIHJlc2V0IG9yIGV2ZW4gdGhlIHR5cGUgb2YgZGV2aWNlLgoKSXQgbG9va3MgbGlrZSB0aGUgZHJpdmVyIGhhcyBzZXBhcmF0ZSwgYnV0IHJlbGF0ZWQsIHJvdXRpbmVzIHRvIGhhbmRsZSB0aGVzZSBkaWZmZXJlbnQgcmVzZXQgdHlwZXMsIGJvdGggc3RlbW1pbmcgZnJvbSB0aGUgaW9jdGwgbGF5ZXIuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIHdvdWxkIGV4cGVjdCBmb3IgYSByb2J1c3QgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI2NT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9kZXZfc2V0X3RyeV9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0KTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI2NjpzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNjctXHRcdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19wY2lfZ3JvdXBfaW5mbyAqZ3JvdXBzLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE0MjU9dmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldF9ncm91cHMoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE0OTItXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxNDkzOlx0cmV0ID0gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cdTAwM2V2ZGV2LmRldl9zZXQsIFx1MDAyNmluZm8sIE5VTEwpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTQ5NC1cbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNTAzPXN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTUyOC1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1Mjk6XHRyZXR1cm4gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cdTAwM2V2ZGV2LmRldl9zZXQsIE5VTEwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTMwLVx0XHRcdFx0XHQgIHZmaW9faW9tbXVmZF9kZXZpY2VfaWN0eChcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpKTtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0yNTExPXN0YXRpYyBpbnQgdmZpb19wY2lfZGV2X3NldF9wbV9ydW50aW1lX2dldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1MzEtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNTMyOnN0YXRpYyBpbnQgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQoc3RydWN0IHZmaW9fZGV2aWNlX3NldCAqZGV2X3NldCxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1MzMtXHRcdFx0XHQgICAgICBzdHJ1Y3QgdmZpb19wY2lfZ3JvdXBfaW5mbyAqZ3JvdXBzLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3MDAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAzMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBWRklPIFBDSSBSZXNldCBMb2NrIENoYW5nZSoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgbWFraW5nIGEgc2lnbmlmaWNhbnQgYWRqdXN0bWVudCB0byBob3cgbG9ja3MgYXJlIG1hbmFnZWQgZHVyaW5nIHRoZSByZXNldCBwcm9jZXNzIHdpdGhpbiB0aGUgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBmdW5jdGlvbi4gSXQgc2VlbXMgdGhlIGtleSBjaGFuZ2UgaXMgZHJvcHBpbmcgdGhlIGB2ZGV2LSZndDttZW1vcnlfbG9ja2AgKmJlZm9yZSogY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdoaWNoIGlzIGEgZGVwYXJ0dXJlIGZyb20gdGhlIHByZXZpb3VzIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuIFRoZSBub3RlIG1lbnRpb25zIHRoYXQgdGhlIFBDSSBjb3JlIHdpbGwgcmVhY3F1aXJlIHRoZSBsb2NrIHRocm91Z2ggYSBgLnJlc2V0X3ByZXBhcmVgIGhvb2ssIGFuZCB0aGUgYWRkaXRpb24gb2YgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdCBjb25maXJtcyB0aGlzIG5ldyBpbnRlcmFjdGlvbiBwYXR0ZXJuIHdpdGggdGhlIFBDSSBjb3JlJiMzOTtzIHJlc2V0IG1lY2hhbmlzbS4KClRoaXMgY2hhbmdlIGlzIGRlZmluaXRlbHkgd29ydGggdGFraW5nIGEgY2xvc2VyIGxvb2sgYXQsIGVzcGVjaWFsbHkgaW4gdGhlIGNvbnRleHQgb2YgZnV6emluZy4gSXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgVkZJTyBQQ0ksIGFuZCwgZ2l2ZW4gaXQmIzM5O3MgZXhwb3NlZCB2aWEgYW4gaW9jdGwsIGl0JiMzOTtzIGFjY2Vzc2libGUgYW5kIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB3ZSBmdXp6IGl0IGVmZmVjdGl2ZWx5PyBGb3J0dW5hdGVseSwgeWVzLCB0aGUgZG9jdW1lbnRhdGlvbiBzaG91bGQgYmUgaW4gb3JkZXIgYW5kIHN5emthbGxlciBkb2VzIHN1cHBvcnQgVkZJTyBhbmQgYmluZGluZyBkZXZpY2VzIHRvIHZmaW8tcGNpLCBzbyB3ZSBzaG91bGQgYmUgZ29vZCB0byBnby4KCkJlZm9yZSB3ZSBnZXQgc3RhcnRlZCwgbGV0JiMzOTtzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBWRklPX1BDSSBLY29uZmlnIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGlzIGFzIGV4cGVjdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9Mj1tZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1OmNvbmZpZyBWRklPX1BDSV9DT1JFXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNi1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTktXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy0xMS1cdGRlZl9ib29sIHkgaWYgIVMzOTBcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTQ6Y29uZmlnIFZGSU9fUENJXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IFBDSSBkZXZpY2VcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9MjM9aWYgVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMjUtXHRib29sIFwmIzM0O0dlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MzQ6Y29uZmlnIFZGSU9fUENJX0lHRFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTM1LVx0Ym9vbCBcJiMzNDtHZW5lcmljIFZGSU8gUENJIGV4dGVuc2lvbnMgZm9yIEludGVsIGdyYXBoaWNzIChHVlQtZClcJiMzNDtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc9NDU9ZW5kaWZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00Ni1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjU4OmNvbmZpZyBWRklPX1BDSV9ETUFCVUZcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy01OS1cdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcdTAwMjZcdTAwMjYgUENJX1AyUERNQSBcdTAwMjZcdTAwMjYgRE1BX1NIQVJFRF9CVUZGRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODgzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgc2l0dWF0aW9uOgoKKipWRklPX1BDSSBEZWVwIERpdmUqKgoKT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSYjMzk7bSB3b3JraW5nIHdpdGggaXMgYFZGSU9fUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7UmlnaHQsIGxldCYjMzk7cyBlc3RhYmxpc2ggYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIHRoaXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGtub3cgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHRpZSBpbnRvIGBWRklPX1BDSWAmIzM0Oy4gSSYjMzk7bSBub3QganVzdCBnb2luZyB0byBibGluZGx5IGRpdmUgaW47IGEgdGhvcm91Z2ggY2hlY2sgb2Ygd2hhdCB0aGlzIHJlbGllcyBvbiBpcyBjcnVjaWFsIGZvciB0cm91Ymxlc2hvb3Rpbmcgb3IgbW9kaWZpY2F0aW9uIGxhdGVyLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGZpdHMgaW50byB0aGUgd2hvbGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMTA6XHRjb25maWcgVkZJT19QQ0lfSU5UWFxuICAxMTpcdFx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxuICAxMjpcdFx0ZGVwZW5kcyBvbiBWRklPX1BDSV9DT1JFXG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIFZGSU9fUENJXG4gIDE1Olx0XHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIFZGSU8gc3VwcG9ydCBmb3IgYW55IFBDSSBkZXZpY2VcJiMzNDtcbiAgMTY6XHRcdHNlbGVjdCBWRklPX1BDSV9DT1JFXG4gIDE3Olx0XHRoZWxwXG4gIDE4Olx0XHQgIFN1cHBvcnQgZm9yIHRoZSBnZW5lcmljIFBDSSBWRklPIGJ1cyBkcml2ZXIgd2hpY2ggY2FuIGNvbm5lY3QgYW55XG4gIDE5Olx0XHQgIFBDSSBkZXZpY2UgdG8gdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAyMDpcdFxuICAyMTpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiAgMjI6XHRcbiAgMjM6XHRpZiBWRklPX1BDSVxuICAyNDpcdGNvbmZpZyBWRklPX1BDSV9WR0FcbiAgMjU6XHRcdGJvb2wgXCYjMzQ7R2VuZXJpYyBWRklPIFBDSSBzdXBwb3J0IGZvciBWR0EgZGV2aWNlc1wmIzM0O1xuICAyNjpcdFx0ZGVwZW5kcyBvbiBYODYgXHUwMDI2XHUwMDI2IFZHQV9BUkJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgU3VwcG9ydCBmb3IgVkdBIGV4dGVuc2lvbiB0byBWRklPIFBDSS4gIFRoaXMgZXhwb3NlcyBhbiBhZGRpdGlvbmFsXG4gIDI5Olx0XHQgIHJlZ2lvbiBvbiBWR0EgZGV2aWNlcyBmb3IgYWNjZXNzaW5nIGxlZ2FjeSBWR0EgYWRkcmVzc2VzIHVzZWQgYnlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzMzOAoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIFZGSU8gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgaW1tZWRpYXRlbHkgZGlyZWN0ZWQgdG93YXJkcyBgVkZJT19QQ0lgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gSSBleHBlY3QgdG8gYmUgaW52b2x2ZWQgaW4gdGhlIHZpcnR1YWxpemF0aW9uIHByb2Nlc3MuIFRoYXQmIzM5O3MgdGhlIG1vZHVsZSBJIGFsd2F5cyBzdGFydCB3aXRoIHdoZW4gY29uZmlndXJpbmcgYSBQQ0kgcGFzc3Rocm91Z2guCgpCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byBpbmNsdWRlIGBWRklPYCBhcyB3ZWxsLiBPZiBjb3Vyc2UhIEl0JiMzOTtzIHRoZSBvdmVyYXJjaGluZyBmcmFtZXdvcmssIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggYFZGSU9fUENJYCBzaXRzLiBUaGUgUENJLXNwZWNpZmljIHBhcnQgaXMgaW1wb3J0YW50IHRvIG1hbmFnZSB0aGUgcGFzc3Rocm91Z2ggb2YgdGhlIHBoeXNpY2FsIGRldmljZSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLCBidXQgSSBjYW4mIzM5O3QgZm9yZ2V0IHRoZSBiYXNlIGBWRklPYCBtb2R1bGUgdGhhdCBwcm92aWRlcyB0aGUgY29yZSBkZXZpY2UgYXNzaWdubWVudCBjYXBhYmlsaXRpZXMuIFRoZXNlIGFyZSBib3RoIG9idmlvdXNseSBuZWNlc3NhcnkgZm9yIGl0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBWRklPJCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy92ZmlvL0tjb25maWc6MjptZW51Y29uZmlnIFZGSU9cbmRyaXZlcnMvdmZpby9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2MzgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0aGUgbWF0dGVyOgoKKipWRklPIERlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIHNvbGlkIGhhbmRsZSBvbiB0aGUgYFZGSU9gIGRlcGVuZGVuY2llcy4gQmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBhbnkgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb3IgY29uZmlndXJhdGlvbiwgaXQmIzM5O3MgY3JpdGljYWwgdG8gZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW4gcGxhY2UuIFRoaXMgbWVhbnMgc3lzdGVtYXRpY2FsbHkgaWRlbnRpZnlpbmcgYW5kIHZlcmlmeWluZyB0aGUgdW5kZXJseWluZyBsaWJyYXJpZXMsIGtlcm5lbCBtb2R1bGVzLCBhbmQgYW55IG90aGVyIHJlcXVpcmVkIGNvbXBvbmVudHMgdGhhdCBgVkZJT2AgcmVsaWVzIHVwb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgdGhpcyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQuIEkgd2lsbCBhcHByb2FjaCB0aGlzIHN5c3RlbWF0aWNhbGx5LCBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbWlzc2luZyBwaWVjZXMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSSB3YW50IGEgY2xlYW4sIHdlbGwtdW5kZXJzdG9vZCBmb3VuZGF0aW9uIGJlZm9yZSBwcm9jZWVkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudWNvbmZpZyBWRklPXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXCYjMzQ7XG4gICA0Olx0XHRzZWxlY3QgSU9NTVVfQVBJXG4gICA1Olx0XHRkZXBlbmRzIG9uIElPTU1VRkQgfHwgIUlPTU1VRkRcbiAgIDY6XHRcdHNlbGVjdCBJTlRFUlZBTF9UUkVFXG4gICA3Olx0XHRzZWxlY3QgVkZJT19HUk9VUCBpZiBTUEFQUl9UQ0VfSU9NTVUgfHwgSU9NTVVGRD1uXG4gICA4Olx0XHRzZWxlY3QgVkZJT19ERVZJQ0VfQ0RFViBpZiAhVkZJT19HUk9VUFxuICAgOTpcdFx0c2VsZWN0IFZGSU9fQ09OVEFJTkVSIGlmIElPTU1VRkQ9blxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBWRklPIHByb3ZpZGVzIGEgZnJhbWV3b3JrIGZvciBzZWN1cmUgdXNlcnNwYWNlIGRldmljZSBkcml2ZXJzLlxuICAxMjpcdFx0ICBTZWUgRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8ucnN0IGZvciBtb3JlIGRldGFpbHMuXG4gIDEzOlx0XG4gIDE0Olx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAxNTpcdFxuICAxNjpcdGlmIFZGSU9cbiAgMTc6XHRjb25maWcgVkZJT19ERVZJQ0VfQ0RFVlxuICAxODpcdFx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciB0aGUgVkZJTyBjZGV2IC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIElPTU1VRkQgXHUwMDI2XHUwMDI2ICFTUEFQUl9UQ0VfSU9NTVVcbiAgMjA6XHRcdGRlZmF1bHQgIVZGSU9fR1JPVVBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE3MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8vUENJIFJlc2V0IEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBjb25maWd1cmF0aW9uczogYFZGSU9gIGFuZCBgVkZJT19QQ0lgLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcywgd2hhdCBhYm91dCB0aGUgZm9jdXMgc3ltYm9scyBoZXJlPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJlc2V0IGxvZ2ljIGlzIHN0cnVjdHVyZWQuIFJpZ2h0LCBzbyB0aGlzIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBJdCBhbHNvIGludHJvZHVjZXMgdHdvIG5ldyBmdW5jdGlvbnM6IGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmVgIGFuZCBgdmZpb19wY2lfY29yZV9yZXNldF9kb25lYC4gTXkgZ3V0IHRlbGxzIG1lIEkgc2hvdWxkIGNoZWNrIGlmIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgaXMgc3RhdGljLiBZZXMsIGl0JiMzOTtzIGEgc3RhdGljIGZ1bmN0aW9uLiBOb3cgaG9sZCBvbiwgdGhlIGFjdHVhbCBlbnRyeSBwb2ludCBpcyBgdmZpb19wY2lfY29yZV9pb2N0bGAsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHdpdGhpbiB0aGUgbGFyZ2VyIGlvY3RsIHN5c3RlbS4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19wY2lfY29yZV9pb2N0bCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU4Ni1cdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODc6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg4LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gaGlzaV9hY2NfdmZpb19pb2N0bF9nZXRfcmVnaW9uLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNTg5Olx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTkwLVx0LnJlYWQgPSBoaXNpX2FjY192ZmlvX3BjaV9yZWFkLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM9MTYwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBoaXNpX2FjY192ZmlvX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA3LVx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNjA4Olx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYwOS1cdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fcGNpX2lvY3RsX2dldF9yZWdpb25faW5mbyxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTYxMDpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTYxMS1cdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zMzU9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaXNtX3BjaV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0MC1cdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozNDE6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0Mi1cdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IGlzbV92ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmM6MzQzOlx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0NC1cdC5yZWFkID0gaXNtX3ZmaW9fcGNpX3JlYWQsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmMtMTM5MS1cdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTM5MjpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTMtXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzOTQ6XHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTUtXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz01ODk9c3RhdGljIGxvbmcgbnZncmFjZV9ncHVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTk4LVx0ZGVmYXVsdDpcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jOjU5OTpcdFx0cmV0dXJuIHZmaW9fcGNpX2NvcmVfaW9jdGwoY29yZV92ZGV2LCBjbWQsIGFyZyk7XG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy02MDAtXHR9XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA2NT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzItXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSBudmdyYWNlX2dwdV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDczOlx0LmRldmljZV9mZWF0dXJlXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzQtXHQucmVhZFx0XHQ9IG52Z3JhY2VfZ3B1X3JlYWQsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9MTA5MD1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBudmdyYWNlX2dwdV9wY2lfY29yZV9vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5NS1cdC5jbG9zZV9kZXZpY2VcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDk2Olx0LmlvY3RsXHRcdD0gdmZpb19wY2lfY29yZV9pb2N0bCxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwOTctXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDk4Olx0LmRldmljZV9mZWF0dXJlXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwOTktXHQucmVhZFx0XHQ9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBwZHNfdmZpb19vcHMgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTYtXHQuY2xvc2VfZGV2aWNlID0gcGRzX3ZmaW9fY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYzoxOTc6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTgtXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jOjE5OTpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmMtMjAwLVx0LnJlYWQgPSB2ZmlvX3BjaV9jb3JlX3JlYWQsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jPTYwND1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBxYXRfdmZfcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjA5LVx0LmNsb3NlX2RldmljZSA9IHFhdF92Zl9wY2lfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jOjYxMDpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjExLVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0xNDk9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTQtXHQuY2xvc2VfZGV2aWNlXHQ9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NTpcdC5pb2N0bFx0XHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMTU2LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NzpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTgtXHQucmVhZFx0XHQ9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYz0xNTMzPXN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfaW9ldmVudGZkKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTU3LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTU1ODpsb25nIHZmaW9fcGNpX2NvcmVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHVuc2lnbmVkIGludCBjbWQsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTU5LVx0XHRcdCB1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTgzLX1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1ODQ6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9pb2N0bCk7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTg1LVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTU4Nj1zdGF0aWMgaW50IHZmaW9fcGNpX2NvcmVfZmVhdHVyZV90b2tlbihzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTYxMi1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE2MTM6aW50IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSwgdTMyIGZsYWdzLFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTYxNC1cdFx0XHRcdHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNjM0LX1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE2MzU6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE2MzYtXG4tLVxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtODktXHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo5MDpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTEtXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6OTI6XHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTMtXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX3RyYW5fbG1fb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTEtXHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMTI6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExMy1cdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZpcnRpb3ZmX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTE0Olx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTExNS1cdC5yZWFkID0gdmlydGlvdmZfcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM9MTI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTMzLVx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzNDpcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTM1LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzNjpcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzctXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xuLS1cbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUyNy1cdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1Mjg6XHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI5LVx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6NTMwOlx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTMxLVx0LnJlYWQgPSB2ZmlvX3BjaV9jb3JlX3JlYWQsXG4tLVxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MTcyPWludCB2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0xNzMtXHRcdFx0XHQgIGludCBucl92aXJ0Zm4pO1xuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg6MTc0OmxvbmcgdmZpb19wY2lfY29yZV9pb2N0bChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgdW5zaWduZWQgaW50IGNtZCxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3NS1cdFx0dW5zaWduZWQgbG9uZyBhcmcpO1xuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg6MTc2OmludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3Ny1cdFx0XHRcdHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNDc1CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcyBwcmVzZW50ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBWRklPIFBDSSBDb3JlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgY2xlYXJseSBjZW50ZXJlZCBhcm91bmQgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5IGlvY3RsIGhhbmRsZXIsIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBpbnRlcmFjdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgSSYjMzk7bGwgZGVmaW5pdGVseSBsaXN0IHRoYXQgYXMgdGhlIGZvY3VzIHN5bWJvbCBmb3IgdGhlIHBhdGNoLiBUaGUgcGF0Y2ggYWxzbyBhZGRzIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmVgIGFuZCBgdmZpb19wY2lfY29yZV9yZXNldF9kb25lYCB0byBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgLiBUaGVzZSByZXNldCBmdW5jdGlvbnMgYXJlIHN0YXRpYy4gVGhlIFBDSSBjb3JlIGRpcmVjdGx5IGNhbGxzIHRob3NlLCBzbyBpdCBpcyBhbiBpbnRlcmVzdGluZyBwb2ludCBvZiBkaXNjdXNzaW9uLCBidXQgc3RpbGwsIGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBpcyB0aGUgbWFpbiBmb2N1cy4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0byBjbGVhcmx5IG5vdGUgd2hlcmUgdGhleSBhcmUgYmVpbmcgY2FsbGVkIGZyb20uIEkgc2F3IFNSSU9WIGNvbmZpZ3VyYXRpb24gbWVudGlvbmVkIGJ1dCBpdCYjMzk7cyBqdXN0IGFkamFjZW50IHRvIHRob3NlIG5ldyByZXNldCBob29rcyBpbiB0aGUgcGF0Y2gsIHNvIHRoZSBTUklPViByb3V0aW5lIGl0c2VsZiBpc24mIzM5O3QgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQsIGl0IGlzIGp1c3QgaW4gdGhlIG5laWdoYm9yaG9vZC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdHVyZSwganVzdCB0byBiZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuIFRoYXQmIzM5O3Mgd2hlcmUgSSBuZWVkIHRvIGRpZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYz0zOTU9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGlzbV92ZmlvX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM5OS1cdC5yZW1vdmUgPSBpc21fdmZpb19wY2lfcmVtb3ZlLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjQwMDpcdC5lcnJfaGFuZGxlciA9IFx1MDAyNnZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzLFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTQwMS1cdC5kcml2ZXJfbWFuYWdlZF9kbWEgPSB0cnVlLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0yMjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHZmaW9fcGNpX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMjMxLVx0LnNyaW92X2NvbmZpZ3VyZVx0PSB2ZmlvX3BjaV9zcmlvdl9jb25maWd1cmUsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM6MjMyOlx0LmVycl9oYW5kbGVyXHRcdD0gXHUwMDI2dmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMsXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmMtMjMzLVx0LmRyaXZlcl9tYW5hZ2VkX2RtYVx0PSB0cnVlLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI0MzU9c3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0NDUtXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDQ2OmNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMgPSB7XG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDQ3LVx0LmVycm9yX2RldGVjdGVkID0gdmZpb19wY2lfY29yZV9hZXJfZXJyX2RldGVjdGVkLFxuLS1cbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0NTAtfTtcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0NTE6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMpO1xuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMjQ1Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaD0xNzA9dm9pZCB2ZmlvX3BjaV9jb3JlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldik7XG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaDoxNzE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnM7XG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0xNzItaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMjE6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM2MjAKCQkJCQkJCW91dHB1dDogMTIzCgkJCQkJCQl0aG91Z2h0czogNTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBWRklPIFBDSSBSZXNldCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmaW5kIGEgZ29vZCBlbnRyeSBwb2ludCBzeW1ib2wuIEkgc3RhcnRlZCBieSBsb29raW5nIGF0IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBhcyBhIHBvdGVudGlhbCBmb2N1cy4gSSBjb25zaWRlcmVkIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIGJ1dCB0aGF0JiMzOTtzIGEgc3RydWN0LCBub3QgYSBmdW5jdGlvbi4gVGhlIGFjdHVhbCByZXNldCBmdW5jdGlvbnMsIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmVgIGFuZCBgdmZpb19wY2lfY29yZV9yZXNldF9kb25lYCwgYXJlIHN0YXRpYywgc28gdGhleSYjMzk7cmUgbm90IGdvaW5nIHRvIGJlIHZpc2libGUgc3ltYm9scyBkaXJlY3RseS4gVGhlbiBJIGZvdW5kIHRoYXQgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIGlzIGV4cG9ydGVkLCBhbmQgdGhlcmVmb3JlLCB2aXNpYmxlLiBBbHNvLCBJIHJlYWxpemVkIHRoYXQgYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YCBhbmQgYHZmaW9fcGNpX2lvY3RsX3BjaV9ob3RfcmVzZXRgIGFyZSBzdGF0aWMuIFRoZXJlZm9yZSwgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludC4KCkkgY2hlY2tlZCB0byBzZWUgaWYgYW55IG90aGVyIGV4cG9ydGVkIGZ1bmN0aW9ucyBoYWQgYmVlbiBtb2RpZmllZCwgYnV0IG5vLCBpdCBzZWVtcyBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgdGhlIG1haW4gb25lIGFuZCBjYWxscyBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldGAuIFNvLCBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgZGVmaW5pdGVseSB0aGUgbWFpbiBmb2N1cy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGtlcm5lbCBjb25maWdzLiBJIGNvbmZpcm1lZCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgYXJlIGltcG9ydGFudC4gSSBjaGVja2VkIHRvIHNlZSBpZiB0aGVyZSB3ZXJlIGFueSBvdGhlciBjb25maWdzLCBhbmQgZm91bmQgYFZGSU9fUENJX0NPUkVgIGlzIHNlbGVjdGVkIGJ5IGBWRklPX1BDSWAuIFNvLCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgYWxvbmUgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gZW5hYmxlIHRoZSByZWxldmFudCBjb2RlLgoKU3VtbWFyaXppbmcgbXkgZmluZGluZ3MsIHRoaXMgcGF0Y2ggaXMgKndvcnRoIGZ1enppbmcqIGJlY2F1c2UgaXQgdG91Y2hlcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zLCBib3RoIHJlZ3VsYXIgZGV2aWNlIHJlc2V0cyBhbmQgaG90IHJlc2V0cy4gVGhlc2UgcmVzZXRzIGFyZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB2ZmlvLXBjaSB2aWEgdGhlIGBWRklPX0RFVklDRV9SRVNFVGAgYW5kIGBWRklPX0RFVklDRV9QQ0lfSE9UX1JFU0VUYCBpb2N0bHMuIFRoZSBtYWluIGZvY3VzIHN5bWJvbCBmb3IgZnV6emluZyBpcyBkZWZpbml0ZWx5IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYC4gQXMgZm9yIGVuYWJsZSBjb25maWdzLCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgd2lsbCBiZSBlbm91Z2guIEkgZGlkIG5vdGUgdGhhdCBgVkZJT2AgZGVwZW5kcyBvbiBgSU9NTVVGRGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBpdCYjMzk7cyBnb29kIHRvIGhhdmUgaXQsIGJ1dCBub3Qgc3RyaWN0bHkgcmVxdWlyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtWRklPJiMzNDssCiAgICAmIzM0O1ZGSU9fUENJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dmZpb19wY2lfY29yZV9pb2N0bCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYTBiYjFlNzBjMjA1MzQyZDUzMTcyNTRhNjc4NTYyNDU1NzUxYzRmNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCmluZGV4IGExMTNjNTU4NDVlMTAuLmU0NmIwYjFkOGE1OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jCkBAIC0xMzM0LDEyICYjNDM7MTMzNCwxNCBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2lvY3RsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwKIAkgKi8KIAl2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTsKIAotCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTsKLQlyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtJmd0O3BkZXYpOwotCWlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKQotCQl2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpOwomIzQzOwkvKgomIzQzOwkgKiBEcm9wIHRoZSBsb2NrIGJlZm9yZSBlbnRlcmluZyB0aGUgUENJIGNvcmUuCiYjNDM7CSAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLgomIzQzOwkgKi8KIAl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKIAomIzQzOwlyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtJmd0O3BkZXYpOwomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTI0MTgsOCAmIzQzOzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiwKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKTsKIAomIzQzO3N0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKJiM0Mzt7CiYjNDM7CXN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YSgmYW1wO3BkZXYtJmd0O2Rldik7CiYjNDM7CiYjNDM7CWlmICh2ZGV2KSB7CiYjNDM7CQlkb3duX3dyaXRlKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spOwomIzQzOwkJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiYjNDM7CQl2ZmlvX3BjaV96YXBfYmFycyh2ZGV2KTsKJiM0MzsJCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTsKJiM0MzsJfQomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoJmFtcDtwZGV2LSZndDtkZXYpOwomIzQzOwomIzQzOwlpZiAodmRldikgewomIzQzOwkJaWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpCiYjNDM7CQkJdmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTsKJiM0MzsJCXVwX3dyaXRlKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spOwomIzQzOwl9CiYjNDM7fQomIzQzOwogY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHsKIAkuZXJyb3JfZGV0ZWN0ZWQgPSB2ZmlvX3BjaV9jb3JlX2Flcl9lcnJfZGV0ZWN0ZWQsCiYjNDM7CS5yZXNldF9wcmVwYXJlID0gdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlLAomIzQzOwkucmVzZXRfZG9uZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZSwKIH07CiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyk7CiAKQEAgLTI1NjEsNTUgJiM0MzsyNTg4LDUyIEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQoc3RydWN0IHZmaW9fZGV2aWNlX3NldCAqZGV2X3NldCwKIAogCQlpZiAoIW93bmVkKSB7CiAJCQlyZXQgPSAtRUlOVkFMOwotCQkJYnJlYWs7CiYjNDM7CQkJZ290byBlcnJfb3V0OwogCQl9CiYjNDM7CX0KIAomIzQzOwkvKiBaYXAsIGFuZCBzZXQgcG93ZXIgc3RhdGUgKi8KJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkgewogCQkvKgotCQkgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UgYW5kIHphcCBCQVIKLQkJICogbWFwcGluZ3MgdG8gcHJldmVudCB0aGUgdXNlciBhY2Nlc3NpbmcgdGhlIGRldmljZSB3aGlsZSBpbgotCQkgKiByZXNldC4gIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jaywKJiM0MzsJCSAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSwgemFwIEJBUgomIzQzOwkJICogbWFwcGluZ3MsIGFuZCByZXN0b3JlIHBvd2VyIHN0YXRlIGJlZm9yZSByZXNldC4KJiM0MzsJCSAqIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jaywKIAkJICogcnVuYXdheSBhbmQgdW53aW5kIGlmIHdlIGhpdCBjb250ZW50aW9uLgogCQkgKi8KIAkJaWYgKCFkb3duX3dyaXRlX3RyeWxvY2soJmFtcDt2ZGV2LSZndDttZW1vcnlfbG9jaykpIHsKIAkJCXJldCA9IC1FQlVTWTsKLQkJCWJyZWFrOwomIzQzOwomIzQzOwkJCS8qCiYjNDM7CQkJICogV2UgZmFpbGVkIHRvIGxvY2sgVEhJUyBkZXZpY2UuIFdlIG11c3Qgc3RlcCBiYWNrIG9uZQomIzQzOwkJCSAqIGRldmljZSBzbyBlcnJfdW5kbyBvbmx5IHVubG9ja3MgZGV2aWNlcyB0aGF0IHN1Y2NlZWRlZC4KJiM0MzsJCQkgKi8KJiM0MzsJCQlpZiAoIWxpc3RfZW50cnlfaXNfaGVhZCh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHsKJiM0MzsJCQkJdmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7CiYjNDM7CQkJCWdvdG8gZXJyX3VuZG87CiYjNDM7CQkJfQomIzQzOwkJCWdvdG8gZXJyX291dDsKIAkJfQogCi0JCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTsKIAkJdmZpb19wY2lfemFwX2JhcnModmRldik7CiYjNDM7CQl2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTsKIAl9CiAKLQlpZiAoIWxpc3RfZW50cnlfaXNfaGVhZCh2ZGV2LAotCQkJCSZhbXA7ZGV2X3NldC0mZ3Q7ZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSkgewotCQl2ZGV2ID0gbGlzdF9wcmV2X2VudHJ5KHZkZXYsIHZkZXYuZGV2X3NldF9saXN0KTsKLQkJZ290byBlcnJfdW5kbzsKLQl9Ci0KLQkvKgotCSAqIFRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCByZXNldCBhbGwgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy4KLQkgKiBUaGUgcG93ZXIgc3RhdGUgY2FuIGJlIG5vbi1EMCBmb3Igc29tZSBvZiB0aGUgZGV2aWNlcyBpbiB0aGUgYnVzLgotCSAqIEZvciB0aGVzZSBkZXZpY2VzLCB0aGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgaW50ZXJuYWxseSBzZXQKLQkgKiB0aGUgcG93ZXIgc3RhdGUgdG8gRDAgd2l0aG91dCB2ZmlvIGRyaXZlciBpbnZvbHZlbWVudC4KLQkgKiBGb3IgdGhlIGRldmljZXMgd2hpY2ggaGF2ZSBOb1NvZnRSc3QtLCB0aGUgcmVzZXQgZnVuY3Rpb24gY2FuCi0JICogY2F1c2UgdGhlIFBDSSBjb25maWcgc3BhY2UgcmVzZXQgd2l0aG91dCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsCi0JICogc3RhdGUgKHNhdmVkIGxvY2FsbHkgaW4gJiMzOTt2ZGV2LSZndDtwbV9zYXZlJiMzOTspLgotCSAqLwomIzQzOwkvKiBEcm9wIGxvY2tzIGJlZm9yZSBjcm9zc2luZyBpbnRvIFBDSSBjb3JlICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkKLQkJdmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7CiYjNDM7CQl1cF93cml0ZSgmYW1wO3ZkZXYtJmd0O21lbW9yeV9sb2NrKTsKIAomIzQzOwkvKiBQQ0kgY29yZSBoYW5kbGVzIHRoZSByZXNldCBhbmQgY2FsbHMgLnJlc2V0IGhvb2tzICovCiAJcmV0ID0gcGNpX3Jlc2V0X2J1cyhwZGV2KTsKIAotCXZkZXYgPSBsaXN0X2xhc3RfZW50cnkoJmFtcDtkZXZfc2V0LSZndDtkZXZpY2VfbGlzdCwKLQkJCSAgICAgICBzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UsIHZkZXYuZGV2X3NldF9saXN0KTsKJiM0MzsJZ290byBlcnJfb3V0OwogCiBlcnJfdW5kbzoKJiM0MzsJLyogVW53aW5kIGxvY2tzIGNsZWFubHkgZm9yIGRldmljZXMgd2Ugc3VjY2Vzc2Z1bGx5IGxvY2tlZCAqLwogCWxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsICZhbXA7ZGV2X3NldC0mZ3Q7ZGV2aWNlX2xpc3QsCi0JCQkJCSB2ZGV2LmRldl9zZXRfbGlzdCkgewotCQlpZiAodmRldi0mZ3Q7dmRldi5vcGVuX2NvdW50ICZhbXA7JmFtcDsgX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSkKLQkJCXZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7CiYjNDM7CQkJCQkgdmRldi5kZXZfc2V0X2xpc3QpCiAJCXVwX3dyaXRlKCZhbXA7dmRldi0mZ3Q7bWVtb3J5X2xvY2spOwotCX0KIAomIzQzO2Vycl9vdXQ6CiAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCAmYW1wO2Rldl9zZXQtJmd0O2RldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkKIAkJcG1fcnVudGltZV9wdXQoJmFtcDt2ZGV2LSZndDtwZGV2LSZndDtkZXYpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAyMToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjQ0CgkJCQkJCQlvdXRwdXQ6IDE4NQoJCQkJCQkJdGhvdWdodHM6IDk0NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFZGSU8gUENJIExvY2tpbmcgRml4KioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgLiBJdCYjMzk7cyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCB0aGUgbG9ja2luZyBhcm91bmQgUENJIHJlc2V0IG9wZXJhdGlvbnMg4oCTIHNwZWNpZmljYWxseSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBJdCYjMzk7cyBhIHByZXR0eSB0YXJnZXRlZCBjaGFuZ2UsIHJlYWxseSBkcmlsbGluZyBkb3duIG9uIHRoZSBzeW5jaHJvbml6YXRpb24uCgpNeSBpbW1lZGlhdGUgaW1wcmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgYSAqZ29vZCogdGhpbmcuIFRoZXkmIzM5O3JlIGFkZGluZyBgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlYCBhbmQgYHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZWAgaG9va3MgdG8gdGhlIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIHdoaWNoIGlzIGEgc21hcnQgbW92ZS4gVGhleSYjMzk7cmUgY2xlYXJseSB0cnlpbmcgdG8gYXZvaWQgcG90ZW50aWFsIGRlYWRsb2NrcyBvciBsb2NrIG9yZGVyIHJldmVyc2FscyBkdXJpbmcgUENJIHJlc2V0IHNlcXVlbmNlcy4gVGhlIGNvcmUgb2YgdGhlIGlzc3VlIHNlZW1zIHRvIGJlIGhvdyB0aGUgY29kZSB3YXMgbWFuYWdpbmcgYHZkZXYtJmd0O21lbW9yeV9sb2NrYCDigJMgc3BlY2lmaWNhbGx5IGBkb3duX3dyaXRlYCBhbmQgYHVwX3dyaXRlYCBhcm91bmQgdGhlIGNyaXRpY2FsIHNlY3Rpb25zIGludm9sdmluZyBwb3dlciBzdGF0ZSB0cmFuc2l0aW9ucyBhbmQgRE1BIGJ1ZmZlciBtYW5hZ2VtZW50LgoKTG9va2luZyBjbG9zZWx5IGF0IHRoZSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGRpZmYsIHRoZSBrZXkgY2hhbmdlIGlzIGRyb3BwaW5nIHRoZSBsb2NrIChgdXBfd3JpdGVgKSBiZWZvcmUgY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdpdGggdGhlIFBDSSBjb3JlIHJlLWFjcXVpcmluZyBpdCB2aWEgdGhlIGAucmVzZXRfcHJlcGFyZWAgaG9vay4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3RyYXRlZ3kgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGZvciBhdm9pZGluZyBsb2NrIGNvbnRlbnRpb24gd2hlbiBkZWFsaW5nIHdpdGggc2hhcmVkIHJlc291cmNlcyBpbiBhIG11bHRpLXRocmVhZGVkIGNvbnRleHQuIEFuZCBmcm9tIHdoYXQgSSBzZWUsIHdlIGVuc3VyZSB0aGF0IHdlIHJlLWFjcXVpcmUgaXQgbGF0ZXIuIFRoZSBgLnJlc2V0X3ByZXBhcmVgIGFuZCBgLnJlc2V0X2RvbmVgIGhvb2tzIGhhbmRsZSB0aGUgbmVjZXNzYXJ5IHN0YXRlIHRyYW5zaXRpb25zIGFuZCBETUEgYnVmZmVyIG1vdmVtZW50IHdpdGhpbiB0aGUgcHJvdGVjdGVkIGNyaXRpY2FsIHNlY3Rpb24uCgpUaGUgY29kZSBtb2RpZmljYXRpb25zIGZvciB0aGUgdHJ5X2xvY2sgYXJlIGludGVyZXN0aW5nLCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBjaGFuZ2VzIHRvIGhhbmRsaW5nIGVycl91bmRvIGFuZCBhdm9pZGluZyB1bmxvY2tpbmcgZGV2aWNlcyB3ZSBuZXZlciBsb2NrZWQgaW4gdGhlIGZpcnN0IHBsYWNlLCBtYWtlcyBzZW5zZSBpbiBhbiBhdG9taWMgY29udGV4dC4KCkNydWNpYWxseSwgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gYW55IGRhdGEgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBhbGxvY2F0aW9ucywgYW5kICphYnNvbHV0ZWx5IG5vKiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIEtBU0FOL0xPQ0tERVAgYXJlIHRoZSBtYWluIHRvb2xzIHRoYXQgd291bGQgcGljayB1cCBhbnkgbGluZ2VyaW5nIGlzc3Vlcy4gIEtNU0FOIGlzbiYjMzk7dCByZWxldmFudCBoZXJlIHNpbmNlIGl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgYSBsb2NraW5nIGlzc3VlLCBhbmQgdGhvc2UgYXJlIGNhdWdodCBieSBLQVNBTi4KClllYWgsIGl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkLCB3ZWxsLWNvbnNpZGVyZWQgbG9ja2luZyBmaXguCkkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoaXMgcGF0Y2ggcmVzb2x2ZXMgYSBwb3RlbnRpYWwgZGVhZGxvY2suCkkmIzM5O2xsIGNhbGwgaXQgc2V0LXJlc3VsdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDIxOjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NDkuODczMDg2OTg0WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjQ0OTU0OTc4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2lvY3RsXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyBpbiB0aGUgVkZJTyBQQ0kgZHJpdmVyLiBJdCBkcm9wcyBsb2NrcyBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSBQQ0kgY29yZSBhbmQgcmUtYWNxdWlyZXMgdGhlbSB2aWEgbmV3IGAucmVzZXRfcHJlcGFyZWAgYW5kIGAucmVzZXRfZG9uZWAgaG9va3MgdG8gcHJldmVudCBkZWFkbG9ja3MuIEl0IGFsc28gZml4ZXMgbG9jayB1bndpbmRpbmcgaW4gYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uIGFuZCBkZXZpY2Ugc3RhdGUsIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIGRlYWRsb2NrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0FTQU4sIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gdW5uZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyAoYm90aCBzaW5nbGUgZGV2aWNlIHJlc2V0IGFuZCBob3QgcmVzZXQpLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVkZJT19ERVZJQ0VfUkVTRVQgYW5kIFZGSU9fREVWSUNFX1BDSV9IT1RfUkVTRVQgaW9jdGxzLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIG9uIHZpcnR1YWwgUENJIGRldmljZXMgYm91bmQgdG8gdGhlIHZmaW8tcGNpIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NDkuODczMDkyMjY0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDI1MzA1OTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhMGJiMWU3MGMyMDUzNDJkNTMxNzI1NGE2Nzg1NjI0NTU3NTFjNGY1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbmluZGV4IGExMTNjNTU4NDVlMTAuLmU0NmIwYjFkOGE1OTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcXG4rKysgYi9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xcbkBAIC0xMzM0LDEyICsxMzM0LDE0IEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcmVzZXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbiBcXHQgKi9cXG4gXFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XFxuIFxcbi1cXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XFxuLVxcdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cXHUwMDNlcGRldik7XFxuLVxcdGlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKVxcbi1cXHRcXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xcbitcXHQvKlxcbitcXHQgKiBEcm9wIHRoZSBsb2NrIGJlZm9yZSBlbnRlcmluZyB0aGUgUENJIGNvcmUuXFxuK1xcdCAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLlxcbitcXHQgKi9cXG4gXFx0dXBfd3JpdGUoXFx1MDAyNnZkZXYtXFx1MDAzZW1lbW9yeV9sb2NrKTtcXG4gXFxuK1xcdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cXHUwMDNlcGRldik7XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yNDE4LDggKzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZSk7XFxuIFxcbitzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXG4rXFx0aWYgKHZkZXYpIHtcXG4rXFx0XFx0ZG93bl93cml0ZShcXHUwMDI2dmRldi1cXHUwMDNlbWVtb3J5X2xvY2spO1xcbitcXHRcXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcXG4rXFx0XFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XFxuK1xcdFxcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcXG4rXFx0fVxcbit9XFxuK1xcbitzdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuK3tcXG4rXFx0c3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbitcXG4rXFx0aWYgKHZkZXYpIHtcXG4rXFx0XFx0aWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXFxuK1xcdFxcdFxcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCBmYWxzZSk7XFxuK1xcdFxcdHVwX3dyaXRlKFxcdTAwMjZ2ZGV2LVxcdTAwM2VtZW1vcnlfbG9jayk7XFxuK1xcdH1cXG4rfVxcbitcXG4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcXG4gXFx0LmVycm9yX2RldGVjdGVkID0gdmZpb19wY2lfY29yZV9hZXJfZXJyX2RldGVjdGVkLFxcbitcXHQucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSxcXG4rXFx0LnJlc2V0X2RvbmUgPSB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUsXFxuIH07XFxuIEVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzKTtcXG4gXFxuQEAgLTI1NjEsNTUgKzI1ODgsNTIgQEAgc3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxcbiBcXG4gXFx0XFx0aWYgKCFvd25lZCkge1xcbiBcXHRcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbi1cXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbiBcXHRcXHR9XFxuK1xcdH1cXG4gXFxuK1xcdC8qIFphcCwgYW5kIHNldCBwb3dlciBzdGF0ZSAqL1xcbitcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFxcdTAwMjZkZXZfc2V0LVxcdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpIHtcXG4gXFx0XFx0LypcXG4tXFx0XFx0ICogVGFrZSB0aGUgbWVtb3J5IHdyaXRlIGxvY2sgZm9yIGVhY2ggZGV2aWNlIGFuZCB6YXAgQkFSXFxuLVxcdFxcdCAqIG1hcHBpbmdzIHRvIHByZXZlbnQgdGhlIHVzZXIgYWNjZXNzaW5nIHRoZSBkZXZpY2Ugd2hpbGUgaW5cXG4tXFx0XFx0ICogcmVzZXQuICBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssXFxuK1xcdFxcdCAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSwgemFwIEJBUlxcbitcXHRcXHQgKiBtYXBwaW5ncywgYW5kIHJlc3RvcmUgcG93ZXIgc3RhdGUgYmVmb3JlIHJlc2V0LlxcbitcXHRcXHQgKiBMb2NraW5nIG11bHRpcGxlIGRldmljZXMgaXMgcHJvbmUgdG8gZGVhZGxvY2ssXFxuIFxcdFxcdCAqIHJ1bmF3YXkgYW5kIHVud2luZCBpZiB3ZSBoaXQgY29udGVudGlvbi5cXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghZG93bl93cml0ZV90cnlsb2NrKFxcdTAwMjZ2ZGV2LVxcdTAwM2VtZW1vcnlfbG9jaykpIHtcXG4gXFx0XFx0XFx0cmV0ID0gLUVCVVNZO1xcbi1cXHRcXHRcXHRicmVhaztcXG4rXFxuK1xcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdCAqIFdlIGZhaWxlZCB0byBsb2NrIFRISVMgZGV2aWNlLiBXZSBtdXN0IHN0ZXAgYmFjayBvbmVcXG4rXFx0XFx0XFx0ICogZGV2aWNlIHNvIGVycl91bmRvIG9ubHkgdW5sb2NrcyBkZXZpY2VzIHRoYXQgc3VjY2VlZGVkLlxcbitcXHRcXHRcXHQgKi9cXG4rXFx0XFx0XFx0aWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwgXFx1MDAyNmRldl9zZXQtXFx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcXG4rXFx0XFx0XFx0XFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZXJyX3VuZG87XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbiBcXHRcXHR9XFxuIFxcbi1cXHRcXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XFxuIFxcdFxcdHZmaW9fcGNpX3phcF9iYXJzKHZkZXYpO1xcbitcXHRcXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcXG4gXFx0fVxcbiBcXG4tXFx0aWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldixcXG4tXFx0XFx0XFx0XFx0XFx1MDAyNmRldl9zZXQtXFx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcXG4tXFx0XFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XFxuLVxcdFxcdGdvdG8gZXJyX3VuZG87XFxuLVxcdH1cXG4tXFxuLVxcdC8qXFxuLVxcdCAqIFRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCByZXNldCBhbGwgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cXG4tXFx0ICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cXG4tXFx0ICogRm9yIHRoZXNlIGRldmljZXMsIHRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCBpbnRlcm5hbGx5IHNldFxcbi1cXHQgKiB0aGUgcG93ZXIgc3RhdGUgdG8gRDAgd2l0aG91dCB2ZmlvIGRyaXZlciBpbnZvbHZlbWVudC5cXG4tXFx0ICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhblxcbi1cXHQgKiBjYXVzZSB0aGUgUENJIGNvbmZpZyBzcGFjZSByZXNldCB3aXRob3V0IHJlc3RvcmluZyB0aGUgb3JpZ2luYWxcXG4tXFx0ICogc3RhdGUgKHNhdmVkIGxvY2FsbHkgaW4gJ3ZkZXYtXFx1MDAzZXBtX3NhdmUnKS5cXG4tXFx0ICovXFxuK1xcdC8qIERyb3AgbG9ja3MgYmVmb3JlIGNyb3NzaW5nIGludG8gUENJIGNvcmUgKi9cXG4gXFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcXHUwMDI2ZGV2X3NldC1cXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxcbi1cXHRcXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcXG4rXFx0XFx0dXBfd3JpdGUoXFx1MDAyNnZkZXYtXFx1MDAzZW1lbW9yeV9sb2NrKTtcXG4gXFxuK1xcdC8qIFBDSSBjb3JlIGhhbmRsZXMgdGhlIHJlc2V0IGFuZCBjYWxscyAucmVzZXQgaG9va3MgKi9cXG4gXFx0cmV0ID0gcGNpX3Jlc2V0X2J1cyhwZGV2KTtcXG4gXFxuLVxcdHZkZXYgPSBsaXN0X2xhc3RfZW50cnkoXFx1MDAyNmRldl9zZXQtXFx1MDAzZWRldmljZV9saXN0LFxcbi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlLCB2ZGV2LmRldl9zZXRfbGlzdCk7XFxuK1xcdGdvdG8gZXJyX291dDtcXG4gXFxuIGVycl91bmRvOlxcbitcXHQvKiBVbndpbmQgbG9ja3MgY2xlYW5seSBmb3IgZGV2aWNlcyB3ZSBzdWNjZXNzZnVsbHkgbG9ja2VkICovXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsIFxcdTAwMjZkZXZfc2V0LVxcdTAwM2VkZXZpY2VfbGlzdCxcXG4tXFx0XFx0XFx0XFx0XFx0IHZkZXYuZGV2X3NldF9saXN0KSB7XFxuLVxcdFxcdGlmICh2ZGV2LVxcdTAwM2V2ZGV2Lm9wZW5fY291bnQgXFx1MDAyNlxcdTAwMjYgX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcXG4tXFx0XFx0XFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcXG4rXFx0XFx0XFx0XFx0XFx0IHZkZXYuZGV2X3NldF9saXN0KVxcbiBcXHRcXHR1cF93cml0ZShcXHUwMDI2dmRldi1cXHUwMDNlbWVtb3J5X2xvY2spO1xcbi1cXHR9XFxuIFxcbitlcnJfb3V0OlxcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFxcdTAwMjZkZXZfc2V0LVxcdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpXFxuIFxcdFxcdHBtX3J1bnRpbWVfcHV0KFxcdTAwMjZ2ZGV2LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NTAuMzE2NDAyMzIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NTE4MDA1MjQ4MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVkZJT1wiLFxuICAgIFwiVkZJT19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2ZmlvX3BjaV9jb3JlX2lvY3RsXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbG9ja2luZyBhbmQgc3RhdGUgbWFuYWdlbWVudCBkdXJpbmcgVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyAoYm90aCBzaW5nbGUgZGV2aWNlIHJlc2V0IGFuZCBob3QgcmVzZXQpLiBUaGVzZSBwYXRocyBhcmUgcmVhY2hhYmxlIHZpYSB0aGUgVkZJT19ERVZJQ0VfUkVTRVQgYW5kIFZGSU9fREVWSUNFX1BDSV9IT1RfUkVTRVQgaW9jdGxzLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGZyb20gdXNlcnNwYWNlIG9uIHZpcnR1YWwgUENJIGRldmljZXMgYm91bmQgdG8gdGhlIHZmaW8tcGNpIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTBiYjFlNzBjMjA1MzQyZDUzMTcyNTRhNjc4NTYyNDU1NzUxYzRmNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDcgMjE6MTk6NDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5pbmRleCBhMTEzYzU1ODQ1ZTEwLi5lNDZiMGIxZDhhNTk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbisrKyBiL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jXG5AQCAtMTMzNCwxMiArMTMzNCwxNCBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2lvY3RsX3Jlc2V0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiBcdCAqL1xuIFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XG4gXG4tXHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4tXHRyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtXHUwMDNlcGRldik7XG4tXHRpZiAoX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcbi1cdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbitcdC8qXG4rXHQgKiBEcm9wIHRoZSBsb2NrIGJlZm9yZSBlbnRlcmluZyB0aGUgUENJIGNvcmUuXG4rXHQgKiBUaGUgUENJIGNvcmUgd2lsbCByZS1hY3F1aXJlIGl0IHZpYSBvdXIgLnJlc2V0X3ByZXBhcmUgaG9vay5cbitcdCAqL1xuIFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4rXHRyZXQgPSBwY2lfdHJ5X3Jlc2V0X2Z1bmN0aW9uKHZkZXYtXHUwMDNlcGRldik7XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yNDE4LDggKzI0MjAsMzMgQEAgaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcbiB9XG4gRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUpO1xuIFxuK3N0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbit7XG4rXHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1xuK1x0aWYgKHZkZXYpIHtcbitcdFx0ZG93bl93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbitcdFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XG4rXHRcdHZmaW9fcGNpX3phcF9iYXJzKHZkZXYpO1xuK1x0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4rXHR9XG4rfVxuK1xuK3N0YXRpYyB2b2lkIHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbit7XG4rXHRzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYgPSBkZXZfZ2V0X2RydmRhdGEoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuK1xuK1x0aWYgKHZkZXYpIHtcbitcdFx0aWYgKF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4rXHRcdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbitcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4rXHR9XG4rfVxuK1xuIGNvbnN0IHN0cnVjdCBwY2lfZXJyb3JfaGFuZGxlcnMgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMgPSB7XG4gXHQuZXJyb3JfZGV0ZWN0ZWQgPSB2ZmlvX3BjaV9jb3JlX2Flcl9lcnJfZGV0ZWN0ZWQsXG4rXHQucmVzZXRfcHJlcGFyZSA9IHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZSxcbitcdC5yZXNldF9kb25lID0gdmZpb19wY2lfY29yZV9yZXNldF9kb25lLFxuIH07XG4gRVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMpO1xuIFxuQEAgLTI1NjEsNTUgKzI1ODgsNTIgQEAgc3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxuIFxuIFx0XHRpZiAoIW93bmVkKSB7XG4gXHRcdFx0cmV0ID0gLUVJTlZBTDtcbi1cdFx0XHRicmVhaztcbitcdFx0XHRnb3RvIGVycl9vdXQ7XG4gXHRcdH1cbitcdH1cbiBcbitcdC8qIFphcCwgYW5kIHNldCBwb3dlciBzdGF0ZSAqL1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuIFx0XHQvKlxuLVx0XHQgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UgYW5kIHphcCBCQVJcbi1cdFx0ICogbWFwcGluZ3MgdG8gcHJldmVudCB0aGUgdXNlciBhY2Nlc3NpbmcgdGhlIGRldmljZSB3aGlsZSBpblxuLVx0XHQgKiByZXNldC4gIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbitcdFx0ICogVGFrZSB0aGUgbWVtb3J5IHdyaXRlIGxvY2sgZm9yIGVhY2ggZGV2aWNlLCB6YXAgQkFSXG4rXHRcdCAqIG1hcHBpbmdzLCBhbmQgcmVzdG9yZSBwb3dlciBzdGF0ZSBiZWZvcmUgcmVzZXQuXG4rXHRcdCAqIExvY2tpbmcgbXVsdGlwbGUgZGV2aWNlcyBpcyBwcm9uZSB0byBkZWFkbG9jayxcbiBcdFx0ICogcnVuYXdheSBhbmQgdW53aW5kIGlmIHdlIGhpdCBjb250ZW50aW9uLlxuIFx0XHQgKi9cbiBcdFx0aWYgKCFkb3duX3dyaXRlX3RyeWxvY2soXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jaykpIHtcbiBcdFx0XHRyZXQgPSAtRUJVU1k7XG4tXHRcdFx0YnJlYWs7XG4rXG4rXHRcdFx0LypcbitcdFx0XHQgKiBXZSBmYWlsZWQgdG8gbG9jayBUSElTIGRldmljZS4gV2UgbXVzdCBzdGVwIGJhY2sgb25lXG4rXHRcdFx0ICogZGV2aWNlIHNvIGVycl91bmRvIG9ubHkgdW5sb2NrcyBkZXZpY2VzIHRoYXQgc3VjY2VlZGVkLlxuK1x0XHRcdCAqL1xuK1x0XHRcdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSkge1xuK1x0XHRcdFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4rXHRcdFx0XHRnb3RvIGVycl91bmRvO1xuK1x0XHRcdH1cbitcdFx0XHRnb3RvIGVycl9vdXQ7XG4gXHRcdH1cbiBcbi1cdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIHRydWUpO1xuIFx0XHR2ZmlvX3BjaV96YXBfYmFycyh2ZGV2KTtcbitcdFx0dmZpb19wY2lfc2V0X3Bvd2VyX3N0YXRlKHZkZXYsIFBDSV9EMCk7XG4gXHR9XG4gXG4tXHRpZiAoIWxpc3RfZW50cnlfaXNfaGVhZCh2ZGV2LFxuLVx0XHRcdFx0XHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpKSB7XG4tXHRcdHZkZXYgPSBsaXN0X3ByZXZfZW50cnkodmRldiwgdmRldi5kZXZfc2V0X2xpc3QpO1xuLVx0XHRnb3RvIGVycl91bmRvO1xuLVx0fVxuLVxuLVx0Lypcbi1cdCAqIFRoZSBwY2lfcmVzZXRfYnVzKCkgd2lsbCByZXNldCBhbGwgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cbi1cdCAqIFRoZSBwb3dlciBzdGF0ZSBjYW4gYmUgbm9uLUQwIGZvciBzb21lIG9mIHRoZSBkZXZpY2VzIGluIHRoZSBidXMuXG4tXHQgKiBGb3IgdGhlc2UgZGV2aWNlcywgdGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIGludGVybmFsbHkgc2V0XG4tXHQgKiB0aGUgcG93ZXIgc3RhdGUgdG8gRDAgd2l0aG91dCB2ZmlvIGRyaXZlciBpbnZvbHZlbWVudC5cbi1cdCAqIEZvciB0aGUgZGV2aWNlcyB3aGljaCBoYXZlIE5vU29mdFJzdC0sIHRoZSByZXNldCBmdW5jdGlvbiBjYW5cbi1cdCAqIGNhdXNlIHRoZSBQQ0kgY29uZmlnIHNwYWNlIHJlc2V0IHdpdGhvdXQgcmVzdG9yaW5nIHRoZSBvcmlnaW5hbFxuLVx0ICogc3RhdGUgKHNhdmVkIGxvY2FsbHkgaW4gJ3ZkZXYtXHUwMDNlcG1fc2F2ZScpLlxuLVx0ICovXG4rXHQvKiBEcm9wIGxvY2tzIGJlZm9yZSBjcm9zc2luZyBpbnRvIFBDSSBjb3JlICovXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxuLVx0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbitcdFx0dXBfd3JpdGUoXHUwMDI2dmRldi1cdTAwM2VtZW1vcnlfbG9jayk7XG4gXG4rXHQvKiBQQ0kgY29yZSBoYW5kbGVzIHRoZSByZXNldCBhbmQgY2FsbHMgLnJlc2V0IGhvb2tzICovXG4gXHRyZXQgPSBwY2lfcmVzZXRfYnVzKHBkZXYpO1xuIFxuLVx0dmRldiA9IGxpc3RfbGFzdF9lbnRyeShcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LFxuLVx0XHRcdCAgICAgICBzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UsIHZkZXYuZGV2X3NldF9saXN0KTtcbitcdGdvdG8gZXJyX291dDtcbiBcbiBlcnJfdW5kbzpcbitcdC8qIFVud2luZCBsb2NrcyBjbGVhbmx5IGZvciBkZXZpY2VzIHdlIHN1Y2Nlc3NmdWxseSBsb2NrZWQgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfZnJvbV9yZXZlcnNlKHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsXG4tXHRcdFx0XHRcdCB2ZGV2LmRldl9zZXRfbGlzdCkge1xuLVx0XHRpZiAodmRldi1cdTAwM2V2ZGV2Lm9wZW5fY291bnQgXHUwMDI2XHUwMDI2IF9fdmZpb19wY2lfbWVtb3J5X2VuYWJsZWQodmRldikpXG4tXHRcdFx0dmZpb19wY2lfZG1hX2J1Zl9tb3ZlKHZkZXYsIGZhbHNlKTtcbitcdFx0XHRcdFx0IHZkZXYuZGV2X3NldF9saXN0KVxuIFx0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbi1cdH1cbiBcbitlcnJfb3V0OlxuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeSh2ZGV2LCBcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdClcbiBcdFx0cG1fcnVudGltZV9wdXQoXHUwMDI2dmRldi1cdTAwM2VwZGV2LVx1MDAzZWRldik7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToxOTo1MC4zMTY0MDM3ODFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Njk5OTg4MDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlZGSU8gUENJIFJlc2V0IFBhdGNoIEFuYWx5c2lzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgbWVzc2luZyB3aXRoIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAsIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAsIGFuZCBpdCdzIGFkZGluZyBgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlYCBhbmQgYHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZWAgdG8gYHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiBoaXQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBBZnRlciBhbGwsIFZGSU8gaXMgYWxsIGFib3V0IHBhc3NpbmcgUENJIGRldmljZXMgdGhyb3VnaCB0byB1c2Vyc3BhY2Ugb3IgVk1zLlxuXG5SaWdodCwgc28gY2FuIHdlIGZ1enogVkZJTyBQQ0kgaW5zaWRlIFFFTVU/IEkga25vdyB0aGVyZSBhcmUgdmlydHVhbCBQQ0kgZGV2aWNlcywgYW5kIHN5emthbGxlciBoYXMgc29tZSBWRklPIGRlc2NyaXB0aW9ucy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGNoZWNrIGlmIFZGSU8gUENJIGlzIGFscmVhZHkgZW5hYmxlZCBpbiBzeXprYWxsZXIuIElmIG5vdCwgY2FuIHdlIGVuYWJsZSBpdD8gSG9sZCBvbiwgdGhvdWdoLi4uIFZGSU8gUENJIG5lZWRzIGEgUENJIGRldmljZSB0byBsYXRjaCBvbnRvLCBkb2Vzbid0IGl0PyBPa2F5LCBzbyBzeXprYWxsZXIgKmNvdWxkKiB1c2UgdGhlIGB2ZmlvLXBjaWAgZHJpdmVyIHRvIGJpbmQgdG8gc29tZSBkdW1teSBvciB2aXJ0dWFsIFBDSSBkZXZpY2VzLiBMZXQncyBkaWcgaW50byB0aGF0LlxuXG5Ob3csIGxldCdzIGFsc28gY2hlY2sgaWYgYFZGSU9fUENJYCBpcyBnZW5lcmFsbHkgZW5hYmxlZCBpbiBzdGFuZGFyZCBrZXJuZWwgY29uZmlncy4gVGhhdCdzIGEgc2FuaXR5IGNoZWNrLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gZG8gc29tZSBjb2RlIGFyY2hhZW9sb2d5IGFuZCBodW50IGZvciBldmVyeSBzaW5nbGUgaW5zdGFuY2Ugb2YgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBhbmQgYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gR290dGEgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZnVsbCBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjQ3LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MTk6NTYuMDE2Mzk0N1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg4MjQ1NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX2lvY3RsX3Jlc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTEyODA9c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9zZXRfaXJxcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xMzE1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjEzMTY6c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9yZXNldChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTMxNy1cXHRcXHRcXHRcXHR2b2lkIF9fdXNlciAqYXJnKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTU1OD1sb25nIHZmaW9fcGNpX2NvcmVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHVuc2lnbmVkIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTc2LVxcdGNhc2UgVkZJT19ERVZJQ0VfUkVTRVQ6XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTU3NzpcXHRcXHRyZXR1cm4gdmZpb19wY2lfaW9jdGxfcmVzZXQodmRldiwgdWFyZyk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTU3OC1cXHRjYXNlIFZGSU9fREVWSUNFX1NFVF9JUlFTOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToxOTo1Ny43MDQ2NDcwNVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTU3NTcwOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSByZWxldmFudCBWRklPLVBDSSByZXNldCBtZWNoYW5pc21zOlxuXG4qKlJlc2V0dGluZyB0aGUgVkZJTyBQQ0kgRGV2aWNlKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgdGhlcmUgYXJlIHR3byBrZXkgcGxhY2VzIHdoZXJlIHJlc2V0cyBhcmUgaW5pdGlhdGVkIGluIHRoZSBWRklPLVBDSSBkcml2ZXIuIEZpcnN0LCB0aGUgYFZGSU9fREVWSUNFX1JFU0VUYCBpb2N0bCBjYWxsIOKAkyB0aGF0J3MgdGhlIG9uZSB0cmlnZ2VyaW5nIHRoZSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyBsaWtlIHRoaXMgaXMgdGhlIG1haW4sIGdlbmVyYWwgcmVzZXQgcGF0aCB3ZSdyZSB1c2luZyBhdCB0aGF0IHBvaW50LiBJJ20gYXNzdW1pbmcgdGhpcyBtaWdodCBiZSB0aGUgaGlnaGVyLWxldmVsIHJlc2V0IHRoYXQgd2UncmUgdGFsa2luZyBhYm91dC5cblxuTm93LCB3ZSBhbHNvIGhhdmUgdGhpcyBvdGhlciBzY2VuYXJpbywgdHJpZ2dlcmVkIGJ5IGBWRklPX1BDSV9IT1RfUkVTRVRgLiBUaGF0IG9uZSBjYWxscyB0aGUgYHZmaW9fcGNpX2lvY3RsX3BjaV9ob3RfcmVzZXRgIGlvY3RsLCB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIGEgY2FsbCB0byBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBTbyB0aGlzIGFwcGVhcnMgdG8gYmUgdGhlIG1lY2hhbmlzbSBmb3IgZGVhbGluZyB3aXRoIFwiaG90IHJlc2V0c1wiLiBUaGF0IG1lYW5zIHdlIGhhdmUgc29tZSBkaWZmZXJlbnQgY29kZSBwYXRoIHRoYXQgaXMgY2FsbGVkIHRvIGhhbmRsZSB0aGVzZS4gVGhhdCBjb3VsZCBiZSB3aGVyZSBteSBjb2RlIHdvdWxkIGRpZmZlcmVudGlhdGUgZm9yIHRoZSB0eXBlIG9mIHJlc2V0IG9yIGV2ZW4gdGhlIHR5cGUgb2YgZGV2aWNlLlxuXG5JdCBsb29rcyBsaWtlIHRoZSBkcml2ZXIgaGFzIHNlcGFyYXRlLCBidXQgcmVsYXRlZCwgcm91dGluZXMgdG8gaGFuZGxlIHRoZXNlIGRpZmZlcmVudCByZXNldCB0eXBlcywgYm90aCBzdGVtbWluZyBmcm9tIHRoZSBpb2N0bCBsYXllci4gR29vZCwgdGhhdCdzIHdoYXQgSSB3b3VsZCBleHBlY3QgZm9yIGEgcm9idXN0IGRlc2lnbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY0NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjAxLjQyMDQwODE5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODMyMzUyMTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI2NT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9kZXZfc2V0X3RyeV9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0KTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNjY6c3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI2Ny1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdmZpb19wY2lfZ3JvdXBfaW5mbyAqZ3JvdXBzLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTQyNT12ZmlvX3BjaV9pb2N0bF9wY2lfaG90X3Jlc2V0X2dyb3VwcyhzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNDkyLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE0OTM6XFx0cmV0ID0gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cXHUwMDNldmRldi5kZXZfc2V0LCBcXHUwMDI2aW5mbywgTlVMTCk7XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTQ5NC1cXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE1MDM9c3RhdGljIGludCB2ZmlvX3BjaV9pb2N0bF9wY2lfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1MjgtXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTUyOTpcXHRyZXR1cm4gdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXQodmRldi1cXHUwMDNldmRldi5kZXZfc2V0LCBOVUxMLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1MzAtXFx0XFx0XFx0XFx0XFx0ICB2ZmlvX2lvbW11ZmRfZGV2aWNlX2ljdHgoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTI1MTE9c3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X3BtX3J1bnRpbWVfZ2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNTMxLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI1MzI6c3RhdGljIGludCB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldChzdHJ1Y3QgdmZpb19kZXZpY2Vfc2V0ICpkZXZfc2V0LFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI1MzMtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHZmaW9fcGNpX2dyb3VwX2luZm8gKmdyb3VwcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MDMuMjUyNzY3NjA0WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwOTEyNTYzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGSU8gUENJIFJlc2V0IExvY2sgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBjbGVhcmx5IG1ha2luZyBhIHNpZ25pZmljYW50IGFkanVzdG1lbnQgdG8gaG93IGxvY2tzIGFyZSBtYW5hZ2VkIGR1cmluZyB0aGUgcmVzZXQgcHJvY2VzcyB3aXRoaW4gdGhlIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoZSBrZXkgY2hhbmdlIGlzIGRyb3BwaW5nIHRoZSBgdmRldi1cdTAwM2VtZW1vcnlfbG9ja2AgKmJlZm9yZSogY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdoaWNoIGlzIGEgZGVwYXJ0dXJlIGZyb20gdGhlIHByZXZpb3VzIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMuIFRoZSBub3RlIG1lbnRpb25zIHRoYXQgdGhlIFBDSSBjb3JlIHdpbGwgcmVhY3F1aXJlIHRoZSBsb2NrIHRocm91Z2ggYSBgLnJlc2V0X3ByZXBhcmVgIGhvb2ssIGFuZCB0aGUgYWRkaXRpb24gb2YgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdCBjb25maXJtcyB0aGlzIG5ldyBpbnRlcmFjdGlvbiBwYXR0ZXJuIHdpdGggdGhlIFBDSSBjb3JlJ3MgcmVzZXQgbWVjaGFuaXNtLlxuXG5UaGlzIGNoYW5nZSBpcyBkZWZpbml0ZWx5IHdvcnRoIHRha2luZyBhIGNsb3NlciBsb29rIGF0LCBlc3BlY2lhbGx5IGluIHRoZSBjb250ZXh0IG9mIGZ1enppbmcuIEl0J3MgYSBmdW5kYW1lbnRhbCBhc3BlY3Qgb2YgVkZJTyBQQ0ksIGFuZCwgZ2l2ZW4gaXQncyBleHBvc2VkIHZpYSBhbiBpb2N0bCwgaXQncyBhY2Nlc3NpYmxlIGFuZCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiBpdCBlZmZlY3RpdmVseT8gRm9ydHVuYXRlbHksIHllcywgdGhlIGRvY3VtZW50YXRpb24gc2hvdWxkIGJlIGluIG9yZGVyIGFuZCBzeXprYWxsZXIgZG9lcyBzdXBwb3J0IFZGSU8gYW5kIGJpbmRpbmcgZGV2aWNlcyB0byB2ZmlvLXBjaSwgc28gd2Ugc2hvdWxkIGJlIGdvb2QgdG8gZ28uXG5cbkJlZm9yZSB3ZSBnZXQgc3RhcnRlZCwgbGV0J3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIFZGSU9fUENJIEtjb25maWcgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgYXMgZXhwZWN0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3MDAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MDguODYxODk1OTU2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3ODczNDI5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFZGSU9fUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUENJIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNC1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6NTpjb25maWcgVkZJT19QQ0lfQ09SRVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZy02LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctOS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWc6MTA6Y29uZmlnIFZGSU9fUENJX0lOVFhcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTEtXFx0ZGVmX2Jvb2wgeSBpZiAhUzM5MFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTEzLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoxNDpjb25maWcgVkZJT19QQ0lcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgVkZJTyBzdXBwb3J0IGZvciBhbnkgUENJIGRldmljZVxcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZz0yMz1pZiBWRklPX1BDSVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzoyNDpjb25maWcgVkZJT19QQ0lfVkdBXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTI1LVxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzMtXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnOjM0OmNvbmZpZyBWRklPX1BDSV9JR0RcXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctMzUtXFx0Ym9vbCBcXFwiR2VuZXJpYyBWRklPIFBDSSBleHRlbnNpb25zIGZvciBJbnRlbCBncmFwaGljcyAoR1ZULWQpXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnPTQ1PWVuZGlmXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTQ2LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo0Nzpjb25maWcgVkZJT19QQ0lfWkRFVl9LVk1cXG5kcml2ZXJzL3ZmaW8vcGNpL0tjb25maWctNDgtXFx0Ym9vbCBcXFwiVkZJTyBQQ0kgZXh0ZW5zaW9ucyBmb3IgczM5MHggS1ZNIHBhc3N0aHJvdWdoXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU3LVxcbmRyaXZlcnMvdmZpby9wY2kvS2NvbmZpZzo1ODpjb25maWcgVkZJT19QQ0lfRE1BQlVGXFxuZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnLTU5LVxcdGRlZl9ib29sIHkgaWYgVkZJT19QQ0lfQ09SRSBcXHUwMDI2XFx1MDAyNiBQQ0lfUDJQRE1BIFxcdTAwMjZcXHUwMDI2IERNQV9TSEFSRURfQlVGRkVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjEwLjY0OTI0NzA4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3OTUxNjQ0ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqVkZJT19QQ0kgRGVlcCBEaXZlKipcblxuT2theSwgc28gdGhlIGNvbmZpZ3VyYXRpb24gSSdtIHdvcmtpbmcgd2l0aCBpcyBgVkZJT19QQ0lgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJSaWdodCwgbGV0J3MgZXN0YWJsaXNoIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiB0aGlzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB0aWUgaW50byBgVkZJT19QQ0lgXCIuIEknbSBub3QganVzdCBnb2luZyB0byBibGluZGx5IGRpdmUgaW47IGEgdGhvcm91Z2ggY2hlY2sgb2Ygd2hhdCB0aGlzIHJlbGllcyBvbiBpcyBjcnVjaWFsIGZvciB0cm91Ymxlc2hvb3Rpbmcgb3IgbW9kaWZpY2F0aW9uIGxhdGVyLiBJIG5lZWQgdG8ga25vdyB3aGVyZSB0aGlzIGZpdHMgaW50byB0aGUgd2hvbGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODgzLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MTMuNDQ0NDE0OTdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy92ZmlvL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEwOlxcdGNvbmZpZyBWRklPX1BDSV9JTlRYXFxuICAxMTpcXHRcXHRkZWZfYm9vbCB5IGlmICFTMzkwXFxuICAxMjpcXHRcXHRkZXBlbmRzIG9uIFZGSU9fUENJX0NPUkVcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIFZGSU9fUENJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBWRklPIHN1cHBvcnQgZm9yIGFueSBQQ0kgZGV2aWNlXFxcIlxcbiAgMTY6XFx0XFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgU3VwcG9ydCBmb3IgdGhlIGdlbmVyaWMgUENJIFZGSU8gYnVzIGRyaXZlciB3aGljaCBjYW4gY29ubmVjdCBhbnlcXG4gIDE5OlxcdFxcdCAgUENJIGRldmljZSB0byB0aGUgVkZJTyBmcmFtZXdvcmsuXFxuICAyMDpcXHRcXG4gIDIxOlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cXG4gIDIyOlxcdFxcbiAgMjM6XFx0aWYgVkZJT19QQ0lcXG4gIDI0OlxcdGNvbmZpZyBWRklPX1BDSV9WR0FcXG4gIDI1OlxcdFxcdGJvb2wgXFxcIkdlbmVyaWMgVkZJTyBQQ0kgc3VwcG9ydCBmb3IgVkdBIGRldmljZXNcXFwiXFxuICAyNjpcXHRcXHRkZXBlbmRzIG9uIFg4NiBcXHUwMDI2XFx1MDAyNiBWR0FfQVJCXFxuICAyNzpcXHRcXHRoZWxwXFxuICAyODpcXHRcXHQgIFN1cHBvcnQgZm9yIFZHQSBleHRlbnNpb24gdG8gVkZJTyBQQ0kuICBUaGlzIGV4cG9zZXMgYW4gYWRkaXRpb25hbFxcbiAgMjk6XFx0XFx0ICByZWdpb24gb24gVkdBIGRldmljZXMgZm9yIGFjY2Vzc2luZyBsZWdhY3kgVkdBIGFkZHJlc3NlcyB1c2VkIGJ5XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjEzLjQ0NDQ3ODUxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODExNDExNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVjb2RpbmcgdGhlIFZGSU8gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGltbWVkaWF0ZWx5IGRpcmVjdGVkIHRvd2FyZHMgYFZGSU9fUENJYC4gVGhhdCdzIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gSSBleHBlY3QgdG8gYmUgaW52b2x2ZWQgaW4gdGhlIHZpcnR1YWxpemF0aW9uIHByb2Nlc3MuIFRoYXQncyB0aGUgbW9kdWxlIEkgYWx3YXlzIHN0YXJ0IHdpdGggd2hlbiBjb25maWd1cmluZyBhIFBDSSBwYXNzdGhyb3VnaC5cblxuQnV0IHdhaXQgYSBtaW51dGUuLi4gaXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gaW5jbHVkZSBgVkZJT2AgYXMgd2VsbC4gT2YgY291cnNlISBJdCdzIHRoZSBvdmVyYXJjaGluZyBmcmFtZXdvcmssIHRoZSBmb3VuZGF0aW9uIHVwb24gd2hpY2ggYFZGSU9fUENJYCBzaXRzLiBUaGUgUENJLXNwZWNpZmljIHBhcnQgaXMgaW1wb3J0YW50IHRvIG1hbmFnZSB0aGUgcGFzc3Rocm91Z2ggb2YgdGhlIHBoeXNpY2FsIGRldmljZSB0byB0aGUgdmlydHVhbCBtYWNoaW5lLCBidXQgSSBjYW4ndCBmb3JnZXQgdGhlIGJhc2UgYFZGSU9gIG1vZHVsZSB0aGF0IHByb3ZpZGVzIHRoZSBjb3JlIGRldmljZSBhc3NpZ25tZW50IGNhcGFiaWxpdGllcy4gVGhlc2UgYXJlIGJvdGggb2J2aW91c2x5IG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NzMzOCwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MTYuMzI1NjIyMTEzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY4OTQ2NjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBWRklPJFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvdmZpby9LY29uZmlnOjI6bWVudWNvbmZpZyBWRklPXFxuZHJpdmVycy92ZmlvL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiVkZJTyBOb24tUHJpdmlsZWdlZCB1c2Vyc3BhY2UgZHJpdmVyIGZyYW1ld29ya1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MTguNjk0NTc1MDMzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3MzIwNTQyNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoZSBtYXR0ZXI6XG5cbioqVkZJTyBEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEknbSBnb2luZyB0byBzdGFydCBieSBnZXR0aW5nIGEgc29saWQgaGFuZGxlIG9uIHRoZSBgVkZJT2AgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBldmVuIHRoaW5rIGFib3V0IGFueSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvciBjb25maWd1cmF0aW9uLCBpdCdzIGNyaXRpY2FsIHRvIGVuc3VyZSBhbGwgdGhlIG5lY2Vzc2FyeSBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlLiBUaGlzIG1lYW5zIHN5c3RlbWF0aWNhbGx5IGlkZW50aWZ5aW5nIGFuZCB2ZXJpZnlpbmcgdGhlIHVuZGVybHlpbmcgbGlicmFyaWVzLCBrZXJuZWwgbW9kdWxlcywgYW5kIGFueSBvdGhlciByZXF1aXJlZCBjb21wb25lbnRzIHRoYXQgYFZGSU9gIHJlbGllcyB1cG9uIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSdsbCBuZWVkIHRvIGtub3cgdGhpcyBsaWtlIHRoZSBiYWNrIG9mIG15IGhhbmQuIEkgd2lsbCBhcHByb2FjaCB0aGlzIHN5c3RlbWF0aWNhbGx5LCBjaGVja2luZyBmb3IgYW55IHBvdGVudGlhbCBjb25mbGljdHMgb3IgbWlzc2luZyBwaWVjZXMgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgcHJvYmxlbXMgZG93biB0aGUgbGluZS4gSSB3YW50IGEgY2xlYW4sIHdlbGwtdW5kZXJzdG9vZCBmb3VuZGF0aW9uIGJlZm9yZSBwcm9jZWVkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MjEuNDI2NjMxOTkxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2ODcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRtZW51Y29uZmlnIFZGSU9cXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJWRklPIE5vbi1Qcml2aWxlZ2VkIHVzZXJzcGFjZSBkcml2ZXIgZnJhbWV3b3JrXFxcIlxcbiAgIDQ6XFx0XFx0c2VsZWN0IElPTU1VX0FQSVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBJT01NVUZEIHx8ICFJT01NVUZEXFxuICAgNjpcXHRcXHRzZWxlY3QgSU5URVJWQUxfVFJFRVxcbiAgIDc6XFx0XFx0c2VsZWN0IFZGSU9fR1JPVVAgaWYgU1BBUFJfVENFX0lPTU1VIHx8IElPTU1VRkQ9blxcbiAgIDg6XFx0XFx0c2VsZWN0IFZGSU9fREVWSUNFX0NERVYgaWYgIVZGSU9fR1JPVVBcXG4gICA5OlxcdFxcdHNlbGVjdCBWRklPX0NPTlRBSU5FUiBpZiBJT01NVUZEPW5cXG4gIDEwOlxcdFxcdGhlbHBcXG4gIDExOlxcdFxcdCAgVkZJTyBwcm92aWRlcyBhIGZyYW1ld29yayBmb3Igc2VjdXJlIHVzZXJzcGFjZSBkZXZpY2UgZHJpdmVycy5cXG4gIDEyOlxcdFxcdCAgU2VlIERvY3VtZW50YXRpb24vZHJpdmVyLWFwaS92ZmlvLnJzdCBmb3IgbW9yZSBkZXRhaWxzLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAxNTpcXHRcXG4gIDE2OlxcdGlmIFZGSU9cXG4gIDE3OlxcdGNvbmZpZyBWRklPX0RFVklDRV9DREVWXFxuICAxODpcXHRcXHRib29sIFxcXCJTdXBwb3J0IGZvciB0aGUgVkZJTyBjZGV2IC9kZXYvdmZpby9kZXZpY2VzL3ZmaW9YXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBJT01NVUZEIFxcdTAwMjZcXHUwMDI2ICFTUEFQUl9UQ0VfSU9NTVVcXG4gIDIwOlxcdFxcdGRlZmF1bHQgIVZGSU9fR1JPVVBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MjEuNDI2Njk5OTYxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4Mzc3NDk4MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBWRklPL1BDSSBSZXNldCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGNvbmZpZ3VyYXRpb25zOiBgVkZJT2AgYW5kIGBWRklPX1BDSWAuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzLCB3aGF0IGFib3V0IHRoZSBmb2N1cyBzeW1ib2xzIGhlcmU/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgcmVzZXQgbG9naWMgaXMgc3RydWN0dXJlZC4gUmlnaHQsIHNvIHRoaXMgcGF0Y2ggc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIGB2ZmlvX3BjaV9pb2N0bF9yZXNldGAgYW5kIGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAuIEl0IGFsc28gaW50cm9kdWNlcyB0d28gbmV3IGZ1bmN0aW9uczogYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgLiBNeSBndXQgdGVsbHMgbWUgSSBzaG91bGQgY2hlY2sgaWYgYHZmaW9fcGNpX2lvY3RsX3Jlc2V0YCBpcyBzdGF0aWMuIFllcywgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gTm93IGhvbGQgb24sIHRoZSBhY3R1YWwgZW50cnkgcG9pbnQgaXMgYHZmaW9fcGNpX2NvcmVfaW9jdGxgLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcGllY2VzIGZpdCB3aXRoaW4gdGhlIGxhcmdlciBpb2N0bCBzeXN0ZW0uIEkgbmVlZCB0byB0cmFjZSB0aGlzIGNhbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNzEsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDoyNS4yNjQ0NTI0NTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjkyNjgzODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfY29yZV9pb2N0bFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE1ODE9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg2LVxcdC5jbG9zZV9kZXZpY2UgPSBoaXNpX2FjY192ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNTg3OlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNTg4LVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IGhpc2lfYWNjX3ZmaW9faW9jdGxfZ2V0X3JlZ2lvbixcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE1ODk6XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTU5MC1cXHQucmVhZCA9IGhpc2lfYWNjX3ZmaW9fcGNpX3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jPTE2MDI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgaGlzaV9hY2NfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjA3LVxcdC5jbG9zZV9kZXZpY2UgPSB2ZmlvX3BjaV9jb3JlX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE2MDg6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE2MDktXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTYxMDpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNjExLVxcdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTMzNT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBpc21fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zNDAtXFx0LmNsb3NlX2RldmljZSA9IHZmaW9fcGNpX2NvcmVfY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYzozNDE6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL2lzbS9tYWluLmMtMzQyLVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IGlzbV92ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjM0MzpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTM0NC1cXHQucmVhZCA9IGlzbV92ZmlvX3BjaV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYz0xMzg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG1seDV2Zl9wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzkxLVxcdC5jbG9zZV9kZXZpY2UgPSBtbHg1dmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jOjEzOTI6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL21seDUvbWFpbi5jLTEzOTMtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvbWx4NS9tYWluLmM6MTM5NDpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS9tbHg1L21haW4uYy0xMzk1LVxcdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM9NTg5PXN0YXRpYyBsb25nIG52Z3JhY2VfZ3B1X2lvY3RsKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtNTk4LVxcdGRlZmF1bHQ6XFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6NTk5OlxcdFxcdHJldHVybiB2ZmlvX3BjaV9jb3JlX2lvY3RsKGNvcmVfdmRldiwgY21kLCBhcmcpO1xcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTYwMC1cXHR9XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xMDY1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG52Z3JhY2VfZ3B1X3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDcyLVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IG52Z3JhY2VfZ3B1X2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYzoxMDczOlxcdC5kZXZpY2VfZmVhdHVyZVxcdD0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwNzQtXFx0LnJlYWRcXHRcXHQ9IG52Z3JhY2VfZ3B1X3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYz0xMDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIG52Z3JhY2VfZ3B1X3BjaV9jb3JlX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvbnZncmFjZS1ncHUvbWFpbi5jLTEwOTUtXFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTA5NjpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmMtMTA5Ny1cXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS9tYWluLmM6MTA5ODpcXHQuZGV2aWNlX2ZlYXR1cmVcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL252Z3JhY2UtZ3B1L21haW4uYy0xMDk5LVxcdC5yZWFkXFx0XFx0PSB2ZmlvX3BjaV9jb3JlX3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jPTE5MT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyBwZHNfdmZpb19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTE5Ni1cXHQuY2xvc2VfZGV2aWNlID0gcGRzX3ZmaW9fY2xvc2VfZGV2aWNlLFxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTk3OlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9wZHMvdmZpb19kZXYuYy0xOTgtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvcGRzL3ZmaW9fZGV2LmM6MTk5OlxcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3Bkcy92ZmlvX2Rldi5jLTIwMC1cXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvcWF0L21haW4uYz02MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgcWF0X3ZmX3BjaV9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmMtNjA5LVxcdC5jbG9zZV9kZXZpY2UgPSBxYXRfdmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3FhdC9tYWluLmM6NjEwOlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS9xYXQvbWFpbi5jLTYxMS1cXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpLmM9MTQ5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fcGNpX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0xNTQtXFx0LmNsb3NlX2RldmljZVxcdD0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NTpcXHQuaW9jdGxcXHRcXHQ9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1Ni1cXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX3BjaV9pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jOjE1NzpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTE1OC1cXHQucmVhZFxcdFxcdD0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MTUzMz1zdGF0aWMgaW50IHZmaW9fcGNpX2lvY3RsX2lvZXZlbnRmZChzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTU3LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE1NTg6bG9uZyB2ZmlvX3BjaV9jb3JlX2lvY3RsKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LCB1bnNpZ25lZCBpbnQgY21kLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE1NTktXFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTU4My19XFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM6MTU4NDpFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2lvY3RsKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNTg1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jPTE1ODY9c3RhdGljIGludCB2ZmlvX3BjaV9jb3JlX2ZlYXR1cmVfdG9rZW4oc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmMtMTYxMi1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoxNjEzOmludCB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUoc3RydWN0IHZmaW9fZGV2aWNlICpkZXZpY2UsIHUzMiBmbGFncyxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNjE0LVxcdFxcdFxcdFxcdHZvaWQgX191c2VyICphcmcsIHNpemVfdCBhcmdzeilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTE2MzQtfVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjE2MzU6RVhQT1JUX1NZTUJPTF9HUEwodmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0xNjM2LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZpcnRpb3ZmX3ZmaW9fcGNpX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy04OS1cXHQuY2xvc2VfZGV2aWNlID0gdmlydGlvdmZfcGNpX2Nsb3NlX2RldmljZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6OTA6XFx0LmlvY3RsID0gdmZpb19wY2lfY29yZV9pb2N0bCxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtOTEtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzo5MjpcXHQuZGV2aWNlX2ZlYXR1cmUgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsX2ZlYXR1cmUsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTkzLVxcdC5yZWFkID0gdmZpb19wY2lfY29yZV9yZWFkLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jPTEwNj1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2aXJ0aW92Zl92ZmlvX3BjaV90cmFuX2xtX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTEtXFx0LmNsb3NlX2RldmljZSA9IHZpcnRpb3ZmX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjExMjpcXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMTMtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmlydGlvdmZfcGNpX2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmM6MTE0OlxcdC5kZXZpY2VfZmVhdHVyZSA9IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZSxcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZpcnRpby9tYWluLmMtMTE1LVxcdC5yZWFkID0gdmlydGlvdmZfcGNpX2NvcmVfcmVhZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYz0xMjg9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmlydGlvdmZfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jLTEzMy1cXHQuY2xvc2VfZGV2aWNlID0gdmZpb19wY2lfY29yZV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS92aXJ0aW8vbWFpbi5jOjEzNDpcXHQuaW9jdGwgPSB2ZmlvX3BjaV9jb3JlX2lvY3RsLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzUtXFx0LmdldF9yZWdpb25faW5mb19jYXBzID0gdmZpb19wY2lfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYzoxMzY6XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmlydGlvL21haW4uYy0xMzctXFx0LnJlYWQgPSB2ZmlvX3BjaV9jb3JlX3JlYWQsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYz01MjI9c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgeGVfdmZpb19wY2lfb3BzID0ge1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI3LVxcdC5jbG9zZV9kZXZpY2UgPSB4ZV92ZmlvX3BjaV9jbG9zZV9kZXZpY2UsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmM6NTI4OlxcdC5pb2N0bCA9IHZmaW9fcGNpX2NvcmVfaW9jdGwsXFxuZHJpdmVycy92ZmlvL3BjaS94ZS9tYWluLmMtNTI5LVxcdC5nZXRfcmVnaW9uX2luZm9fY2FwcyA9IHZmaW9fcGNpX2lvY3RsX2dldF9yZWdpb25faW5mbyxcXG5kcml2ZXJzL3ZmaW8vcGNpL3hlL21haW4uYzo1MzA6XFx0LmRldmljZV9mZWF0dXJlID0gdmZpb19wY2lfY29yZV9pb2N0bF9mZWF0dXJlLFxcbmRyaXZlcnMvdmZpby9wY2kveGUvbWFpbi5jLTUzMS1cXHQucmVhZCA9IHZmaW9fcGNpX2NvcmVfcmVhZCxcXG4tLVxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oPTE3Mj1pbnQgdmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3My1cXHRcXHRcXHRcXHQgIGludCBucl92aXJ0Zm4pO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjE3NDpsb25nIHZmaW9fcGNpX2NvcmVfaW9jdGwoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsIHVuc2lnbmVkIGludCBjbWQsXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmgtMTc1LVxcdFxcdHVuc2lnbmVkIGxvbmcgYXJnKTtcXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaDoxNzY6aW50IHZmaW9fcGNpX2NvcmVfaW9jdGxfZmVhdHVyZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmRldmljZSwgdTMyIGZsYWdzLFxcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oLTE3Ny1cXHRcXHRcXHRcXHR2b2lkIF9fdXNlciAqYXJnLCBzaXplX3QgYXJnc3opO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDoyNi44OTM3MjYxNzhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2MDI3ODc5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcyBwcmVzZW50ZWQsIGFpbWVkIGF0IGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFZGSU8gUENJIENvcmUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGNsZWFybHkgY2VudGVyZWQgYXJvdW5kIGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCDigJMgdGhhdCdzIHRoZSBwcmltYXJ5IGlvY3RsIGhhbmRsZXIsIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciBpbnRlcmFjdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgSSdsbCBkZWZpbml0ZWx5IGxpc3QgdGhhdCBhcyB0aGUgZm9jdXMgc3ltYm9sIGZvciB0aGUgcGF0Y2guIFRoZSBwYXRjaCBhbHNvIGFkZHMgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgIHRvIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AuIFRoZXNlIHJlc2V0IGZ1bmN0aW9ucyBhcmUgc3RhdGljLiBUaGUgUENJIGNvcmUgZGlyZWN0bHkgY2FsbHMgdGhvc2UsIHNvIGl0IGlzIGFuIGludGVyZXN0aW5nIHBvaW50IG9mIGRpc2N1c3Npb24sIGJ1dCBzdGlsbCwgYHZmaW9fcGNpX2NvcmVfaW9jdGxgIGlzIHRoZSBtYWluIGZvY3VzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNsZWFybHkgbm90ZSB3aGVyZSB0aGV5IGFyZSBiZWluZyBjYWxsZWQgZnJvbS4gSSBzYXcgU1JJT1YgY29uZmlndXJhdGlvbiBtZW50aW9uZWQgYnV0IGl0J3MganVzdCBhZGphY2VudCB0byB0aG9zZSBuZXcgcmVzZXQgaG9va3MgaW4gdGhlIHBhdGNoLCBzbyB0aGUgU1JJT1Ygcm91dGluZSBpdHNlbGYgaXNuJ3QgYmVpbmcgZGlyZWN0bHkgbW9kaWZpZWQsIGl0IGlzIGp1c3QgaW4gdGhlIG5laWdoYm9yaG9vZC4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgdmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNgIHN0cnVjdHVyZSwganVzdCB0byBiZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBkaWcgZGVlcGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjQ3NSwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDozMS4yNTQwMDg2NjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Mzg5OTkyODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jPTM5NT1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaXNtX3ZmaW9fcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaXNtL21haW4uYy0zOTktXFx0LnJlbW92ZSA9IGlzbV92ZmlvX3BjaV9yZW1vdmUsXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jOjQwMDpcXHQuZXJyX2hhbmRsZXIgPSBcXHUwMDI2dmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMsXFxuZHJpdmVycy92ZmlvL3BjaS9pc20vbWFpbi5jLTQwMS1cXHQuZHJpdmVyX21hbmFnZWRfZG1hID0gdHJ1ZSxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYz0yMjY9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHZmaW9fcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYy0yMzEtXFx0LnNyaW92X2NvbmZpZ3VyZVxcdD0gdmZpb19wY2lfc3Jpb3ZfY29uZmlndXJlLFxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2kuYzoyMzI6XFx0LmVycl9oYW5kbGVyXFx0XFx0PSBcXHUwMDI2dmZpb19wY2lfY29yZV9lcnJfaGFuZGxlcnMsXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaS5jLTIzMy1cXHQuZHJpdmVyX21hbmFnZWRfZG1hXFx0PSB0cnVlLFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmM9MjQzNT1zdGF0aWMgdm9pZCB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDQ1LVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jOjI0NDY6Y29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDQ3LVxcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jLTI0NTAtfTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYzoyNDUxOkVYUE9SVF9TWU1CT0xfR1BMKHZmaW9fcGNpX2NvcmVfZXJyX2hhbmRsZXJzKTtcXG5kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuYy0yNDUyLVxcbi0tXFxuaW5jbHVkZS9saW51eC92ZmlvX3BjaV9jb3JlLmg9MTcwPXZvaWQgdmZpb19wY2lfY29yZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgdmZpb19wY2lfY29yZV9kZXZpY2UgKnZkZXYpO1xcbmluY2x1ZGUvbGludXgvdmZpb19wY2lfY29yZS5oOjE3MTpleHRlcm4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycztcXG5pbmNsdWRlL2xpbnV4L3ZmaW9fcGNpX2NvcmUuaC0xNzItaW50IHZmaW9fcGNpX2NvcmVfc3Jpb3ZfY29uZmlndXJlKHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMjE6MjA6MzIuODkzMDE4MDA5WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxNDM3MDI3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZGSU8gUENJIFJlc2V0IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gVkZJTyBQQ0kgcmVzZXQgb3BlcmF0aW9ucy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmaW5kIGEgZ29vZCBlbnRyeSBwb2ludCBzeW1ib2wuIEkgc3RhcnRlZCBieSBsb29raW5nIGF0IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBhcyBhIHBvdGVudGlhbCBmb2N1cy4gSSBjb25zaWRlcmVkIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIGJ1dCB0aGF0J3MgYSBzdHJ1Y3QsIG5vdCBhIGZ1bmN0aW9uLiBUaGUgYWN0dWFsIHJlc2V0IGZ1bmN0aW9ucywgYHZmaW9fcGNpX2NvcmVfcmVzZXRfcHJlcGFyZWAgYW5kIGB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmVgLCBhcmUgc3RhdGljLCBzbyB0aGV5J3JlIG5vdCBnb2luZyB0byBiZSB2aXNpYmxlIHN5bWJvbHMgZGlyZWN0bHkuIFRoZW4gSSBmb3VuZCB0aGF0IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBpcyBleHBvcnRlZCwgYW5kIHRoZXJlZm9yZSwgdmlzaWJsZS4gQWxzbywgSSByZWFsaXplZCB0aGF0IGB2ZmlvX3BjaV9kZXZfc2V0X2hvdF9yZXNldGAgYW5kIGB2ZmlvX3BjaV9pb2N0bF9wY2lfaG90X3Jlc2V0YCBhcmUgc3RhdGljLiBUaGVyZWZvcmUsIGB2ZmlvX3BjaV9jb3JlX2lvY3RsYCBpcyB0aGUgZW50cnkgcG9pbnQuXG5cbkkgY2hlY2tlZCB0byBzZWUgaWYgYW55IG90aGVyIGV4cG9ydGVkIGZ1bmN0aW9ucyBoYWQgYmVlbiBtb2RpZmllZCwgYnV0IG5vLCBpdCBzZWVtcyBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgdGhlIG1haW4gb25lIGFuZCBjYWxscyBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfaW9jdGxfcGNpX2hvdF9yZXNldGAuIFNvLCBgdmZpb19wY2lfY29yZV9pb2N0bGAgaXMgZGVmaW5pdGVseSB0aGUgbWFpbiBmb2N1cy5cblxuTm93LCBsZXQncyBsb29rIGF0IHRoZSBrZXJuZWwgY29uZmlncy4gSSBjb25maXJtZWQgYFZGSU9gIGFuZCBgVkZJT19QQ0lgIGFyZSBpbXBvcnRhbnQuIEkgY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUgd2VyZSBhbnkgb3RoZXIgY29uZmlncywgYW5kIGZvdW5kIGBWRklPX1BDSV9DT1JFYCBpcyBzZWxlY3RlZCBieSBgVkZJT19QQ0lgLiBTbywgYFZGSU9gIGFuZCBgVkZJT19QQ0lgIGFsb25lIHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGVuYWJsZSB0aGUgcmVsZXZhbnQgY29kZS5cblxuU3VtbWFyaXppbmcgbXkgZmluZGluZ3MsIHRoaXMgcGF0Y2ggaXMgKndvcnRoIGZ1enppbmcqIGJlY2F1c2UgaXQgdG91Y2hlcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zLCBib3RoIHJlZ3VsYXIgZGV2aWNlIHJlc2V0cyBhbmQgaG90IHJlc2V0cy4gVGhlc2UgcmVzZXRzIGFyZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB2ZmlvLXBjaSB2aWEgdGhlIGBWRklPX0RFVklDRV9SRVNFVGAgYW5kIGBWRklPX0RFVklDRV9QQ0lfSE9UX1JFU0VUYCBpb2N0bHMuIFRoZSBtYWluIGZvY3VzIHN5bWJvbCBmb3IgZnV6emluZyBpcyBkZWZpbml0ZWx5IGB2ZmlvX3BjaV9jb3JlX2lvY3RsYC4gQXMgZm9yIGVuYWJsZSBjb25maWdzLCBgVkZJT2AgYW5kIGBWRklPX1BDSWAgd2lsbCBiZSBlbm91Z2guIEkgZGlkIG5vdGUgdGhhdCBgVkZJT2AgZGVwZW5kcyBvbiBgSU9NTVVGRGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBpdCdzIGdvb2QgdG8gaGF2ZSBpdCwgYnV0IG5vdCBzdHJpY3RseSByZXF1aXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM2MjAsIk91dHB1dFRva2VucyI6MTIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjQyLjAzNjcyNDU0NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMTk4Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWRklPXCIsXG4gICAgXCJWRklPX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZmaW9fcGNpX2NvcmVfaW9jdGxcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBWRklPIFBDSSByZXNldCBvcGVyYXRpb25zIChib3RoIHNpbmdsZSBkZXZpY2UgcmVzZXQgYW5kIGhvdCByZXNldCkuIFRoZXNlIHBhdGhzIGFyZSByZWFjaGFibGUgdmlhIHRoZSBWRklPX0RFVklDRV9SRVNFVCBhbmQgVkZJT19ERVZJQ0VfUENJX0hPVF9SRVNFVCBpb2N0bHMsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgZnJvbSB1c2Vyc3BhY2Ugb24gdmlydHVhbCBQQ0kgZGV2aWNlcyBib3VuZCB0byB0aGUgdmZpby1wY2kgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZGSU9cIixcbiAgICBcIlZGSU9fUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmZpb19wY2lfY29yZV9pb2N0bFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFZGSU8gUENJIHJlc2V0IG9wZXJhdGlvbnMgKGJvdGggc2luZ2xlIGRldmljZSByZXNldCBhbmQgaG90IHJlc2V0KS4gVGhlc2UgcGF0aHMgYXJlIHJlYWNoYWJsZSB2aWEgdGhlIFZGSU9fREVWSUNFX1JFU0VUIGFuZCBWRklPX0RFVklDRV9QQ0lfSE9UX1JFU0VUIGlvY3Rscywgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCBmcm9tIHVzZXJzcGFjZSBvbiB2aXJ0dWFsIFBDSSBkZXZpY2VzIGJvdW5kIHRvIHRoZSB2ZmlvLXBjaSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjQyLjExNjkzMzI5M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNTE2MzU1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDo0Mi4xMTc1ODA1NTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTIyNTA5ODQ2OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMGJiMWU3MGMyMDUzNDJkNTMxNzI1NGE2Nzg1NjI0NTU3NTFjNGY1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAyMToxOTo0OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbmluZGV4IGExMTNjNTU4NDVlMTAuLmU0NmIwYjFkOGE1OTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL3ZmaW9fcGNpX2NvcmUuY1xuKysrIGIvZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV9jb3JlLmNcbkBAIC0xMzM0LDEyICsxMzM0LDE0IEBAIHN0YXRpYyBpbnQgdmZpb19wY2lfaW9jdGxfcmVzZXQoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIFx0ICovXG4gXHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcbi1cdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbi1cdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cdTAwM2VwZGV2KTtcbi1cdGlmIChfX3ZmaW9fcGNpX21lbW9yeV9lbmFibGVkKHZkZXYpKVxuLVx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuK1x0LypcbitcdCAqIERyb3AgdGhlIGxvY2sgYmVmb3JlIGVudGVyaW5nIHRoZSBQQ0kgY29yZS5cbitcdCAqIFRoZSBQQ0kgY29yZSB3aWxsIHJlLWFjcXVpcmUgaXQgdmlhIG91ciAucmVzZXRfcHJlcGFyZSBob29rLlxuK1x0ICovXG4gXHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiBcbitcdHJldCA9IHBjaV90cnlfcmVzZXRfZnVuY3Rpb24odmRldi1cdTAwM2VwZGV2KTtcbitcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTI0MTgsOCArMjQyMCwzMyBAQCBpbnQgdmZpb19wY2lfY29yZV9zcmlvdl9jb25maWd1cmUoc3RydWN0IHZmaW9fcGNpX2NvcmVfZGV2aWNlICp2ZGV2LFxuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX3NyaW92X2NvbmZpZ3VyZSk7XG4gXG4rc3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuK3tcbitcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXG4rXHRpZiAodmRldikge1xuK1x0XHRkb3duX3dyaXRlKFx1MDAyNnZkZXYtXHUwMDNlbWVtb3J5X2xvY2spO1xuK1x0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbitcdFx0dmZpb19wY2lfemFwX2JhcnModmRldik7XG4rXHRcdHZmaW9fcGNpX2RtYV9idWZfbW92ZSh2ZGV2LCB0cnVlKTtcbitcdH1cbit9XG4rXG4rc3RhdGljIHZvaWQgdmZpb19wY2lfY29yZV9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuK3tcbitcdHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4rXG4rXHRpZiAodmRldikge1xuK1x0XHRpZiAoX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcbitcdFx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuK1x0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbitcdH1cbit9XG4rXG4gY29uc3Qgc3RydWN0IHBjaV9lcnJvcl9oYW5kbGVycyB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyA9IHtcbiBcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcbitcdC5yZXNldF9wcmVwYXJlID0gdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlLFxuK1x0LnJlc2V0X2RvbmUgPSB2ZmlvX3BjaV9jb3JlX3Jlc2V0X2RvbmUsXG4gfTtcbiBFWFBPUlRfU1lNQk9MX0dQTCh2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVycyk7XG4gXG5AQCAtMjU2MSw1NSArMjU4OCw1MiBAQCBzdGF0aWMgaW50IHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0KHN0cnVjdCB2ZmlvX2RldmljZV9zZXQgKmRldl9zZXQsXG4gXG4gXHRcdGlmICghb3duZWQpIHtcbiBcdFx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRcdGJyZWFrO1xuK1x0XHRcdGdvdG8gZXJyX291dDtcbiBcdFx0fVxuK1x0fVxuIFxuK1x0LyogWmFwLCBhbmQgc2V0IHBvd2VyIHN0YXRlICovXG4rXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KSB7XG4gXHRcdC8qXG4tXHRcdCAqIFRha2UgdGhlIG1lbW9yeSB3cml0ZSBsb2NrIGZvciBlYWNoIGRldmljZSBhbmQgemFwIEJBUlxuLVx0XHQgKiBtYXBwaW5ncyB0byBwcmV2ZW50IHRoZSB1c2VyIGFjY2Vzc2luZyB0aGUgZGV2aWNlIHdoaWxlIGluXG4tXHRcdCAqIHJlc2V0LiAgTG9ja2luZyBtdWx0aXBsZSBkZXZpY2VzIGlzIHByb25lIHRvIGRlYWRsb2NrLFxuK1x0XHQgKiBUYWtlIHRoZSBtZW1vcnkgd3JpdGUgbG9jayBmb3IgZWFjaCBkZXZpY2UsIHphcCBCQVJcbitcdFx0ICogbWFwcGluZ3MsIGFuZCByZXN0b3JlIHBvd2VyIHN0YXRlIGJlZm9yZSByZXNldC5cbitcdFx0ICogTG9ja2luZyBtdWx0aXBsZSBkZXZpY2VzIGlzIHByb25lIHRvIGRlYWRsb2NrLFxuIFx0XHQgKiBydW5hd2F5IGFuZCB1bndpbmQgaWYgd2UgaGl0IGNvbnRlbnRpb24uXG4gXHRcdCAqL1xuIFx0XHRpZiAoIWRvd25fd3JpdGVfdHJ5bG9jayhcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKSkge1xuIFx0XHRcdHJldCA9IC1FQlVTWTtcbi1cdFx0XHRicmVhaztcbitcbitcdFx0XHQvKlxuK1x0XHRcdCAqIFdlIGZhaWxlZCB0byBsb2NrIFRISVMgZGV2aWNlLiBXZSBtdXN0IHN0ZXAgYmFjayBvbmVcbitcdFx0XHQgKiBkZXZpY2Ugc28gZXJyX3VuZG8gb25seSB1bmxvY2tzIGRldmljZXMgdGhhdCBzdWNjZWVkZWQuXG4rXHRcdFx0ICovXG4rXHRcdFx0aWYgKCFsaXN0X2VudHJ5X2lzX2hlYWQodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpKSB7XG4rXHRcdFx0XHR2ZGV2ID0gbGlzdF9wcmV2X2VudHJ5KHZkZXYsIHZkZXYuZGV2X3NldF9saXN0KTtcbitcdFx0XHRcdGdvdG8gZXJyX3VuZG87XG4rXHRcdFx0fVxuK1x0XHRcdGdvdG8gZXJyX291dDtcbiBcdFx0fVxuIFxuLVx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgdHJ1ZSk7XG4gXHRcdHZmaW9fcGNpX3phcF9iYXJzKHZkZXYpO1xuK1x0XHR2ZmlvX3BjaV9zZXRfcG93ZXJfc3RhdGUodmRldiwgUENJX0QwKTtcbiBcdH1cbiBcbi1cdGlmICghbGlzdF9lbnRyeV9pc19oZWFkKHZkZXYsXG4tXHRcdFx0XHRcdTAwMjZkZXZfc2V0LVx1MDAzZWRldmljZV9saXN0LCB2ZGV2LmRldl9zZXRfbGlzdCkpIHtcbi1cdFx0dmRldiA9IGxpc3RfcHJldl9lbnRyeSh2ZGV2LCB2ZGV2LmRldl9zZXRfbGlzdCk7XG4tXHRcdGdvdG8gZXJyX3VuZG87XG4tXHR9XG4tXG4tXHQvKlxuLVx0ICogVGhlIHBjaV9yZXNldF9idXMoKSB3aWxsIHJlc2V0IGFsbCB0aGUgZGV2aWNlcyBpbiB0aGUgYnVzLlxuLVx0ICogVGhlIHBvd2VyIHN0YXRlIGNhbiBiZSBub24tRDAgZm9yIHNvbWUgb2YgdGhlIGRldmljZXMgaW4gdGhlIGJ1cy5cbi1cdCAqIEZvciB0aGVzZSBkZXZpY2VzLCB0aGUgcGNpX3Jlc2V0X2J1cygpIHdpbGwgaW50ZXJuYWxseSBzZXRcbi1cdCAqIHRoZSBwb3dlciBzdGF0ZSB0byBEMCB3aXRob3V0IHZmaW8gZHJpdmVyIGludm9sdmVtZW50LlxuLVx0ICogRm9yIHRoZSBkZXZpY2VzIHdoaWNoIGhhdmUgTm9Tb2Z0UnN0LSwgdGhlIHJlc2V0IGZ1bmN0aW9uIGNhblxuLVx0ICogY2F1c2UgdGhlIFBDSSBjb25maWcgc3BhY2UgcmVzZXQgd2l0aG91dCByZXN0b3JpbmcgdGhlIG9yaWdpbmFsXG4tXHQgKiBzdGF0ZSAoc2F2ZWQgbG9jYWxseSBpbiAndmRldi1cdTAwM2VwbV9zYXZlJykuXG4tXHQgKi9cbitcdC8qIERyb3AgbG9ja3MgYmVmb3JlIGNyb3NzaW5nIGludG8gUENJIGNvcmUgKi9cbiBcdGxpc3RfZm9yX2VhY2hfZW50cnkodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCwgdmRldi5kZXZfc2V0X2xpc3QpXG4tXHRcdHZmaW9fcGNpX3NldF9wb3dlcl9zdGF0ZSh2ZGV2LCBQQ0lfRDApO1xuK1x0XHR1cF93cml0ZShcdTAwMjZ2ZGV2LVx1MDAzZW1lbW9yeV9sb2NrKTtcbiBcbitcdC8qIFBDSSBjb3JlIGhhbmRsZXMgdGhlIHJlc2V0IGFuZCBjYWxscyAucmVzZXQgaG9va3MgKi9cbiBcdHJldCA9IHBjaV9yZXNldF9idXMocGRldik7XG4gXG4tXHR2ZGV2ID0gbGlzdF9sYXN0X2VudHJ5KFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsXG4tXHRcdFx0ICAgICAgIHN0cnVjdCB2ZmlvX3BjaV9jb3JlX2RldmljZSwgdmRldi5kZXZfc2V0X2xpc3QpO1xuK1x0Z290byBlcnJfb3V0O1xuIFxuIGVycl91bmRvOlxuK1x0LyogVW53aW5kIGxvY2tzIGNsZWFubHkgZm9yIGRldmljZXMgd2Ugc3VjY2Vzc2Z1bGx5IGxvY2tlZCAqL1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tX3JldmVyc2UodmRldiwgXHUwMDI2ZGV2X3NldC1cdTAwM2VkZXZpY2VfbGlzdCxcbi1cdFx0XHRcdFx0IHZkZXYuZGV2X3NldF9saXN0KSB7XG4tXHRcdGlmICh2ZGV2LVx1MDAzZXZkZXYub3Blbl9jb3VudCBcdTAwMjZcdTAwMjYgX192ZmlvX3BjaV9tZW1vcnlfZW5hYmxlZCh2ZGV2KSlcbi1cdFx0XHR2ZmlvX3BjaV9kbWFfYnVmX21vdmUodmRldiwgZmFsc2UpO1xuK1x0XHRcdFx0XHQgdmRldi5kZXZfc2V0X2xpc3QpXG4gXHRcdHVwX3dyaXRlKFx1MDAyNnZkZXYtXHUwMDNlbWVtb3J5X2xvY2spO1xuLVx0fVxuIFxuK2Vycl9vdXQ6XG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHZkZXYsIFx1MDAyNmRldl9zZXQtXHUwMDNlZGV2aWNlX2xpc3QsIHZkZXYuZGV2X3NldF9saXN0KVxuIFx0XHRwbV9ydW50aW1lX3B1dChcdTAwMjZ2ZGV2LVx1MDAzZXBkZXYtXHUwMDNlZGV2KTtcbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDIxOjIwOjQyLjExNzU4MTg2M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI1MDk1Njc2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFZGSU8gUENJIExvY2tpbmcgRml4KipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvdmZpby9wY2kvdmZpb19wY2lfY29yZS5jYC4gSXQncyBhbGwgYWJvdXQgdGlnaHRlbmluZyB1cCB0aGUgbG9ja2luZyBhcm91bmQgUENJIHJlc2V0IG9wZXJhdGlvbnMg4oCTIHNwZWNpZmljYWxseSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGFuZCBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBJdCdzIGEgcHJldHR5IHRhcmdldGVkIGNoYW5nZSwgcmVhbGx5IGRyaWxsaW5nIGRvd24gb24gdGhlIHN5bmNocm9uaXphdGlvbi5cblxuTXkgaW1tZWRpYXRlIGltcHJlc3Npb24gaXMgdGhhdCB0aGlzIGlzIGEgKmdvb2QqIHRoaW5nLiBUaGV5J3JlIGFkZGluZyBgdmZpb19wY2lfY29yZV9yZXNldF9wcmVwYXJlYCBhbmQgYHZmaW9fcGNpX2NvcmVfcmVzZXRfZG9uZWAgaG9va3MgdG8gdGhlIGB2ZmlvX3BjaV9jb3JlX2Vycl9oYW5kbGVyc2AsIHdoaWNoIGlzIGEgc21hcnQgbW92ZS4gVGhleSdyZSBjbGVhcmx5IHRyeWluZyB0byBhdm9pZCBwb3RlbnRpYWwgZGVhZGxvY2tzIG9yIGxvY2sgb3JkZXIgcmV2ZXJzYWxzIGR1cmluZyBQQ0kgcmVzZXQgc2VxdWVuY2VzLiBUaGUgY29yZSBvZiB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgaG93IHRoZSBjb2RlIHdhcyBtYW5hZ2luZyBgdmRldi1cdTAwM2VtZW1vcnlfbG9ja2Ag4oCTIHNwZWNpZmljYWxseSBgZG93bl93cml0ZWAgYW5kIGB1cF93cml0ZWAgYXJvdW5kIHRoZSBjcml0aWNhbCBzZWN0aW9ucyBpbnZvbHZpbmcgcG93ZXIgc3RhdGUgdHJhbnNpdGlvbnMgYW5kIERNQSBidWZmZXIgbWFuYWdlbWVudC5cblxuTG9va2luZyBjbG9zZWx5IGF0IHRoZSBgdmZpb19wY2lfaW9jdGxfcmVzZXRgIGRpZmYsIHRoZSBrZXkgY2hhbmdlIGlzIGRyb3BwaW5nIHRoZSBsb2NrIChgdXBfd3JpdGVgKSBiZWZvcmUgY2FsbGluZyBgcGNpX3RyeV9yZXNldF9mdW5jdGlvbmAsIHdpdGggdGhlIFBDSSBjb3JlIHJlLWFjcXVpcmluZyBpdCB2aWEgdGhlIGAucmVzZXRfcHJlcGFyZWAgaG9vay4gVGhpcyBpcyBwcmVjaXNlbHkgdGhlIGtpbmQgb2Ygc3RyYXRlZ3kgSSdkIGV4cGVjdCB0byBzZWUgZm9yIGF2b2lkaW5nIGxvY2sgY29udGVudGlvbiB3aGVuIGRlYWxpbmcgd2l0aCBzaGFyZWQgcmVzb3VyY2VzIGluIGEgbXVsdGktdGhyZWFkZWQgY29udGV4dC4gQW5kIGZyb20gd2hhdCBJIHNlZSwgd2UgZW5zdXJlIHRoYXQgd2UgcmUtYWNxdWlyZSBpdCBsYXRlci4gVGhlIGAucmVzZXRfcHJlcGFyZWAgYW5kIGAucmVzZXRfZG9uZWAgaG9va3MgaGFuZGxlIHRoZSBuZWNlc3Nhcnkgc3RhdGUgdHJhbnNpdGlvbnMgYW5kIERNQSBidWZmZXIgbW92ZW1lbnQgd2l0aGluIHRoZSBwcm90ZWN0ZWQgY3JpdGljYWwgc2VjdGlvbi5cblxuVGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBmb3IgdGhlIHRyeV9sb2NrIGFyZSBpbnRlcmVzdGluZywgYW5kIHNwZWNpZmljYWxseSB0aGUgY2hhbmdlcyB0byBoYW5kbGluZyBlcnJfdW5kbyBhbmQgYXZvaWRpbmcgdW5sb2NraW5nIGRldmljZXMgd2UgbmV2ZXIgbG9ja2VkIGluIHRoZSBmaXJzdCBwbGFjZSwgbWFrZXMgc2Vuc2UgaW4gYW4gYXRvbWljIGNvbnRleHQuXG5cbkNydWNpYWxseSwgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gYW55IGRhdGEgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBhbGxvY2F0aW9ucywgYW5kICphYnNvbHV0ZWx5IG5vKiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXRpZXMuIEtBU0FOL0xPQ0tERVAgYXJlIHRoZSBtYWluIHRvb2xzIHRoYXQgd291bGQgcGljayB1cCBhbnkgbGluZ2VyaW5nIGlzc3Vlcy4gIEtNU0FOIGlzbid0IHJlbGV2YW50IGhlcmUgc2luY2UgaXQncyBmdW5kYW1lbnRhbGx5IGEgbG9ja2luZyBpc3N1ZSwgYW5kIHRob3NlIGFyZSBjYXVnaHQgYnkgS0FTQU4uXG5cblllYWgsIGl0J3MgYSBzdHJhaWdodGZvcndhcmQsIHdlbGwtY29uc2lkZXJlZCBsb2NraW5nIGZpeC5cbkknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBwYXRjaCByZXNvbHZlcyBhIHBvdGVudGlhbCBkZWFkbG9jay5cbkknbGwgY2FsbCBpdCBzZXQtcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0NCwiT3V0cHV0VG9rZW5zIjoxODUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NDcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QyMToyMDo1NC4zNjg1NDE5NTRaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGxvY2tpbmcgYW5kIHN0YXRlIG1hbmFnZW1lbnQgZHVyaW5nIFBDSSByZXNldCBvcGVyYXRpb25zIGluIHRoZSBWRklPIFBDSSBkcml2ZXIuIEl0IGRyb3BzIGxvY2tzIGJlZm9yZSBjYWxsaW5nIGludG8gdGhlIFBDSSBjb3JlIGFuZCByZS1hY3F1aXJlcyB0aGVtIHZpYSBuZXcgYC5yZXNldF9wcmVwYXJlYCBhbmQgYC5yZXNldF9kb25lYCBob29rcyB0byBwcmV2ZW50IGRlYWRsb2Nrcy4gSXQgYWxzbyBmaXhlcyBsb2NrIHVud2luZGluZyBpbiBgdmZpb19wY2lfZGV2X3NldF9ob3RfcmVzZXRgLiBUaGVzZSBjaGFuZ2VzIGFyZSBwdXJlbHkgcmVsYXRlZCB0byBzeW5jaHJvbml6YXRpb24gYW5kIGRldmljZSBzdGF0ZSwgYW5kIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBzdHJ1Y3R1cmVzLCBhbGxvY2F0aW9ucywgb3IgZGF0YSBjb3BpZXMgdG8gdXNlciBzcGFjZS4gVGhlcmVmb3JlLCB0aGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgZGVhZGxvY2tzIG9yIHVzZS1hZnRlci1mcmVlKSB3b3VsZCBiZSBjYXVnaHQgYnkgTE9DS0RFUCBvciBLQVNBTiwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBsb2NraW5nIGFuZCBzdGF0ZSBtYW5hZ2VtZW50IGR1cmluZyBQQ0kgcmVzZXQgb3BlcmF0aW9ucyBpbiB0aGUgVkZJTyBQQ0kgZHJpdmVyLiBJdCBkcm9wcyBsb2NrcyBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSBQQ0kgY29yZSBhbmQgcmUtYWNxdWlyZXMgdGhlbSB2aWEgbmV3IGAucmVzZXRfcHJlcGFyZWAgYW5kIGAucmVzZXRfZG9uZWAgaG9va3MgdG8gcHJldmVudCBkZWFkbG9ja3MuIEl0IGFsc28gZml4ZXMgbG9jayB1bndpbmRpbmcgaW4gYHZmaW9fcGNpX2Rldl9zZXRfaG90X3Jlc2V0YC4gVGhlc2UgY2hhbmdlcyBhcmUgcHVyZWx5IHJlbGF0ZWQgdG8gc3luY2hyb25pemF0aW9uIGFuZCBkZXZpY2Ugc3RhdGUsIGFuZCBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgc3RydWN0dXJlcywgYWxsb2NhdGlvbnMsIG9yIGRhdGEgY29waWVzIHRvIHVzZXIgc3BhY2UuIFRoZXJlZm9yZSwgdGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIGRlYWRsb2NrcyBvciB1c2UtYWZ0ZXItZnJlZSkgd291bGQgYmUgY2F1Z2h0IGJ5IExPQ0tERVAgb3IgS0FTQU4sIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gdW5uZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[1] Phase: Succeeded StartedAt: 2026-08-07 21:21:05 +0000 UTC FinishedAt: 2026-08-07 21:21:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 21:21:05 +0000 UTC FinishedAt: 2026-08-07 21:21:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2] Phase: Succeeded StartedAt: 2026-08-07 21:21:05 +0000 UTC FinishedAt: 2026-08-07 22:41:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 21:21:05 +0000 UTC FinishedAt: 2026-08-07 22:41:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 21:21:05 +0000 UTC FinishedAt: 2026-08-07 21:21:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 21:21:05 +0000 UTC FinishedAt: 2026-08-07 21:21:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-1105757988/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 21:21:15 +0000 UTC FinishedAt: 2026-08-07 21:42:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 21:21:15 +0000 UTC FinishedAt: 2026-08-07 21:42:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a4b04118-37e7-4a08-b004-0baac6e5fef3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-1105757988/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ed1f9d3f-a164-4202-9c18-dcb53a435218", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3127384418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 21:21:15 +0000 UTC FinishedAt: 2026-08-07 21:41:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a4b04118-37e7-4a08-b004-0baac6e5fef3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-1105757988/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ed1f9d3f-a164-4202-9c18-dcb53a435218", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3127384418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 21:42:05 +0000 UTC FinishedAt: 2026-08-07 21:42:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 21:42:05 +0000 UTC FinishedAt: 2026-08-07 21:42:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 21:42:05 +0000 UTC FinishedAt: 2026-08-07 21:42:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 21:42:05 +0000 UTC FinishedAt: 2026-08-07 21:42:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-3115304995/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 21:42:15 +0000 UTC FinishedAt: 2026-08-07 21:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 21:42:15 +0000 UTC FinishedAt: 2026-08-07 21:44:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ed1f9d3f-a164-4202-9c18-dcb53a435218,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3127384418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 21:44:20 +0000 UTC FinishedAt: 2026-08-07 21:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 21:44:20 +0000 UTC FinishedAt: 2026-08-07 21:44:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 21:44:20 +0000 UTC FinishedAt: 2026-08-07 22:05:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 21:44:20 +0000 UTC FinishedAt: 2026-08-07 22:05:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a4b04118-37e7-4a08-b004-0baac6e5fef3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-3115304995/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "338044b6-8b8f-4976-8550-8b3018db405b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3786067159/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 21:44:20 +0000 UTC FinishedAt: 2026-08-07 22:05:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a4b04118-37e7-4a08-b004-0baac6e5fef3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-3115304995/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "338044b6-8b8f-4976-8550-8b3018db405b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3786067159/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 22:05:18 +0000 UTC FinishedAt: 2026-08-07 22:05:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 22:05:18 +0000 UTC FinishedAt: 2026-08-07 22:05:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 22:05:18 +0000 UTC FinishedAt: 2026-08-07 22:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 22:05:18 +0000 UTC FinishedAt: 2026-08-07 22:07:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*338044b6-8b8f-4976-8550-8b3018db405b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3786067159/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 22:07:21 +0000 UTC FinishedAt: 2026-08-07 22:41:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 22:07:21 +0000 UTC FinishedAt: 2026-08-07 22:41:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*ed1f9d3f-a164-4202-9c18-dcb53a435218,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*338044b6-8b8f-4976-8550-8b3018db405b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3127384418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3786067159/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 22:07:21 +0000 UTC FinishedAt: 2026-08-07 22:07:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 22:07:21 +0000 UTC FinishedAt: 2026-08-07 22:07:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-3301246268/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 22:07:21 +0000 UTC FinishedAt: 2026-08-07 22:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 22:07:21 +0000 UTC FinishedAt: 2026-08-07 22:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 22:07:21 +0000 UTC FinishedAt: 2026-08-07 22:07:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 22:07:31 +0000 UTC FinishedAt: 2026-08-07 22:41:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq82n5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":["kvm"],"focus_symbols":["vfio_pci_core_ioctl"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"ea2bff00da89d7767d677bb68470130ba96f4928","config_name":"upstream-apparmor-kasan.config","enable_configs":["VFIO","VFIO_PCI"],"series_id":"94ca89a0-1bb0-4a70-9fef-a25e166fa2e8","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 22:07:31 +0000 UTC FinishedAt: 2026-08-07 22:41:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ed1f9d3f-a164-4202-9c18-dcb53a435218,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*338044b6-8b8f-4976-8550-8b3018db405b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3127384418/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-build-action-3786067159/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowq82n5/series-workflowq82n5-convert-artifact-3301246268/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}