Name: series-workflows64df Phase: Succeeded StartedAt: 2026-08-07 15:32:27 +0000 UTC FinishedAt: 2026-08-07 16:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[0] Phase: Succeeded StartedAt: 2026-08-07 15:32:27 +0000 UTC FinishedAt: 2026-08-07 15:36:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[0].run-triage Phase: Succeeded StartedAt: 2026-08-07 15:32:27 +0000 UTC FinishedAt: 2026-08-07 15:36:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "4e91eda2-5c05-4660-be1c-8884165497c1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_select_queue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZWxlY3RfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNlbGVjdGluZyBhIHRyYW5zbWlzc2lvbiBxdWV1ZSBmb3IgbmV0d29yayBwYWNrZXRzIChza19idWZmKSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgY2hlY2tzIHRoZSBgZ3NvX3R5cGVgIG9mIHRoZSBwYWNrZXQgYWdhaW5zdCBgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AgYW5kIHZlcmlmaWVzIGlmIHRoZSBzZWxlY3RlZCBxdWV1ZSBwZXJtaXRzIFRTTyB2aWEgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBxdWV1ZSBzZWxlY3Rpb24gYmFzZWQgb24gYWxyZWFkeSBpbml0aWFsaXplZCBmaWVsZHMgaW4gdGhlIGBza19idWZmYCBhbmQgdGhlIGRyaXZlciYjMzk7cyBwcml2YXRlIGRhdGEgc3RydWN0dXJlLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBxdWV1ZSBzZWxlY3Rpb24gb3Igb3V0LW9mLWJvdW5kcyBxdWV1ZSBpbmRpY2VzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGZvciBHU08gZnJhbWVzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIFBDSSBhbmQgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxOWY1M2VjNDRmNjgyMjJiMTIwMjE2ODRjYTA2YTAwOGMxNGRkMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE1OjM0OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTY0NDUsMTkgJiM0Mzs2NDQ1LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbiBzdGF0aWMgdTE2IHN0bW1hY19zZWxlY3RfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcbiB7XG4tXHRpbnQgZ3NvID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZWdzb190eXBlO1xuJiM0MztcdHUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi1cdTAwM2VyZWFsX251bV90eF9xdWV1ZXM7XG4mIzQzO1x0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdGlmIChnc28gXHUwMDI2IChTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNiB8IFNLQl9HU09fVURQX0w0KSkge1xuLVx0XHQvKlxuLVx0XHQgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgVFNPL1VTT1xuLVx0XHQgKiBjYXBhYmxlIFF1ZXVlcy4gTGV0JiMzOTtzIHVzZSBhbHdheXMgdGhlIFF1ZXVlIDBcbi1cdFx0ICogYmVjYXVzZSBpZiBUU08vVVNPIGlzIHN1cHBvcnRlZCB0aGVuIGF0IGxlYXN0IHRoaXNcbi1cdFx0ICogb25lIHdpbGwgYmUgY2FwYWJsZS5cbiYjNDM7XHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fdHlwZSBcdTAwMjYgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xuJiM0MztcdFx0LyogR1NPIGZyYW1lcyBuZWVkIEhXIFRTTy9VU08sIHdoaWNoIGNhbm5vdCBydW4gb24gVEJTIHF1ZXVlcy5cbiYjNDM7XHRcdCAqIEZhbGwgYmFjayB0byB0aGUgcXVldWUgcmVzZXJ2ZWQgZm9yIFRTTyAocXVldWUgMCkuXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdHJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuJiM0MztcdHJldHVybiBxdWV1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICphZGRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfc2VsZWN0X3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE5ZjUzZWM0NGY2ODIyMmIxMjAyMTY4NGNhMDZhMDA4YzE0ZGQxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMTU6MzQ6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTY0NDUsMTkgJiM0Mzs2NDQ1LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwKIHN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpCiB7Ci0JaW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7Z3NvX3R5cGU7CiYjNDM7CXUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi0mZ3Q7cmVhbF9udW1fdHhfcXVldWVzOwomIzQzOwlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JaWYgKGdzbyAmYW1wOyAoU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjYgfCBTS0JfR1NPX1VEUF9MNCkpIHsKLQkJLyoKLQkJICogVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIFRTTy9VU08KLQkJICogY2FwYWJsZSBRdWV1ZXMuIExldCYjMzk7cyB1c2UgYWx3YXlzIHRoZSBRdWV1ZSAwCi0JCSAqIGJlY2F1c2UgaWYgVFNPL1VTTyBpcyBzdXBwb3J0ZWQgdGhlbiBhdCBsZWFzdCB0aGlzCi0JCSAqIG9uZSB3aWxsIGJlIGNhcGFibGUuCiYjNDM7CWlmICgoc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZSAmYW1wOyBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcykgJmFtcDsmYW1wOwomIzQzOwkgICAgIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpKSB7CiYjNDM7CQkvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLgomIzQzOwkJICogRmFsbCBiYWNrIHRvIHRoZSBxdWV1ZSByZXNlcnZlZCBmb3IgVFNPIChxdWV1ZSAwKS4KIAkJICovCiAJCXJldHVybiAwOwogCX0KIAotCXJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtJmd0O3JlYWxfbnVtX3R4X3F1ZXVlczsKJiM0MzsJcmV0dXJuIHF1ZXVlOwogfQogCiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBgc3RtbWFjYCBRdWV1ZSBTZWxlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBmbG9hdGluZyBhcm91bmQgdGhhdCYjMzk7cyB0d2Vha2luZyBob3cgYHN0bW1hY19zZWxlY3RfcXVldWVgIHdvcmtzLCBzcGVjaWZpY2FsbHkgZm9yIEdTTyBmcmFtZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaGUgY29yZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIHF1ZXVlIHNlbGVjdGlvbjsgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvZiByZXR1cm5pbmcgcXVldWUgMCBmb3IgR1NPIGZyYW1lcywgaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBzZWxlY3QgYSBxdWV1ZS4gQW5kIG9ubHkgaWYgdGhlIGNob3NlbiBxdWV1ZSBpc24mIzM5O3Qgc3VpdGFibGUgZm9yIFRTTyBkb2VzIGl0IGZhbGxiYWNrIHRvIHF1ZXVlIDAuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gIEEgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcywgY2FuIEkgcmVhZGlseSB0ZXN0IHRoaXMgY2hhbmdlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/ICBgc3RtbWFjYCwgYXMgSSByZWNhbGwsIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyIGZvciAxMC8xMDAvMTAwMC9FUU9TLiBJcyBpdCBlbXVsYXRlZCBieSBRRU1VPyBJIGRvbiYjMzk7dCB0aGluayBRRU1VICpuYXRpdmVseSogZW11bGF0ZXMgYHN0bW1hY2AuIEkgaGF2ZSB0byBkaWcgYSBiaXQuIFBlcmhhcHMgaXQmIzM5O3MgcHJlc2VudCBpbiBhbiBlbXVsYXRlZCBBUk0gYm9hcmQgd2l0aGluIFFFTVUuIE9yIHBlcmhhcHMgaXQmIzM5O3Mgbm90IGV2ZW4gdGVzdGFibGUgdGhlcmUuCgpIbW0sIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBRRU1VJiMzOTtzIG5ldHdvcmsgZGV2aWNlIGxpc3Q6IGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgYGh3L25ldC9mdGdtYWMxMDAuY2AsIGBody9uZXQvbnBjbTd4eF9lbWMuY2AsIGBody9uZXQvc21jOTFjMTExLmNgLCBgaHcvbmV0L2xhbjkxMTguY2AsIGBody9uZXQveGdtYWMuY2AgKEhpZ2hiYW5rL01pZHdheSkuIFdhaXQsIGNvdWxkIGB4Z21hY2AgYmUgYHN0bW1hY2AgaW4gZGlzZ3Vpc2U/ICBObywgbm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBgeGdtYWNgIHNlZW1zIHRvIGJlIGVpdGhlciBDYWx4ZWRhIG9yIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7cyBEV01BQy4KClJpZ2h0LCBzbyB0byBjb250aW51ZSB0aGlzIGFzc2Vzc21lbnQsIGxldCYjMzk7cyBjaGVjayBpdHMgZGV2aWNlIGJpbmRpbmc6IGlzIGBzdG1tYWNgIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZT8gQWhhISBJdCBoYXMgUENJIGJpbmRpbmdzISBUaGF0JiMzOTtzIGdvb2QgbmV3czsgaXQgaW1wcm92ZXMgdGhlIGNoYW5jZXMgb2YgdGVzdGluZy4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD0xMDc9c3ludGF4IChlLmcuIGZvciBQQ0kgbW9kdWxlKTo6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwOC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcdTAwM2NvcHRpb25cdTAwM2U9XHUwMDNjVkFMMVx1MDAzZSxcdTAwM2NWQUwyXHUwMDNlLC4uLl1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXHR1bnNpZ25lZCBpbnQgZnVuYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cdHNpemVfdCBuZnVuY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkzOnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2xpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmNfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTc6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4LVx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Nj1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MDY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA3LVx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MTA9c3RhdGljIGludCBlaGxfcmdtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODIxOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMi1cdC5zZXR1cCA9IGVobF9yZ21paV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQxPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NDg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDktXHQuc2V0dXAgPSBlaGxfcHNlMF9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NTI9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg3MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg3MS1cdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg5MD1zdGF0aWMgaW50IGVobF9wc2UxX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODk3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk4LVx0LnNldHVwID0gZWhsX3BzZTFfcmdtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTAxPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MTk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MjAtXHQuc2V0dXAgPSBlaGxfcHNlMV9zZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NDQ9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NTM6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTQtXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTU3PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY3LVx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTFfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk3MD1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5ODA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgxLVx0LnNldHVwID0gYWRsc19zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05ODQ9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTk0OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkxX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5NS1cdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMz1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxuX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQzLVx0LnNldHVwID0gYWRsbl9zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDctXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBnYWxpbGVvX3N0bW1hY19kbWlfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1NC1cdC5mdW5jID0gZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1ODpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU5LVx0e1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA2OTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgaW90MjA0MF9zdG1tYWNfZG1pX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNzAtXHQuZnVuYyA9IGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExMDk9c3RhdGljIGludCBxdWFya19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTE5LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExMjA6XHRyZXQgPSBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIocGRldiwgcXVhcmtfcGNpX2RtaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMjEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDYtXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY2Olx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjctXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NzY9c3RydWN0IGxvb25nc29uX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjgyOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cdC5zZXR1cCA9IGxvb25nc29uX2dtYWNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3OC1cdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAzLVx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM3LVx0cGxhdC1cdTAwM2VmaXhfc29jX3Jlc2V0ID0gbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzg6XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM5Olx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDAtXHRsZC1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTQzOlx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0NC1cdHJldCA9IGluZm8tXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MTg4PXN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE5MzpcdHJldCA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoZGV2LCBic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjQ4LVx0cGxhdC1cdTAwM2Vjb3JlX3R5cGVcdFx0PSBEV01BQ19DT1JFX0dNQUM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ5Olx0cGxhdC1cdTAwM2VzdXNwZW5kXHRcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTAtXHRwbGF0LVx1MDAzZXJlc3VtZVx0XHQ9IG1vdG9yY29tbV9yZXN1bWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjEyOmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI2OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyODppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjQ0OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9yZXN1bWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjk6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjEwOmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMC1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MzM9c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVx0LnNldHVwID0gc25wc19nbWFjNV9kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MDpcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MTpcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODc6ICogc3RtbWFjX3BjaV9yZW1vdmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODgtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5MjpzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA2LVx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1Olx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTY6XHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE3LVx0LmRyaXZlciAgICAgICAgID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2ODMKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA0OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBgc3RtbWFjYCBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGlzIGBzdG1tYWNgIGRyaXZlciBpcyBhY3R1YWxseSB0ZXN0YWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQsIGdpdmVuIHRoZSBjb25zdHJhaW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHNpbmNlIHRoZSBkcml2ZXIgaGFzIFBDSSBiaW5kaW5ncyAoYHN0bW1hY19wY2kuY2ApLCBpdCAqc2hvdWxkKiBiZSBwcm9iZWFibGUgaWYgYSBjb3JyZXNwb25kaW5nIFBDSSBkZXZpY2UgaXMgZW11bGF0ZWQsIG9yIGlmIEkgdXNlIGEgdmlydHVhbCBQQ0kgZGV2aWNlLiBCdXQgdGhlbiBJIHBhdXNlZCAtIGRvZXMgUUVNVSBldmVuICplbXVsYXRlKiBTVE1NQUMgb3ZlciBQQ0k/IEkgbmVlZCB0byBjaGVjay4KClRoZW4gSSByZWNhbGxlZCB0aGF0IHN5emthbGxlciBvZnRlbiB0ZXN0cyBuZXR3b3JrIGRyaXZlcnMuIFBlcmhhcHMgc3l6a2FsbGVyIHV0aWxpemVzIGB2bmV0YCBvciBgZHVtbXlgIGludGVyZmFjZXMsIG9yIG1heWJlIGV2ZW4gaGFzIHNvbWUgY292ZXJhZ2Ugd2l0aG91dCBhIGRpcmVjdCBQQ0kgZGV2aWNlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGNhbiB0ZXN0IGl0IGlmIGl0JiMzOTtzIGEgcGxhdGZvcm0gZGV2aWNlIG9uIEFSTSwgb3IgaWYgdGhlcmUmIzM5O3MgYSBQQ0kgZGV2aWNlLgoKQnV0IHRoZW4gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEl0IGNpdGVzIGV4YW1wbGVzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIG9yIFNtYXJ0TklDIGRyaXZlcnMsIHRoZSBraW5kcyBvZiB0aGluZ3MgdGhhdCByZXF1aXJlIGRlZGljYXRlZCBoYXJkd2FyZS4gQ291bGQgYHN0bW1hY2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/CgpJIG5lZWQgdG8gZ2V0IHRvIHRoZSByb290IG9mIGhvdyBgc3RtbWFjYCBpcyB1c2VkLiBJIGtub3cgaXQmIzM5O3MgdXNlZCBpbiBudW1lcm91cyBBUk0gU29DcyBmcm9tIFJvY2tjaGlwLCBBbGx3aW5uZXIsIEFtbG9naWMsIE5YUCwgYW5kIG90aGVycy4gSSBrbm93IFFFTVUgKmRvZXMqIGVtdWxhdGUgc29tZSBvZiB0aGVzZSBTb0NzIOKAkyBJJiMzOTt2ZSBzZWVuIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgKG1hcHBlZCB0byBgc3VuOGktZW1hY2AsIG5vdCBgc3RtbWFjYCkuIEkmIzM5O20gbG9va2luZyBmb3Igd2hlcmUgYHN0bW1hY2AgZ2V0cyB1c2VkIGluIFFFTVUuIExldCBtZSBsb29rIGF0IHRoZSBRRU1VIHNvdXJjZS4KCk9rYXksIEkgc2VlIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIHRoYXQmIzM5O3MgYHN1bjhpLWVtYWNgLiBUaGVuIHRoZXJlJiMzOTtzIGBody9uZXQvY2FkZW5jZV9nZW0uY2AsIHRoYXQmIzM5O3MgZm9yIHRoZSBgbWFjYmAgZHJpdmVyLiBBbmQgYGh3L25ldC9pbXhfZmVjLmNgLCB0aGF0JiMzOTtzIGBmZWNgLiBgaHcvbmV0L25wY203eHhfZW1jLmNgIGlzIGZvciBgbnBjbTd4eF9lbWNgLCBhbmQgYGh3L25ldC94Z21hYy5jYCBpcyBvYnZpb3VzbHkgYHhnbWFjYC4gSSBhbSB3b25kZXJpbmcgaWYgYHN0bW1hY2AgY2FuIGV2ZW4gYmUgdXNlZCBpbiBRRU1VIGF0IGFsbD8KCldhaXQsIEkgdGhpbmsgSSByZW1lbWJlciBub3cuIGBzdG1tYWNgIGlzIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpLiBTbyB0aGF0IG1lYW5zIFFFTVUgKnNob3VsZCogaGF2ZSBhbiBlbXVsYXRpb24gb2YgdGhpcy4gTGV0IG1lIHNlZS4uLiB5ZXMhIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYC4gT2theSwgbm93IEkganVzdCBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXTUFDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTk4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sOjc6dGl0bGU6IEFsdGVyYSBTT0NGUEdBIFNvQyBEV01BQyBjb250cm9sbGVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC04LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sPTEyPWRlc2NyaXB0aW9uOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTMtICBUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgaW1wbGVtZW50YXRpb24gb2YgdGhlXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbDoxNDogIFN5bm9wc3lzIERXTUFDIGZvciB0aGUgQ3ljbG9uZTUsIEFycmlhNSwgU3RyYXRpeDEwLCBBZ2lsZXg1IGFuZCBBZ2lsZXg3XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC0xNS0gIGZhbWlsaWVzIG9mIGNoaXBzLlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sPTMxPXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTEzLSAgICBkZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sOjExNDogICAgICBTaG91bGQgYmUgdGhlIHBoYW5kbGUgdG8gdGhlIGVtYWMgc3BsaXR0ZXIgc29mdCBJUCBub2RlIGlmIERXTUFDXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC0xMTUtICAgICAgY29udHJvbGxlciBpcyBjb25uZWN0ZWQgYW4gZW1hYyBzcGxpdHRlci5cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbD02PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwtNy1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjg6dGl0bGU6IEFtbG9naWMgTWVzb24gRFdNQUMgRXRoZXJuZXQgY29udHJvbGxlclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbD0xMzA9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbC0xNDktICAgICAgLSBkZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjE1MDogICAgICAgICAgVGhlIGZpcnN0IHJlZ2lzdGVyIHJhbmdlIHNob3VsZCBiZSB0aGUgb25lIG9mIHRoZSBEV01BQyBjb250cm9sbGVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbC0xNTEtICAgICAgLSBkZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sOjc6dGl0bGU6IEludGVsIERXTUFDIGdsdWUgbGF5ZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pcHE4MDZ4LWR3bWFjLnR4dDoxOiogSVBRODA2eCBEV01BQyBFdGhlcm5ldCBjb250cm9sbGVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0LTItXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZWRpYXRlay1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWVkaWF0ZWstZHdtYWMueWFtbDo3OnRpdGxlOiBNZWRpYVRlayBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWVkaWF0ZWstZHdtYWMueWFtbC04LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnV2b3RvbixtYTM1ZDEtZHdtYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9udXZvdG9uLG1hMzVkMS1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWw6Nzp0aXRsZTogTnV2b3RvbiBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnV2b3RvbixtYTM1ZDEtZHdtYWMueWFtbC04LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbC02LVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWw6Nzp0aXRsZTogTlhQIGkuTVg4LzkgRFdNQUMgZ2x1ZSBsYXllclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwtOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbD0xMz1kZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTE0LSAgVGhpcyBkZXZpY2UgaXMgYSBTeW5vcHN5cyBEV0MgSVAsIGludGVncmF0ZWQgb24gTlhQIFMzMkcvUiBTb0NzLlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWw6MTU6ICBUaGUgU29DIHNlcmllcyBTMzJHMnh4IGFuZCBTMzJHM3h4IGZlYXR1cmUgb25lIERXTUFDIGluc3RhbmNlLFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwtMTYtICB0aGUgU29DIFMzMlI0NSBoYXMgdHdvIGluc3RhbmNlcy4gVGhlIGRldmljZXMgY2FuIHVzZSBSR01JSS9STUlJL01JSVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTE4LSAgdG8gdGhlIGVtYmVkZGVkIFNlckRlcyBmb3IgU0dNSUkgY29ubmVjdGl2aXR5LlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWw6MTk6ICBUaGUgRFdNQUMgaW5zdGFuY2VzIGhhdmUgY29ubmVjdGVkIGFsbCBSWC9UWCBxdWV1ZXMgaW50ZXJydXB0cyxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTIwLSAgZW5hYmxpbmcgbG9hZCBiYWxhbmNpbmcgb2YgZGF0YSB0cmFmZmljIGFjcm9zcyBhbGwgQ1BVIGNvcmVzLlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWw6Nzp0aXRsZTogU29waGdvIENWMTgwMEIgRFdNQUMgZ2x1ZSBsYXllclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbDo3OnRpdGxlOiBTb3BoZ28gU0cyMDQ0IERXTUFDIGdsdWUgbGF5ZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NwYWNlbWl0LGszLWR3bWFjLnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3BhY2VtaXQsazMtZHdtYWMueWFtbDo3OnRpdGxlOiBTcGFjZW1pdCBLMyBEV01BQyBnbHVlIGxheWVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NwYWNlbWl0LGszLWR3bWFjLnlhbWwtOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sPTY9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTctXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sOjg6dGl0bGU6IFN0YXJGaXZlIEpINzExMCBEV01BQyBnbHVlIGxheWVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTktXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGktZHdtYWMudHh0OjE6U1RNaWNyb2VsZWN0cm9uaWNzIFNvQyBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RpLWR3bWFjLnR4dC0yLVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbD02PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sLTctXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw6ODp0aXRsZTogU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMyIC8gTUNVIERXTUFDIGdsdWUgbGF5ZXIgY29udHJvbGxlclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sLTktXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbDo3OnRpdGxlOiBUb3NoaWJhIFZpc2NvbnRpIERXTUFDIEV0aGVybmV0IGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Rldmxpbmsvc3RtbWFjLnJzdD0xMz1UaGUgYGBzdG1tYWNgYCBkcml2ZXIgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGRyaXZlci1zcGVjaWZpYyBwYXJhbWV0ZXJzLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL3N0bW1hYy5yc3QtMjQtICAgICAtIHJ1bnRpbWVcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL3N0bW1hYy5yc3Q6MjU6ICAgICAtIEVuYWJsZSB0aGUgQ29hcnNlIHRpbWVzdGFtcGluZyBtb2RlLCBhcyBkZWZpbmVkIGluIHRoZSBEV01BQyBUUk0uXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0LTI2LSAgICAgICBBIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoaXMgdGltZXN0YW1waW5nIG1vZGUgY2FuIGJlIGZvdW5kIGluIHRoZVxuLS1cbk1BSU5UQUlORVJTPTMzMzg9RjpcdGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtbnhwLXMzMmcqXG5NQUlOVEFJTkVSUy0zMzM5LVxuTUFJTlRBSU5FUlM6MzM0MDpBUk0vTlhQIFMzMkcvUzMyUiBEV01BQyBFVEhFUk5FVCBEUklWRVJcbk1BSU5UQUlORVJTLTMzNDEtTTpcdEphbiBQZXRyb3VzIFx1MDAzY2phbi5wZXRyb3VzQG9zcy5ueHAuY29tXHUwMDNlXG4tLVxuTUFJTlRBSU5FUlM9MzYwND1GOlx0ZHJpdmVycy9jbGsvc29jZnBnYS9cbk1BSU5UQUlORVJTLTM2MDUtXG5NQUlOVEFJTkVSUzozNjA2OkFSTS9TT0NGUEdBIERXTUFDIEdMVUUgTEFZRVIgQklORElOR1Ncbk1BSU5UQUlORVJTLTM2MDctTTpcdE1hdHRoZXcgR2VybGFjaCBcdTAwM2NtYXR0aGV3LmdlcmxhY2hAYWx0ZXJhLmNvbVx1MDAzZVxuLS1cbk1BSU5UQUlORVJTPTM2MTA9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXG5NQUlOVEFJTkVSUy0zNjExLVxuTUFJTlRBSU5FUlM6MzYxMjpBUk0vU09DRlBHQSBEV01BQyBHTFVFIExBWUVSXG5NQUlOVEFJTkVSUy0zNjEzLU06XHRNYXhpbWUgQ2hldmFsbGllciBcdTAwM2NtYXhpbWUuY2hldmFsbGllckBib290bGluLmNvbVx1MDAzZVxuLS1cbk1BSU5UQUlORVJTPTE4MjMyPUY6XHRpbmNsdWRlL2xpbnV4L21vc3QuaFxuTUFJTlRBSU5FUlMtMTgyMzMtXG5NQUlOVEFJTkVSUzoxODIzNDpNT1RPUkNPTU0gRFdNQUMgR0xVRSBEUklWRVJcbk1BSU5UQUlORVJTLTE4MjM1LU06XHRZYW8gWmkgXHUwMDNjbWVAeml5YW8uY2NcdTAwM2Vcbi0tXG5NQUlOVEFJTkVSUz0yMzA0Mz1GOlx0ZHJpdmVycy9paW8vYWRjL3J6bjEtYWRjLmNcbk1BSU5UQUlORVJTLTIzMDQ0LVxuTUFJTlRBSU5FUlM6MjMwNDU6UkVORVNBUyBSWi9OMSBEV01BQyBHTFVFIExBWUVSXG5NQUlOVEFJTkVSUy0yMzA0Ni1NOlx0Um9tYWluIEdhbnRvaXMgXHUwMDNjcm9tYWluLmdhbnRvaXNAYm9vdGxpbi5jb21cdTAwM2Vcbi0tXG5NQUlOVEFJTkVSUz0yMzA2NT1GOlx0ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9yZW5lc2FzX3VzYmYuY1xuTUFJTlRBSU5FUlMtMjMwNjYtXG5NQUlOVEFJTkVSUzoyMzA2NzpSRU5FU0FTIFJaL1YySChQKSBEV01BQyBHQkVUSCBHTFVFIExBWUVSIERSSVZFUlxuTUFJTlRBSU5FUlMtMjMwNjgtTTpcdExhZCBQcmFiaGFrYXIgXHUwMDNjcHJhYmhha2FyLm1haGFkZXYtbGFkLnJqQGJwLnJlbmVzYXMuY29tXHUwMDNlXG4tLVxuTUFJTlRBSU5FUlM9MjU0NDM9RjpcdGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zcDIqXG5NQUlOVEFJTkVSUy0yNTQ0NC1cbk1BSU5UQUlORVJTOjI1NDQ1OlNQQUNFTUlUIERXTUFDIEdMVUUgTEFZRVJcbk1BSU5UQUlORVJTLTI1NDQ2LU06XHRJbm9jaGkgQW1hb3RvIFx1MDAzY2lub2NoaWFtYUBnbWFpbC5jb21cdTAwM2Vcbi0tXG5NQUlOVEFJTkVSUz0yNTc5ND1GOlx0YXJjaC9yaXNjdi9ib290L2R0cy9zdGFyZml2ZS9cbk1BSU5UQUlORVJTLTI1Nzk1LVxuTUFJTlRBSU5FUlM6MjU3OTY6U1RBUkZJVkUgRFdNQUMgR0xVRSBMQVlFUlxuTUFJTlRBSU5FUlMtMjU3OTctTTpcdEVtaWwgUmVubmVyIEJlcnRoaW5nIFx1MDAzY2tlcm5lbEBlc21pbC5ka1x1MDAzZVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTI3Nj1DT05GSUdfU1RNTUFDX0VUSD15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNzc6Q09ORklHX0RXTUFDX0RXQ19RT1NfRVRIPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI3OC1DT05GSUdfVElfQ1BTVz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9NjA9Q09ORklHX1NUTU1BQ19FVEg9eVxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc6NjE6IyBDT05GSUdfRFdNQUNfUkVORVNBU19HQkVUSCBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3NobW9iaWxlX2RlZmNvbmZpZy02Mi1DT05GSUdfTUlDUkVMX1BIWT15XG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NDY9Q09ORklHX1NUTU1BQ19FVEg9bVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NDc6Q09ORklHX0RXTUFDX01FRElBVEVLPW1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDQ4OkNPTkZJR19EV01BQ19URUdSQT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ0OS0jIENPTkZJR19ORVRfVkVORE9SX1NVTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpYy9ib2FyZC1uaTE2OTQ0NS5jb25maWc9Mjg9Q09ORklHX1NUTU1BQ19QTEFURk9STT15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljL2JvYXJkLW5pMTY5NDQ1LmNvbmZpZzoyOTpDT05GSUdfRFdNQUNfR0VORVJJQz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZz04OT1DT05GSUdfU1RNTUFDX0VUSD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnOjkwOiMgQ09ORklHX0RXTUFDX0dFTkVSSUMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZy05MS0jIENPTkZJR19ORVRfVkVORE9SX1NZTk9QU1lTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnPTE0MT1DT05GSUdfU1RNTUFDX0VUSD1tXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjE0MjpDT05GSUdfRFdNQUNfVEhFQUQ9bVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy0xNDMtQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm0uY29uZmlnPTMzPUNPTkZJR19QSFlfUk9DS0NISVBfRFA9eVxuZHJpdmVycy9ncHUvZHJtL2NpL2FybS5jb25maWc6MzQ6Q09ORklHX0RXTUFDX1JPQ0tDSElQPXlcbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm0uY29uZmlnLTM1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm02NC5jb25maWc9MzU9Q09ORklHX1BIWV9ST0NLQ0hJUF9EUD15XG5kcml2ZXJzL2dwdS9kcm0vY2kvYXJtNjQuY29uZmlnOjM2OkNPTkZJR19EV01BQ19ST0NLQ0hJUD15XG5kcml2ZXJzL2dwdS9kcm0vY2kvYXJtNjQuY29uZmlnLTM3LUNPTkZJR19TVE1NQUNfRVRIPXlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQyPWlmIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDQ6Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjUyOmNvbmZpZyBEV01BQ19HRU5FUklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjUzOlx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU0LVx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTUtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjU2Olx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU3LVx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjA6Y29uZmlnIERXTUFDX0FOQVJJT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjY5OmNvbmZpZyBEV01BQ19FSUM3NzAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo3ODpjb25maWcgRFdNQUNfSU5HRU5JQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5MDpjb25maWcgRFdNQUNfSVBRODA2WFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5MTpcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTItXHRkZWZhdWx0IEFSQ0hfUUNPTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTUtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk2Olx0ICBTdXBwb3J0IGZvciBRQ0EgSVBRODA2WCBEV01BQyBFdGhlcm5ldC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwNjpjb25maWcgRFdNQUNfTFBDMThYWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDc6XHR0cmlzdGF0ZSBcJiMzNDtOWFAgTFBDMTh4eC80M3h4IERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTA4LVx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExMS1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTEyOlx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjExNDpjb25maWcgRFdNQUNfTUVESUFURUtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTE1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMjI6Y29uZmlnIERXTUFDX01FU09OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzM6Y29uZmlnIERXTUFDX05VVk9UT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTM0LVx0dHJpc3RhdGUgXCYjMzQ7TnV2b3RvbiBNQTM1IGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQ1OmNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTU6Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU2LVx0dHJpc3RhdGUgXCYjMzQ7UmVuZXNhcyBSWi9WMkgoUCkgR0JFVEggYW5kIFJaL1QySCwgUlovTjJIIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjg6Y29uZmlnIERXTUFDX1JPQ0tDSElQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTc5OmNvbmZpZyBEV01BQ19SWk4xXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4MC1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxOTE6Y29uZmlnIERXTUFDX1MzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTItXHR0cmlzdGF0ZSBcJiMzNDtOWFAgUzMyRy9TMzJSIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDM6Y29uZmlnIERXTUFDX1NPQ0ZQR0FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA0LVx0dHJpc3RhdGUgXCYjMzQ7U09DRlBHQSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxODpjb25maWcgRFdNQUNfU09QSEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxOS1cdHRyaXN0YXRlIFwmIzM0O1NvcGhnbyBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIyOTpjb25maWcgRFdNQUNfU1BBQ0VNSVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDE6Y29uZmlnIERXTUFDX1NUQVJGSVZFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0Mi1cdHRyaXN0YXRlIFwmIzM0O1N0YXJGaXZlIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjUzOmNvbmZpZyBEV01BQ19TVElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjU0LVx0dHJpc3RhdGUgXCYjMzQ7U1RpIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNjU6Y29uZmlnIERXTUFDX1NUTTMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2NjpcdHRyaXN0YXRlIFwmIzM0O1NUTTMyIERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjY3LVx0ZGVmYXVsdCBBUkNIX1NUTTMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI3Nzpjb25maWcgRFdNQUNfU1VOWElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODg6Y29uZmlnIERXTUFDX1NVTjhJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzAwOmNvbmZpZyBEV01BQ19TVU41NUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAxLVx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjU1aSBHTUFDMjAwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzEyOmNvbmZpZyBEV01BQ19USEVBRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTMtXHR0cmlzdGF0ZSBcJiMzNDtULUhFQUQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMjI6Y29uZmlnIERXTUFDX0lNWDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzIzOlx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjQtXHRkZWZhdWx0IEFSQ0hfTVhDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNDpjb25maWcgRFdNQUNfSU5URUxfUExBVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0NDpjb25maWcgRFdNQUNfTE9PTkdTT04xXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0NS1cdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzU1OmNvbmZpZyBEV01BQ19URUdSQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NDpjb25maWcgRFdNQUNfVklTQ09OVElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzY1Olx0dHJpc3RhdGUgXCYjMzQ7VG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2Ni1cdGRlZmF1bHQgQVJDSF9WSVNDT05USVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3ODpjb25maWcgRFdNQUNfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgR01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4ODpjb25maWcgRFdNQUNfTE9PTkdTT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg5Olx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzkwLVx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk4OmNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk5Olx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMC1cdGRlcGVuZHMgb24gUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDMtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNDpcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNS1cdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcdCYjNDM7PSBzdG1tYWMtcGxhdGZvcm0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0RXTUFDX0FOQVJJT04pXHQmIzQzOz0gZHdtYWMtYW5hcmlvbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfRFdNQUNfRUlDNzcwMClcdCYjNDM7PSBkd21hYy1laWM3NzAwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVx0JiM0Mzs9IGR3bWFjLWluZ2VuaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0RXTUFDX0lQUTgwNlgpXHQmIzQzOz0gZHdtYWMtaXBxODA2eC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfRFdNQUNfTFBDMThYWClcdCYjNDM7PSBkd21hYy1scGMxOHh4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcdCYjNDM7PSBkd21hYy1tZWRpYXRlay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRFdNQUNfTUVTT04pXHQmIzQzOz0gZHdtYWMtbWVzb24ubyBkd21hYy1tZXNvbjhiLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIzOm9iai0kKENPTkZJR19EV01BQ19OVVZPVE9OKVx0JiM0Mzs9IGR3bWFjLW51dm90b24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVx0JiM0Mzs9IGR3bWFjLXFjb20tZXRocW9zLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19EV01BQ19SRU5FU0FTX0dCRVRIKSAmIzQzOz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfRFdNQUNfUk9DS0NISVApXHQmIzQzOz0gZHdtYWMtcmsub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0RXTUFDX1JaTjEpXHQmIzQzOz0gZHdtYWMtcnpuMS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVx0XHQmIzQzOz0gZHdtYWMtczMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19EV01BQ19TT0NGUEdBKVx0JiM0Mzs9IGR3bWFjLWFsdHItc29jZnBnYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVx0JiM0Mzs9IGR3bWFjLXNvcGhnby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfRFdNQUNfU1BBQ0VNSVQpXHQmIzQzOz0gZHdtYWMtc3BhY2VtaXQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0RXTUFDX1NUQVJGSVZFKVx0JiM0Mzs9IGR3bWFjLXN0YXJmaXZlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXHRcdCYjNDM7PSBkd21hYy1zdGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0RXTUFDX1NUTTMyKVx0JiM0Mzs9IGR3bWFjLXN0bTMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcdCYjNDM7PSBkd21hYy1zdW54aS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfRFdNQUNfU1VOOEkpXHQmIzQzOz0gZHdtYWMtc3VuOGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcdCYjNDM7PSBkd21hYy1zdW41NWkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVx0JiM0Mzs9IGR3bWFjLXRoZWFkLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcdCYjNDM7PSBkd21hYy1kd2MtcW9zLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcdCYjNDM7PSBkd21hYy1pbnRlbC1wbGF0Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19EV01BQ19HRU5FUklDKVx0JiM0Mzs9IGR3bWFjLWdlbmVyaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX0RXTUFDX0lNWDgpXHQmIzQzOz0gZHdtYWMtaW14Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcdCYjNDM7PSBkd21hYy10ZWdyYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfRFdNQUNfVklTQ09OVEkpXHQmIzQzOz0gZHdtYWMtdmlzY29udGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDYtc3RtbWFjLXBsYXRmb3JtLW9ianM6PSBzdG1tYWNfcGxhdGZvcm0ub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcdCYjNDM7PSBkd21hYy1sb29uZ3Nvbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MzpvYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS01NC1zdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjI5OiNkZWZpbmUgRFdNQUNfU05QU1ZFUlx0R0VOTUFTS19VMzIoNywgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjMwOiNkZWZpbmUgRFdNQUNfVVNFUlZFUlx0R0VOTUFTS19VMzIoMTUsIDgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTMyLS8qIFN5bm9wc3lzIENvcmUgdmVyc2lvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjMzOiNkZWZpbmVcdERXTUFDX0NPUkVfM180MFx0XHQweDM0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDojZGVmaW5lXHREV01BQ19DT1JFXzNfNTBcdFx0MHgzNVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzU6I2RlZmluZVx0RFdNQUNfQ09SRV8zXzcwXHRcdDB4MzdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM2OiNkZWZpbmVcdERXTUFDX0NPUkVfNF8wMFx0XHQweDQwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNzojZGVmaW5lIERXTUFDX0NPUkVfNF8xMFx0XHQweDQxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozODojZGVmaW5lIERXTUFDX0NPUkVfNV8wMFx0XHQweDUwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozOTojZGVmaW5lIERXTUFDX0NPUkVfNV8xMFx0XHQweDUxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0MDojZGVmaW5lIERXTUFDX0NPUkVfNV8yMFx0XHQweDUyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00MS0jZGVmaW5lIERXWEdNQUNfQ09SRV8yXzEwXHQweDIxXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZGVzY3MuaC0zLSAgSGVhZGVyIEZpbGUgdG8gZGVzY3JpYmUgdGhlIERNQSBkZXNjcmlwdG9ycyBhbmQgcmVsYXRlZCBkZWZpbml0aW9ucy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2Rlc2NzLmg6NDogIFRoaXMgaXMgZm9yIERXTUFDMTAwIGFuZCAxMDAwIGNvcmVzLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZGVzY3MuaC01LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MzogKiBBZGFwdHJ1bSBBbmFyaW9uIERXTUFDIGdsdWUgbGF5ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy00LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTEzMz1tb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFuYXJpb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTM1Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIERXTUFDIHNwZWNpZmljIGdsdWUgbGF5ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzNi1NT0RVTEVfQVVUSE9SKFwmIzM0O0FsZXhhbmRydSBHYWduaXVjIFx1MDAzY21yLm51a2UubWVAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg3LVx0LyogZHdjLXFvcyBuZWVkcyBHTUFDNCwgQUFMLCBUU08gYW5kIFBNVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo4ODpcdHBsYXRfZGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg5LVx0cGxhdF9kYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VhYWwgPSAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0xLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjogKiBHZW5lcmljIERXTUFDIHBsYXRmb3JtIGRyaXZlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOiAqIGR3bWFjLWlteC5jIC0gRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllciBmb3IgTlhQIGlteDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00MDM9TU9EVUxFX0FVVEhPUihcJiMzNDtOWFBcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDA0Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtOWFAgaW14OCBEV01BQyBTcGVjaWZpYyBHbHVlIGxheWVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwNS1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MzogKiBkd21hYy1pbmdlbmljLmMgLSBJbmdlbmljIFNvQ3MgRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjgyPU1PRFVMRV9BVVRIT1IoXCYjMzQ75ZGo55Cw5p2wIChaaG91IFlhbmppZSkgXHUwMDNjemhvdXlhbmppZUB3YW55ZWV0ZWNoLmNvbVx1MDAzZVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjgzOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtJbmdlbmljIFNvQ3MgRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjg0LU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoyOi8qIEludGVsIERXTUFDIHBsYXRmb3JtIGRyaXZlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTUwPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTUxOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtJbnRlbCBEV01BQyBwbGF0Zm9ybSBkcml2ZXJcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTk2PXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk5LVx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYwMDpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MDEtXHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTYxNj1zdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjYtXHRwbGF0LVx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo2Mjc6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyOC1cdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtMi0vKiBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjM6ICogRFdNQUMgSW50ZWwgaGVhZGVyIGZpbGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmg6NjojaWZuZGVmIF9fRFdNQUNfSU5URUxfSF9fXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjc6I2RlZmluZSBfX0RXTUFDX0lOVEVMX0hfX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjgxOiNlbmRpZiAvKiBfX0RXTUFDX0lOVEVMX0hfXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ3NjpcdHBsYXRfZGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00NzctXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTUwOD1NT0RVTEVfQVVUSE9SKFwmIzM0O01hdGhpZXUgT2xpdmFyaSBcdTAwM2NtYXRoaWV1QGNvZGVhdXJvcmEub3JnXHUwMDNlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDk6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgSVBRODA2eCBEV01BQyBzcGVjaWZpYyBnbHVlIGxheWVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MTAtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7RHVhbCBCU0QvR1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTcyLSNkZWZpbmUgUENJX0RFVklDRV9JRF9MT09OR1NPTl9HTkVUXHQweDdhMTNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzM6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMVx0MHgxMFx0LyogTG9vbmdzb24gY3VzdG9tIElEIDB4MTAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzQ6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMlx0MHgxMlx0LyogTG9vbmdzb24gY3VzdG9tIElEIDB4MTIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy05NS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMTAwXzE1ME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk2Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk3LVx0cGxhdC1cdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xMDgtXHRzd2l0Y2ggKGxkLVx1MDAzZWxvb25nc29uX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjEwOTpcdGNhc2UgRFdNQUNfQ09SRV9NVUxUSUNIQU5fVjE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTExMC1cdFx0bGQtXHUwMDNlbXVsdGljaGFuID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEyMC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjEyMTpcdGNhc2UgRFdNQUNfQ09SRV9NVUxUSUNIQU5fVjI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEyMi1cdFx0bGQtXHUwMDNlbXVsdGljaGFuID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTMwNj1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3NldHVwKHZvaWQgKmFwcml2LCBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMjgtXHRpZiAobGQtXHUwMDNlbXVsdGljaGFuKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjMyOTpcdFx0cHJpdi1cdTAwM2VzeW5vcHN5c19pZCA9IERXTUFDX0NPUkVfM183MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMzMwLVx0XHQqZG1hID0gZHdtYWMxMDAwX2RtYV9vcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00NjY9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19hY3BpX2NvbmZpZyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDc4Oi8qIExvb25nc29uJiMzOTtzIERXTUFDIGRldmljZSBtYXkgdGFrZSBuZWFybHkgdHdvIHNlY29uZHMgdG8gY29tcGxldGUgRE1BIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ3OS1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MTQ9bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTY6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0xvb25nc29uIERXTUFDIFBDSSBkcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTctTU9EVUxFX0FVVEhPUihcJiMzNDtRaW5nIFpoYW5nIFx1MDAzY3poYW5ncWluZ0Bsb29uZ3Nvbi5jblx1MDAzZVwmIzM0Oyk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxNjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyIGFuZCBpdHMgUUVNVSBSZXByZXNlbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBzdG1tYWNgIGRyaXZlciBhIGJpdCBiZXR0ZXIsIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYERXTUFDYCAoRGVzaWduV2FyZSBNQUMpIGFzIGl0IHNlZW1zIHRoYXQgYHN0bW1hY2AgaXMsIGluIGZhY3QsIHRoZSBkcml2ZXIgZm9yIGBEV01BQ2AuIEkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCB0aGlzIGluIFFFTVUsIHNvIGxldCYjMzk7cyBjaGVjayBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hpY2ggUUVNVSBtYWNoaW5lcyBhY3R1YWxseSB1dGlsaXplIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgY29kZS4gSG1tLCBsb29rcyBsaWtlIGl0JiMzOTtzIHVzZWQgaW4gYGh3L2FybS9hbGx3aW5uZXItaDMuY2AsIGJ1dCB3YWl0LCB0aGUgc3VuOGktZW1hYyBpcyBkaWZmZXJlbnQgaGVyZS4gTGV0JiMzOTtzIHNlZS4uLiBvaCwgYWxzbywgZGVzaWdud2FyZSAqaXMqIHVzZWQsIGJ1dCBpbiBgaHcvYXJtL3hsbngtenlucW1wLmNgPyBObywgdGhhdCYjMzk7cyBgY2FkZW5jZV9nZW1gLiBPa2F5LCBJIHdhcyBnZXR0aW5nIHRoYXQgY29uZnVzZWQuCgpOb3csIHdoZXJlIHdhcyBJPyBSaWdodCwgYHN0bW1hY2AuIEkgYWxzbyByZWNhbGwgc2VlaW5nIHRoYXQgYHN0bW1hY2AgaXMgdGVzdGVkIGJ5IHN5emthbGxlci4gVGhhdCYjMzk7cyBnb29kLCBiZWNhdXNlIHN5emthbGxlciBwcm92aWRlcyB2YWx1YWJsZSBjb3ZlcmFnZSBkYXRhLiBTbywgbGV0JiMzOTtzIGludmVzdGlnYXRlIHRoZSByZWFjaGFiaWxpdHkgb2YgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIEFuZCwgbGV0JiMzOTtzIHNlZSwgdGhhdCBmdW5jdGlvbiBpcyB0aGUgYG5kb19zZWxlY3RfcXVldWVgIGNhbGxiYWNrIGZvciB0aGUgYHN0bW1hY2AgZHJpdmVyLiBHb3R0YSBjb25maXJtIHRoaXMgcXVpY2tseS4gR29pbmcgdG8gY2hlY2sgYHN0bW1hY19tYWluLmNgIHRvIGJlIGNvbXBsZXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc2VsZWN0X3F1ZXVlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjQxOT1zdGF0aWMgaW50IHN0bW1hY19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDQ1OnN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDQ2LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNS1cdC5uZG9fc2V0dXBfdGMgPSBzdG1tYWNfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTY6XHQubmRvX3NlbGVjdF9xdWV1ZSA9IHN0bW1hY19zZWxlY3RfcXVldWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXHQubmRvX3NldF9tYWNfYWRkcmVzcyA9IHN0bW1hY19zZXRfbWFjX2FkZHJlc3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMDUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG5kb19zZWxlY3RfcXVldWVgIGluIGBzdG1tYWNgIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGBuZG9fc2VsZWN0X3F1ZXVlYCBjYWxsYmFjayBoZXJlLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgbmV0d29yayBkZXZpY2UgaGFzIG11bHRpcGxlIHRyYW5zbWl0IHF1ZXVlcyBhbmQgaXQmIzM5O3MgdGltZSB0byBkZWNpZGUgd2hpY2ggb25lIHRvIHVzZSBmb3IgYSBwYWNrZXQuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50PyBJZiBzeXprYWxsZXIgaXMgdGFyZ2V0aW5nIGBzdG1tYWNgLCB0aGVuIHllcy4gSWYgc3l6a2FsbGVyIGNhbiB0ZXN0IGl0IHZpYSBgdm5ldGAsIG9yIGBkdW1teWAsIG9yIGEgcGxhdGZvcm0gZGV2aWNlIHByb2JlZCBpbiBRRU1VLCB0aGVuIGl0JiMzOTtzIHJlYWNoYWJsZS4KCk5vdywgZG9lcyBzeXprYWxsZXIgdGVzdCBgc3RtbWFjYD8gSSBjYW4gcXVpY2tseSBjaGVjayB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGVuYWJsZWQuIExldCYjMzk7cyBzZWUgaWYgYENPTkZJR19TVE1NQUNfRVRIYCBpcyBzZXQgaW4gdGhlIGB4ODZfNjRgIGRlZmNvbmZpZyBvciB0aGUgbWFpbiBzeXprYWxsZXIgY29uZmlnLiBIbW1tLCBJIGRvbiYjMzk7dCBoYXZlIHRoZSBzeXprYWxsZXIgY29uZmlnIGhhbmR5LCBidXQgd2FpdCwgSSBjYW4gY2hlY2sgaWYgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLiBgc3RtbWFjX3BjaS5jYCByZWdpc3RlcnMgYSBQQ0kgZHJpdmVyLgoKT2theSwgc3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRldmljZXMsIHVzaW5nIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgb3IgUUVNVSBjYW4gZW11bGF0ZSB0aGUgUENJIGRldmljZS4gV2FpdC4uLmRvZXMgUUVNVSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBQQ0kgZGV2aWNlPyBObywgdGhhdCYjMzk7cyBub3Qgc29tZXRoaW5nIFFFTVUgaW1wbGVtZW50cy4gQnV0IGhhbmcgb24sIHN5emthbGxlciBoYXMgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGFuZCBgbmV0ZGV2c2ltYCBmb3IgbmV0LiBTbywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhICpwc2V1ZG8qIGRldmljZSBmb3IgUENJPyBObywgaXQmIzM5O3Mgbm90IHRoZSBzYW1lIHRoaW5nLiBTeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlYCBpbmplY3RzIFBDSSBkZXZpY2VzLCBwcm92aWRpbmcgdGhlIFBDSSBjb25maWcgc3BhY2UgYW5kIEJBUnMgdG8gcHJvYmUgdGhlIGRyaXZlci4gQnV0IHRvIGFjdHVhbGx5IGdldCB0byBgbmRvX3NlbGVjdF9xdWV1ZWAgYW5kIHNlbmQgcGFja2V0cywgdGhlIGRldmljZSBuZWVkcyB0byBiZSByZWdpc3RlcmVkIGFzIGEgbmV0ZGV2IGFuZCBiZSB1cC4KCk9rYXksIHNvIGNhbiBgc3RtbWFjYCBwcm9iZSBzdWNjZXNzZnVsbHkgd2l0aCBqdXN0IHJhbmRvbSBCQVJzIHByb3ZpZGVkIGJ5IGBzeXpfcGNpX2RldmljZWA/IFRoYXQgc2VlbXMgdW5saWtlbHksIGJ1dCBpdCYjMzk7cyB3b3J0aCBjaGVja2luZyBgc3RtbWFjX3BjaV9wcm9iZWAgdG8gc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1Olx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTYtXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTE5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gYHN0bW1hY19wY2lfcHJvYmVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjX3BjaV9wcm9iZWAgaXMgYWN0dWFsbHkgZG9pbmcuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIFBDSS1iYXNlZCBTVE1NQUMgZHJpdmVyIGluc3RhbnRpYXRpb24uIEl0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGRldGVjdHMgYW4gU1RNTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIgdmlhIFBDSS4gU28sIHdoYXQgYXJlIHRoZSBrZXkgc3RlcHMgaXQmIzM5O3MgbGlrZWx5IHRha2luZz8gSSBleHBlY3QgaXQmIzM5O2xsIGJlIGRvaW5nIHRoaW5ncyBsaWtlOgoKKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBGaXJzdCwgaXQgd2lsbCBsaWtlbHkgYmUgcHJvYmluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgdG8gZmluZCB0aGUgYmFzZSBhZGRyZXNzIGZvciB0aGUgU1RNTUFDJiMzOTtzIHJlZ2lzdGVycywgaW50ZXJydXB0IG51bWJlcnMsIGFuZCBvdGhlciBuZWNlc3NhcnkgcmVzb3VyY2VzLiBJdCYjMzk7bGwgYmUgYSBjcml0aWNhbCBwYXJ0IG9mIGRpc2NvdmVyaW5nIGhvdyB0aGlzIGNhcmQgaXMgaG9va2VkIHVwLgoqICAgKipEcml2ZXIgQmluZGluZzoqKiBJdCYjMzk7bGwgdGhlbiBoYXZlIHRvIGJpbmQgdG8gdGhlIFBDSSBkZXZpY2UsIGxpa2VseSB1c2luZyBmdW5jdGlvbnMgbGlrZSBgcGNpX3NldF9kcnZkYXRhYCB0byBhdHRhY2ggdGhlIGRyaXZlci1zcGVjaWZpYyBkYXRhIHRvIHRoZSBQQ0kgZGV2aWNlIHN0cnVjdC4gSSBhbnRpY2lwYXRlIGl0JiMzOTtzIGEgcm91dGluZSBjYWxsIHRoYXQmIzM5O3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIHRoaXMgZHJpdmVyIHJ1bm5pbmcgYW5kIGZvciBsaW5raW5nIGl0IHRvIHRoZSBoYXJkd2FyZS4KKiAgICoqRGV2aWNlIEluaXRpYWxpemF0aW9uOioqIFRoaXMgd2lsbCBpbmNsdWRlIGFsbG9jYXRpbmcgYSBwbGF0Zm9ybSBkZXZpY2Ugc3RydWN0LCBmaWxsaW5nIGl0IHdpdGggdGhlIFBDSS1kZXJpdmVkIHJlc291cmNlIGluZm9ybWF0aW9uLCBhbmQgcG9zc2libHkgY2FsbGluZyBpbnRvIHBsYXRmb3JtIGRldmljZSBkcml2ZXJzLiBUaGlzIHdpbGwgdGhlbiBsaWtlbHkgcmVzdWx0IGluIGNhbGxpbmcgYHBsYXRmb3JtX2RldmljZV9hZGRgIG9yIHNpbWlsYXIuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBpbml0aWFsaXphdGlvbnMgYW5kIGNhbGxzIGFyZSBsaW5rZWQgdG8gc2VlIHdoZXJlIHRoZSBkcml2ZXIgaXMgaG9va2VkIHVwLgoqICAgKipETUEgU2V0dXA6KiogSSYjMzk7bSBndWVzc2luZyBpdCB3aWxsIGNvbmZpZ3VyZSBETUEgc2V0dGluZ3MgYW5kIGxpa2VseSBhbGxvY2F0ZSBETUEtYWJsZSBtZW1vcnkgcmVnaW9ucyBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiBhbiBTVE1NQUMsIHRoaXMgaXMgZ29pbmcgdG8gYmUgY2VudHJhbCB0byBoaWdoLXNwZWVkIG9wZXJhdGlvbi4KKiAgICoqSW50ZXJydXB0IEhhbmRsaW5nOioqIFNldHRpbmcgdXAgdGhlIGludGVycnVwdCBoYW5kbGVyIHZpYSB0aGUgUENJIGludGVycnVwdCB2ZWN0b3IgaXMgYSBnaXZlbi4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBpdCYjMzk7cyBoYW5kbGVkLCBpbmNsdWRpbmcgaW50ZXJydXB0IG1hc2tpbmcgYW5kIHByaW9yaXR5LgoqICAgKipDbG9ja3MgYW5kIFJlc2V0OioqIEkmIzM5O2xsIGFsc28gZXhwZWN0IGl0IHRvIG1hbmFnZSBjbG9jayBlbmFibGluZy9kaXNhYmxpbmcgZm9yIHRoZSBNQUMgYW5kIHBvdGVudGlhbGx5IGFwcGx5IHJlc2V0cy4gU1RNTUFDcyBvZnRlbiByZXF1aXJlIGNhcmVmdWwgY2xvY2sgbWFuYWdlbWVudC4KKiAgICoqTmV0d29yayBEZXZpY2UgUmVnaXN0cmF0aW9uOioqIEZpbmFsbHksIGl0JiMzOTtsbCBhbG1vc3QgY2VydGFpbmx5IGNhbGwgYHJlZ2lzdGVyX25ldGRldmAgdG8gY3JlYXRlIGEgbmV0d29yayBpbnRlcmZhY2UgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBUaGlzIGlzIHRoZSBsYXN0IHN0ZXAgdG8gbWFrZSB0aGUgbmV0d29yayBjb250cm9sbGVyIGF2YWlsYWJsZSB0byB0aGUga2VybmVsIGFuZCB0aGUgdXNlcmxhbmQuCgpJIG5lZWQgdG8gc2VlIHRoZSBpbXBsZW1lbnRhdGlvbiB0byB2ZXJpZnkgdGhlc2UgYXNzdW1wdGlvbnMgYW5kIHRvIGJldHRlciB1bmRlcnN0YW5kIGFueSBudWFuY2VzIG9yIG9wdGltaXphdGlvbnMgdGhlIGRldmVsb3BlcnMgdXNlZC4gSSBoYXZlIGEgbG90IG9mIHByYWN0aWNhbCBleHBlcmllbmNlIGFuZCB0aGlzIHdpbGwgdGVsbCBtZSBpZiB0aGUgY29kZSBpcyBkb2luZyB3aGF0IEkgZXhwZWN0LiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBiZWluZyBkb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExODpcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMTk6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEyMDpcdHtcbiAxMjE6XHRcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuIDEyMjpcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuIDEyMzpcdFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XG4gMTI0Olx0XHRpbnQgcmV0O1xuIDEyNTpcdFx0aW50IGk7XG4gMTI2Olx0XG4gMTI3Olx0XHRwbGF0ID0gc3RtbWFjX3BsYXRfZGF0X2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAxMjg6XHRcdGlmICghcGxhdClcbiAxMjk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTMwOlx0XG4gMTMxOlx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMTMyOlx0XHRcdFx0XHRcdCAgIHNpemVvZigqcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhKSxcbiAxMzM6XHRcdFx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4gMTM0Olx0XHRpZiAoIXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YSlcbiAxMzU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTM2Olx0XG4gMTM3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAxMzg6XHRcdFx0XHRcdFx0ICAgICBzaXplb2YoKnBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcbiAxMzk6XHRcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbiAxNDA6XHRcdGlmICghcGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmcpXG4gMTQxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDE0MjpcdFxuIDE0MzpcdFx0LyogRW5hYmxlIHBjaSBkZXZpY2UgKi9cbiAxNDQ6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAxNDU6XHRcdGlmIChyZXQpIHtcbiAxNDY6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcblwmIzM0OyxcbiAxNDc6XHRcdFx0XHRfX2Z1bmNfXyk7XG4gMTQ4Olx0XHRcdHJldHVybiByZXQ7XG4gMTQ5Olx0XHR9XG4gMTUwOlx0XG4gMTUxOlx0XHQvKiBHZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiBkZXZpY2UgKi9cbiAxNTI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkmIzQzOyYjNDM7KSB7XG4gMTUzOlx0XHRcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIGkpID09IDApXG4gMTU0Olx0XHRcdFx0Y29udGludWU7XG4gMTU1Olx0XHRcdHJlcy5hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgaSwgU1RNTUFDX1JFU09VUkNFX05BTUUpO1xuIDE1NjpcdFx0XHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcbiAxNTc6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihyZXMuYWRkcik7XG4gMTU4Olx0XHRcdGJyZWFrO1xuIDE1OTpcdFx0fVxuIDE2MDpcdFxuIDE2MTpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMTYyOlx0XG4gMTYzOlx0XHRyZXQgPSBpbmZvLVx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xuIDE2NDpcdFx0aWYgKHJldClcbiAxNjU6XHRcdFx0cmV0dXJuIHJldDtcbiAxNjY6XHRcbiAxNjc6XHRcdHJlcy53b2xfaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY4Olx0XHRyZXMuaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY5Olx0XG4gMTcwOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2V0c29lZSA9IDE7XG4gMTcxOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhwZWUgPSAxO1xuIDE3MjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbWVzdGVlID0gMTtcbiAxNzM6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1yeGVlID0gMTtcbiAxNzQ6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW10eGVlID0gMTtcbiAxNzU6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVwc2kgPSAxO1xuIDE3NjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlZWRwcCA9IDE7XG4gMTc3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VwcnR5ZW4gPSAxO1xuIDE3ODpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldG1vdXRlbiA9IDE7XG4gMTc5Olx0XG4gMTgwOlx0XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbiAxODE6XHRcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbiAxODI6XHRcbiAxODM6XHRcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuIDE4NDpcdH1cbiAxODU6XHRcbiAxODY6XHQvKipcbiAxODc6XHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxuIDE4ODpcdCAqXG4gMTg5Olx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4gMTkwOlx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cbiAxOTE6XHQgKi9cbiAxOTI6XHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAxOTM6XHR7XG4gMTk0Olx0XHRzdG1tYWNfZHZyX3JlbW92ZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXG4gMTk4Olx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1x0XHQweDA3MDBcbiAxOTk6XHRcbiAyMDA6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbiAyMDE6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1lOT1BTWVNfR01BQzVfSURcdFx0MHg3MTAyXG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuIDIwNDpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuIDIwNzpcdFx0e31cbiAyMDg6XHR9O1xuIDIwOTpcdFxuIDIxMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbiAyMTM6XHRcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4gMjE0Olx0XHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG4gMjE1Olx0XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuIDIxNjpcdFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuIDIxNzpcdFx0LmRyaXZlciAgICAgICAgID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgyMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBQcm9iZSBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIHRoZSBjb2RlJiMzOTtzIGNhbGxpbmcgYHN0bW1hY19kdnJfcHJvYmVgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24sIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iZSByb3V0aW5lIGZvciB0aGlzIFNUTU1BQyBkcml2ZXIuIEkgbmVlZCB0byBzZWUgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLCBpZiBpdCBpcyB1c2luZyBhbnkgb2YgdGhlIGF2YWlsYWJsZSByZXNvdXJjZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZGV2aWNlIHNldHVwIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gZGF0YS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHN0ZXBzIGl0IHRha2VzIHRvIGlkZW50aWZ5LCBpbml0aWFsaXplLCBhbmQgY2xhaW0gdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzQxOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU2MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjQyOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NDY0Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTUzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwMjpcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVx0ICogbmVlZCB0byBlbnN1cmUgdGhlIE1BQyByZXN1bWUgYmFjayBiZWZvcmUgb3RoZXIgb3BlcmF0aW9ucyBzdWNoXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVx0LyogVGhlIG11eCBtdXN0IGJlIHJlZ2lzdGVyZWQgYWZ0ZXIgcGFyZW50IE1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjEwLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NjpcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjM3Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMz12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTQ6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDE1LVx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg3PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc3ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3ODk6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzkwLVx0XHRcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDkxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDkyOiAqIHN0bW1hY19kdnJfcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5My0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEwMTppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDItXHRcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMTI6XHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExMy1cdGlmIChyZXQgXHUwMDI2XHUwMDI2IHBsYXRfZGF0LVx1MDAzZWV4aXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExODpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZHZyX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ4PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTc6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTI2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgc3RtbWFjIERyaXZlciBhbmQgSWRlbnRpZnlpbmcgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBzdG1tYWNgIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgcXVldWUgc2VsZWN0aW9uLiBJdCBzZWVtcyB0aGF0IGBzdG1tYWNfZHZyX3Byb2JlYCBldmVudHVhbGx5IGNhbGxzIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB3aGljaCByZWdpc3RlcnMgdGhlIG5ldHdvcmsgZGV2aWNlLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBzeXprYWxsZXJgLCB1c2luZyBgc3l6X3BjaV9kZXZpY2VgIHRvIGluamVjdCBhIFBDSSBkZXZpY2Ugd2l0aCB0aGUgcmlnaHQgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBUaGlzIG1lYW5zIHdlIGNhbiBkZWZpbml0ZWx5IGdldCB0aGUgZHJpdmVyIHRvIGJpbmQgdG8gdGhpcyBkZXZpY2UgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgbWFwIHRoZSBCQVJzLCByZWdpc3RlciB0aGUgbmV0ZGV2LCBhbmQgdGhlbiwgY3J1Y2lhbGx5LCBzZW5kIHBhY2tldHMgdGhyb3VnaCBpdC4gVGhhdCBnZXRzIHVzIHRvIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYC4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZS4KCk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYC4gQmVmb3JlIHRoZSBwYXRjaCwgdGhlIGNvZGUgd291bGQgdXNlIGEgaGFyZGNvZGVkIHZhbHVlIG9mIGAwYCBpZiBUU08vVVNPIHdhcyBpbiB1c2UsIG5vdyBpdCYjMzk7cyBzZWxlY3RpbmcgYSBxdWV1ZSB3aXRoIGBuZXRkZXZfcGlja190eGAgYW5kIHZlcmlmeWluZyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgaXMgcGVybWl0dGVkIGZvciBUU08uIElmIG5vdCwgaXQgZmFsbHMgYmFjayB0byBxdWV1ZSAwLiBTbyBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgY29yZSBsb2dpYy4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZnV6eiBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIEl0JiMzOTtzIGEgaG90LXBhdGggZnVuY3Rpb247IGl0IGdldHMgY2FsbGVkIGZvciBldmVyeSB0cmFuc21pdHRlZCBwYWNrZXQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCYjMzk7cyBndWlkZWxpbmU6IGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBwcmlvcml0aXplIG5vbi1zdGF0aWMgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLiBPb3BzISBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBwcm9ibGVtLgoKU28sIEkgbmVlZCB0byBmaW5kIGEgYmV0dGVyIHRhcmdldC4gTWF5YmUgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgPyBMZXQmIzM5O3MgY2hlY2sgaWYgaXQmIzM5O3Mgc3RhdGljLiBUaGF0IHdvdWxkIGJlIGEgYmV0dGVyIHRhcmdldCBmb3IgZnV6emluZyBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIGd1aWRlbGluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zNjA0PXN0YXRpYyB2b2lkIHN0bW1hY19zYWZldHlfZmVhdF9jb25maWd1cmF0aW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2MTk6c3RhdGljIGJvb2wgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MjAtXHRcdFx0XHRcdCB1bnNpZ25lZCBpbnQgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2Mzg9c3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTMtXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NudDsgY2hhbiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzcxNDpcdFx0XHRpZiAoIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgY2hhbikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTUtXHRcdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQ5ODQ9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNTAwNS1cdGlmIChza2JfaXNfZ3NvKHNrYikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NTAwNjpcdFx0aWYgKCFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA3LVx0XHQgICAgIXN0bW1hY190c29fdmFsaWRfcGFja2V0KHNrYikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NDQ1PXN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1MS1cdGlmICgoc2tiX3NoaW5mbyhza2IpLVx1MDAzZWdzb190eXBlIFx1MDAyNiBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQ1MjpcdCAgICAhc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBxdWV1ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1My1cdFx0LyogR1NPIGZyYW1lcyBuZWVkIEhXIFRTTy9VU08sIHdoaWNoIGNhbm5vdCBydW4gb24gVEJTIHF1ZXVlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwMjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIHN0bW1hYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBhbmFseXppbmcgdGhpcyBwYXRjaC4gRmlyc3QgdGhvdWdodDogYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYnV0IHByb2JhYmx5IG5vdCByZWxldmFudCBoZXJlLiBUaGVuIEkgc2VlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyAqYWxzbyogc3RhdGljLiBIbW0sIGlzICphbnl0aGluZyogbm9uLXN0YXRpYz8gVGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAsIHdoaWNoIGlzIGEgYml0IG9mIGEgY29uY2Vybi4gSXQmIzM5O3MgYSBob3QtcGF0aCBmdW5jdGlvbiBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgYnkgYG5kb19zZWxlY3RfcXVldWVgLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyBpbiBgRm9jdXNTeW1ib2xzYCB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIElmIEkgZG9uJiMzOTt0IGxpc3QgYW55dGhpbmcsIFN5emthbGxlciB3aWxsIGp1c3QgdXNlIHRoZSBjb3ZlcmFnZSBmcm9tIHRoZSBwYXRjaC4KCldhaXQgYSBzZWNvbmTigKYgdGhlIHByb21wdCAqYWxzbyogd2FudHMgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCwgYW5kIHByZWZlcnMgbm9uLXN0YXRpYyBlbnRyeXBvaW50cy4gSXMgYHN0bW1hY19zZWxlY3RfcXVldWVgIGEgKmdlbmVyaWMqIGhvdC1wYXRoPyBObywgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gdGhlIHN0bW1hYyBkcml2ZXIuIEl0JiMzOTtzIG5vdCBsaWtlIGBkZXZfcXVldWVfeG1pdGAgd2hpY2ggaXMgKnZlcnkqIGdlbmVyaWMuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIGhvdC1wYXRoIGZvciAqdGhpcyogZHJpdmVyLCBpdCYjMzk7cyBub3QgYSBrZXJuZWwtd2lkZSBib3R0bGVuZWNrLgoKTGV0IG1lIHRoaW5r4oCmIGlzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbiBpbXBhY3RlZD8gTm8sIGp1c3QgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBPa2F5LCBvbmUgbW9yZSBjaGVjazogaXMgaXQgaW5saW5lZD8gU2luY2UgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgbmRvX3NlbGVjdF9xdWV1ZWAsIGl0JiMzOTtzICpub3QqIGlubGluZWQuIFBlcmZlY3QuIEkmIzM5O2xsIGxpc3QgYHN0bW1hY19zZWxlY3RfcXVldWVgIGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UuCgpOb3csIGZvciBDT05GSUdzLiBXaGF0IGRvIEkgbmVlZCB0byBhY3R1YWxseSAqdGVzdCogdGhpcyB2aWEgUENJPyBJIHRoaW5rIGl0JiMzOTtzIGBDT05GSUdfU1RNTUFDX0VUSGAgYW5kIGBDT05GSUdfU1RNTUFDX1BDSWAsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBqdXN0IHRvIGJlIGNlcnRhaW4gb2YgdGhlIGV4YWN0IG5hbWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDXyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NDQ2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBTVE1NQUMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSBzZWUgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAuIEFoLCBhIGRlcGVuZGVuY3khIGBTVE1NQUNfUENJYCByZWxpZXMgb24gYm90aCBgUENJYCBhbmQgYFNUTU1BQ19FVEhgLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBrbm93IHdoYXQgaW1wbGljYXRpb25zIGEgZGVwZW5kZW5jeSBsaWtlIHRoaXMgaGFzLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBjbGFyaWZ5IHRoZSBuYXR1cmUgb2YgdGhlc2UgcmVsYXRpb25zaGlwcywgc28gbGV0IG1lIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBzcGVjaWZpY3Mgc3Vycm91bmRpbmcgYFNUTU1BQ19QQ0lgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGhhcmQgZGVwZW5kZW5jeSwgYSBzb2Z0IG9uZSwgYW5kIHdoYXQgY29uc2VxdWVuY2VzIHRoZSBvdGhlciBjb25maWd1cmF0aW9ucyB3aWxsIGJyaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3ODA2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSB0aGlua2luZywgbGluZSA0MDcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiB0aGVzZSBmaWxlcy4gVGhhdCBzZWN0aW9uIGlzIGxpa2VseSBnb2luZyB0byBob2xkIHNvbWUgaW1wb3J0YW50IGNsdWVzIGFib3V0IHdoYXQgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkmIzM5O3JlIGVuYWJsZWQsIGFuZCBwb3RlbnRpYWxseSBhbnkgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0JiMzOTtzIGdldCB0byB0aGUgc3BlY2lmaWNzIGFuZCBzZWUgd2hhdCYjMzk7cyBvbiBvZmZlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzOTU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxuIDM5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cbiAzOTc6XHRcbiAzOTg6XHRjb25maWcgRFdNQUNfTU9UT1JDT01NXG4gMzk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4Mzc3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIFNUTU1BQyBjb25maWd1cmF0aW9ucyDigJMgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgZGVwZW5kZW5jaWVzLiYjMzQ7IFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgU1RNTUFDX0VUSGAgcmVsaWVzIG9uLiBBaCwgaGVyZSB3ZSBhcmU6IGBTVE1NQUNfRVRIYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGJvdGggYEhBU19JT01FTWAgYW5kIGBIQVNfRE1BYC4gR290IGl0LiBOb3csIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhvc2UuIFdoYXQgaXMgYWN0dWFsbHkgKnJlcXVpcmluZyogdGhvc2Ugb3B0aW9ucz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBgU1RNTUFDX0VUSGAsIGFuZCB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIHRoZSBjcml0aWNhbCBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4NzkKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiA0NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLCBhbmQgSSB0aGluayBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBpdC4gVGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBmdW5jdGlvbi4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgZWl0aGVyIHRocm91Z2ggUENJIChgU1RNTUFDX1BDSWApIG9yIHBsYXRmb3JtIGRldmljZXMuIEFuZCBTeXprYWxsZXIgY2FuIHRlc3QgaXQgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBvciBgc3l6X3BsYXRmb3JtX2RldmljZWAsIHdoaWNoIGlzIGdvb2QuCgpUaGUgZnVuY3Rpb25hbCBpbXBhY3Qgc2VlbXMgdG8gYmUgYSBjaGFuZ2UgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBxdWV1ZSBzZWxlY3Rpb24gc3BlY2lmaWNhbGx5IGZvciBHU08gZnJhbWVzLiBUaGF0IG1ha2VzIGl0IHdvcnRoIGZ1enppbmcsIGRlZmluaXRlbHkuCgpUaGUgcXVlc3Rpb24gdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcyB3aGV0aGVyIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgaXQmIzM5O3MgY2FsbGVkIGZvciBldmVyeSB0cmFuc21pdHRlZCBwYWNrZXQsIGl0ICppcyogYSBob3QtcGF0aC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWdhaW5zdCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIGJpYXNpbmcgdGhlIHRlc3RpbmcuIEhvd2V2ZXIsIGFmdGVyIHRoaW5raW5nIGl0IHRocm91Z2gsIEkmIzM5O3ZlIGRlY2lkZWQgdG8gbGlzdCBpdC4gSXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBrZXJuZWwgZnVuY3Rpb24gbGlrZSBgZGV2X3F1ZXVlX3htaXRgIG9yIGBrbWFsbG9jYC4gSXQmIzM5O3MgKnNwZWNpZmljKiB0byB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIGl0JiMzOTtzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBFdmVuIGlmIFN5emthbGxlciB3aWxsIHBpY2sgaXQgdXAgdGhyb3VnaCBjb3ZlcmFnZSB3aXRob3V0IGxpc3RpbmcgaXQsIGV4cGxpY2l0bHkgY2FsbGluZyBpdCBvdXQgZm9jdXNlcyB0aGUgZnV6emluZy4KCkkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgeWVzLCBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgaXMgdGhlICpvbmx5KiBmdW5jdGlvbiBjaGFuZ2VkLgoKU28sIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgZm9sbG93aW5nOgoKKiAgICoqV29ydGhGdXp6aW5nOiBUcnVlKioKKiAgICoqRm9jdXNTeW1ib2xzOiBcWyYjMzQ7c3RtbWFjXF9zZWxlY3RcX3F1ZXVlJiMzNDtcXSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbJiMzNDtTVE1NQUNcX0VUSCYjMzQ7LCAmIzM0O1NUTU1BQ1xfUENJJiMzNDtcXSoqCiogICAqKlJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBmb3IgR1NPIGZyYW1lcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIERXTUFDIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBQQ0kgYW5kIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDsqKgoKVGhhdCBzaG91bGQgY292ZXIgZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZWxlY3RfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBmb3IgR1NPIGZyYW1lcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIERXTUFDIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBQQ0kgYW5kIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZWxlY3RfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBmb3IgR1NPIGZyYW1lcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIERXTUFDIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBQQ0kgYW5kIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZWxlY3RpbmcgYSB0cmFuc21pc3Npb24gcXVldWUgZm9yIG5ldHdvcmsgcGFja2V0cyAoc2tfYnVmZikgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIEl0IGNoZWNrcyB0aGUgYGdzb190eXBlYCBvZiB0aGUgcGFja2V0IGFnYWluc3QgYHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgcXVldWUgc2VsZWN0aW9uIG9yIG91dC1vZi1ib3VuZHMgcXVldWUgaW5kaWNlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE5ZjUzZWM0NGY2ODIyMmIxMjAyMTY4NGNhMDZhMDA4YzE0ZGQxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMTU6MzQ6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTY0NDUsMTkgJiM0Mzs2NDQ1LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwKIHN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpCiB7Ci0JaW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7Z3NvX3R5cGU7CiYjNDM7CXUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi0mZ3Q7cmVhbF9udW1fdHhfcXVldWVzOwomIzQzOwlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JaWYgKGdzbyAmYW1wOyAoU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjYgfCBTS0JfR1NPX1VEUF9MNCkpIHsKLQkJLyoKLQkJICogVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIFRTTy9VU08KLQkJICogY2FwYWJsZSBRdWV1ZXMuIExldCYjMzk7cyB1c2UgYWx3YXlzIHRoZSBRdWV1ZSAwCi0JCSAqIGJlY2F1c2UgaWYgVFNPL1VTTyBpcyBzdXBwb3J0ZWQgdGhlbiBhdCBsZWFzdCB0aGlzCi0JCSAqIG9uZSB3aWxsIGJlIGNhcGFibGUuCiYjNDM7CWlmICgoc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZSAmYW1wOyBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcykgJmFtcDsmYW1wOwomIzQzOwkgICAgIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpKSB7CiYjNDM7CQkvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLgomIzQzOwkJICogRmFsbCBiYWNrIHRvIHRoZSBxdWV1ZSByZXNlcnZlZCBmb3IgVFNPIChxdWV1ZSAwKS4KIAkJICovCiAJCXJldHVybiAwOwogCX0KIAotCXJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtJmd0O3JlYWxfbnVtX3R4X3F1ZXVlczsKJiM0MzsJcmV0dXJuIHF1ZXVlOwogfQogCiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgc3RtbWFjIFF1ZXVlIFNlbGVjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHN0bW1hY19zZWxlY3RfcXVldWVgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlci4gVGhlIGNvcmUgb2YgdGhpcyBmdW5jdGlvbiBpcyBhYm91dCBkZXRlcm1pbmluZyB3aGljaCB0cmFuc21pdCBxdWV1ZSBhIGdpdmVuIGBza19idWZmYCAoc29ja2V0IGJ1ZmZlcikgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlIGluIGxvZ2ljIGFuZCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucywgcGFydGljdWxhcmx5IGluIHRlcm1zIG9mIG1lbW9yeSBzYWZldHkgYW5kIHBlcmZvcm1hbmNlLgoKVGhlIG9yaWdpbmFsIGNvZGUmIzM5O3MgYXBwcm9hY2ggd2FzIHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlIGBza19idWZmYCBpbmRpY2F0ZWQgaXQgd2FzIGEgR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCAoR1NPKSBwYWNrZXQgKHNwZWNpZmljYWxseSBUQ1B2NCwgVENQdjYsIG9yIFVEUCBMNCksIGl0IHdvdWxkICphbHdheXMqIGRlZmF1bHQgdG8gcXVldWUgMC4gT3RoZXJ3aXNlLCBpdCB3b3VsZCB1c2UgYG5ldGRldl9waWNrX3R4YCB0byBzZWxlY3QgYSBxdWV1ZSwgbW9kdWxvIHRoZSBudW1iZXIgb2YgcmVhbCB0cmFuc21pdCBxdWV1ZXMuIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgYXNzaWduaW5nIGEgcXVldWUgaW4gYSByb3VuZCByb2JpbiBmYXNoaW9uLCB3aGlsZSBwcmlvcml0aXppbmcgVFNPIHRyYWZmaWMgdG8gYSBzaW5nbGUgcXVldWUuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1vcmUgbnVhbmNlZCBhcHByb2FjaC4gTm93LCB0aGUgbG9naWMgY2hlY2tzIGlmIGEgZmV3IGNvbmRpdGlvbnMgaG9sZDoKMS4gIFRoZSBgc2tfYnVmZmAgaXMgYSBHU08gcGFja2V0ICh3aGljaCBpcyB1bmNoYW5nZWQpLgoyLiAgVGhlIGBnc29fdHlwZWAgd2l0aGluIHRoZSBgc2tfYnVmZmAgbWF0Y2hlcyB0aGUgYHByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzYCBhbmQKMy4gIFRoZSBwcm9wb3NlZCBxdWV1ZSBpcyBOT1QgcGVybWl0dGVkIGZvciBUU08uCgpJZiB0aG9zZSB0aHJlZSBjb25kaXRpb25zIGhvbGQsIHRoZSBmdW5jdGlvbiBmYWxscyBiYWNrIHRvIHF1ZXVlIDAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUgaXMgc29tZSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gVFNPIChUQ1AgU2VnbWVudGF0aW9uIE9mZmxvYWQpIG9yIFVTTyAoVURQIFNlZ21lbnRhdGlvbiBPZmZsb2FkKSBjYXBhYmlsaXRpZXMuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgcGFja2V0IGlzIGEgR1NPIHBhY2tldCBvZiBhIHR5cGUgaGFuZGxlZCBieSBoYXJkd2FyZSBUU08vVVNPLCBhbmQgdGhlIGNob3NlbiBxdWV1ZSBkb2VzIG5vdCBzdXBwb3J0IGhhcmR3YXJlIFRTTy9VU08sIHRoZW4gcXVldWUgMCBpcyBjaG9zZW4uCgpNeSBtYWluIGNvbmNlcm4gaXMgYWx3YXlzIG1lbW9yeSBzYWZldHkuIEhvd2V2ZXIsIGFmdGVyIHJldmlld2luZyB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIHF1aXRlIGxvY2FsaXplZC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkLCBhbmQgbm8ga2VybmVsIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEl0IG9ubHkgcmVhZHMgdGhlIHZhbHVlcyBpbiBgc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZWAgYW5kIGBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlc2AuIFRoZSBgc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZWAgaXMgcG9wdWxhdGVkIGJ5IHRoZSBuZXR3b3JraW5nIHN0YWNrIHNvIGl0JiMzOTtzIGd1YXJhbnRlZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIGBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlc2AgaXMgZHJpdmVyLWluaXRpYWxpemVkLiBUaGUgdmFsdWVzIHdpbGwgYWxyZWFkeSBleGlzdCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIFNvLCBmcm9tIGEgcXVpY2sgaW5zcGVjdGlvbiwgdGhlcmUgYXJlIG5vIGltbWVkaWF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIHBhdGNoIHNpbXBseSBtb2RpZmllcyAqaG93KiBhIHF1ZXVlIGlzIHNlbGVjdGVkLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgY2FuIGJlIHNldCB0byBmYWxzZS4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgaXQmIzM5O3Mgd29ydGggYSBxdWljayBsb29rIGF0IGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkYCB0byBjb25maXJtIHRoYXQgaXQgZG9lcyBub3QgaGF2ZSBhbnkgcG90ZW50aWFsIGZvciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2MDQ9c3RhdGljIHZvaWQgc3RtbWFjX3NhZmV0eV9mZWF0X2NvbmZpZ3VyYXRpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYxOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzYxOTpzdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYyMC1cdFx0XHRcdFx0IHVuc2lnbmVkIGludCBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYzOD1zdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxMy1cdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY250OyBjaGFuJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNzE0Olx0XHRcdGlmICghc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBjaGFuKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxNS1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDk4ND1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA1LVx0aWYgKHNrYl9pc19nc28oc2tiKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo1MDA2Olx0XHRpZiAoIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTUwMDctXHRcdCAgICAhc3RtbWFjX3Rzb192YWxpZF9wYWNrZXQoc2tiKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY0NDU9c3RhdGljIHUxNiBzdG1tYWNfc2VsZWN0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDUxLVx0aWYgKChza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGUgXHUwMDI2IHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDUyOlx0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDUzLVx0XHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzgyCgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkYCBmdW5jdGlvbi4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWxtb3N0IGNlcnRhaW5seSBqdXN0IGEgYm9vbGVhbiBjaGVjay4gSSYjMzk7bSBndWVzc2luZyBpdCYjMzk7cyBwcm9iaW5nIHNvbWUgY29uZmlndXJhdGlvbiBmbGFnIHJlbGF0ZWQgdG8gd2hldGhlciB0aGUgY2hhbm5lbCBpcyBzZXQgdXAgZm9yIFRpbWUgQmFzZWQgU2NoZWR1bGluZywgb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gTm8gcmVkIGZsYWdzIGhlcmUg4oCTIEkmIzM5O20gbm90IHNlZWluZyBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB0b3VjaGVkLCB3aGljaCBpcyBhbHdheXMgYSByZWxpZWYuIEdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHdlIGNhbiBzYWZlbHkgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGluIHRoZSBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZWxlY3RpbmcgYSB0cmFuc21pc3Npb24gcXVldWUgZm9yIG5ldHdvcmsgcGFja2V0cyAoc2tfYnVmZikgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIEl0IGNoZWNrcyB0aGUgYGdzb190eXBlYCBvZiB0aGUgcGFja2V0IGFnYWluc3QgYHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgcXVldWUgc2VsZWN0aW9uIG9yIG91dC1vZi1ib3VuZHMgcXVldWUgaW5kaWNlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2VsZWN0aW5nIGEgdHJhbnNtaXNzaW9uIHF1ZXVlIGZvciBuZXR3b3JrIHBhY2tldHMgKHNrX2J1ZmYpIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBjaGVja3MgdGhlIGBnc29fdHlwZWAgb2YgdGhlIHBhY2tldCBhZ2FpbnN0IGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBhbmQgdmVyaWZpZXMgaWYgdGhlIHNlbGVjdGVkIHF1ZXVlIHBlcm1pdHMgVFNPIHZpYSBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZCgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIHNlbGVjdGlvbiBiYXNlZCBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGZpZWxkcyBpbiB0aGUgYHNrX2J1ZmZgIGFuZCB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IHF1ZXVlIHNlbGVjdGlvbiBvciBvdXQtb2YtYm91bmRzIHF1ZXVlIGluZGljZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjE5Ljk2NjAyODUwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTM5OTQ3MDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3NlbGVjdF9xdWV1ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZWxlY3RpbmcgYSB0cmFuc21pc3Npb24gcXVldWUgZm9yIG5ldHdvcmsgcGFja2V0cyAoc2tfYnVmZikgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIEl0IGNoZWNrcyB0aGUgYGdzb190eXBlYCBvZiB0aGUgcGFja2V0IGFnYWluc3QgYHByaXYtXFx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBhbmQgdmVyaWZpZXMgaWYgdGhlIHNlbGVjdGVkIHF1ZXVlIHBlcm1pdHMgVFNPIHZpYSBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZCgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIHNlbGVjdGlvbiBiYXNlZCBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGZpZWxkcyBpbiB0aGUgYHNrX2J1ZmZgIGFuZCB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgcXVldWUgc2VsZWN0aW9uIG9yIG91dC1vZi1ib3VuZHMgcXVldWUgaW5kaWNlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGZvciBHU08gZnJhbWVzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIFBDSSBhbmQgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzQ6MTkuOTY2MDMzOTI2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjIxNjU5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMTlmNTNlYzQ0ZjY4MjIyYjEyMDIxNjg0Y2EwNmEwMDhjMTRkZDFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MzQ6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTY0NDUsMTkgKzY0NDUsMTggQEAgc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbiBzdGF0aWMgdTE2IHN0bW1hY19zZWxlY3RfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpXFxuIHtcXG4tXFx0aW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3R5cGU7XFxuK1xcdHUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi1cXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXG4tXFx0aWYgKGdzbyBcXHUwMDI2IChTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNiB8IFNLQl9HU09fVURQX0w0KSkge1xcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgVFNPL1VTT1xcbi1cXHRcXHQgKiBjYXBhYmxlIFF1ZXVlcy4gTGV0J3MgdXNlIGFsd2F5cyB0aGUgUXVldWUgMFxcbi1cXHRcXHQgKiBiZWNhdXNlIGlmIFRTTy9VU08gaXMgc3VwcG9ydGVkIHRoZW4gYXQgbGVhc3QgdGhpc1xcbi1cXHRcXHQgKiBvbmUgd2lsbCBiZSBjYXBhYmxlLlxcbitcXHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3R5cGUgXFx1MDAyNiBwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xcbitcXHRcXHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxcbitcXHRcXHQgKiBGYWxsIGJhY2sgdG8gdGhlIHF1ZXVlIHJlc2VydmVkIGZvciBUU08gKHF1ZXVlIDApLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXFx1MDAzZXJlYWxfbnVtX3R4X3F1ZXVlcztcXG4rXFx0cmV0dXJuIHF1ZXVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjIwLjM4ODk3MjkzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyOTIxMDE4NjkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3NlbGVjdF9xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMTlmNTNlYzQ0ZjY4MjIyYjEyMDIxNjg0Y2EwNmEwMDhjMTRkZDFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAxNTozNDoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTY0NDUsMTkgKzY0NDUsMTggQEAgc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuIHN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIHtcbi1cdGludCBnc28gPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGU7XG4rXHR1MzIgcXVldWUgPSBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuK1x0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdGlmIChnc28gXHUwMDI2IChTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNiB8IFNLQl9HU09fVURQX0w0KSkge1xuLVx0XHQvKlxuLVx0XHQgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgVFNPL1VTT1xuLVx0XHQgKiBjYXBhYmxlIFF1ZXVlcy4gTGV0J3MgdXNlIGFsd2F5cyB0aGUgUXVldWUgMFxuLVx0XHQgKiBiZWNhdXNlIGlmIFRTTy9VU08gaXMgc3VwcG9ydGVkIHRoZW4gYXQgbGVhc3QgdGhpc1xuLVx0XHQgKiBvbmUgd2lsbCBiZSBjYXBhYmxlLlxuK1x0aWYgKChza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGUgXHUwMDI2IHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xuK1x0XHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxuK1x0XHQgKiBGYWxsIGJhY2sgdG8gdGhlIHF1ZXVlIHJlc2VydmVkIGZvciBUU08gKHF1ZXVlIDApLlxuIFx0XHQgKi9cbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRyZXR1cm4gbmV0ZGV2X3BpY2tfdHgoZGV2LCBza2IsIE5VTEwpICUgZGV2LVx1MDAzZXJlYWxfbnVtX3R4X3F1ZXVlcztcbitcdHJldHVybiBxdWV1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICphZGRyKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzQ6MjAuMzg4OTc0NTczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg0MzYwNzE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIGBzdG1tYWNgIFF1ZXVlIFNlbGVjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBmbG9hdGluZyBhcm91bmQgdGhhdCdzIHR3ZWFraW5nIGhvdyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgd29ya3MsIHNwZWNpZmljYWxseSBmb3IgR1NPIGZyYW1lcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgcXVldWUgc2VsZWN0aW9uOyBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG9mIHJldHVybmluZyBxdWV1ZSAwIGZvciBHU08gZnJhbWVzLCBpdCdzIGF0dGVtcHRpbmcgdG8gc2VsZWN0IGEgcXVldWUuIEFuZCBvbmx5IGlmIHRoZSBjaG9zZW4gcXVldWUgaXNuJ3Qgc3VpdGFibGUgZm9yIFRTTyBkb2VzIGl0IGZhbGxiYWNrIHRvIHF1ZXVlIDAuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiAgQSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzLCBjYW4gSSByZWFkaWx5IHRlc3QgdGhpcyBjaGFuZ2UgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gIGBzdG1tYWNgLCBhcyBJIHJlY2FsbCwgaXMgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBkcml2ZXIgZm9yIDEwLzEwMC8xMDAwL0VRT1MuIElzIGl0IGVtdWxhdGVkIGJ5IFFFTVU/IEkgZG9uJ3QgdGhpbmsgUUVNVSAqbmF0aXZlbHkqIGVtdWxhdGVzIGBzdG1tYWNgLiBJIGhhdmUgdG8gZGlnIGEgYml0LiBQZXJoYXBzIGl0J3MgcHJlc2VudCBpbiBhbiBlbXVsYXRlZCBBUk0gYm9hcmQgd2l0aGluIFFFTVUuIE9yIHBlcmhhcHMgaXQncyBub3QgZXZlbiB0ZXN0YWJsZSB0aGVyZS5cblxuSG1tLCBsZXQncyBzZWUgd2hhdCdzIGluIFFFTVUncyBuZXR3b3JrIGRldmljZSBsaXN0OiBgaHcvbmV0L2lteF9mZWMuY2AsIGBody9uZXQvY2FkZW5jZV9nZW0uY2AsIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIGBody9uZXQvZnRnbWFjMTAwLmNgLCBgaHcvbmV0L25wY203eHhfZW1jLmNgLCBgaHcvbmV0L3NtYzkxYzExMS5jYCwgYGh3L25ldC9sYW45MTE4LmNgLCBgaHcvbmV0L3hnbWFjLmNgIChIaWdoYmFuay9NaWR3YXkpLiBXYWl0LCBjb3VsZCBgeGdtYWNgIGJlIGBzdG1tYWNgIGluIGRpc2d1aXNlPyAgTm8sIG5vLCB0aGF0J3Mgbm90IHJpZ2h0LiBgeGdtYWNgIHNlZW1zIHRvIGJlIGVpdGhlciBDYWx4ZWRhIG9yIFNUTWljcm9lbGVjdHJvbmljcydzIERXTUFDLlxuXG5SaWdodCwgc28gdG8gY29udGludWUgdGhpcyBhc3Nlc3NtZW50LCBsZXQncyBjaGVjayBpdHMgZGV2aWNlIGJpbmRpbmc6IGlzIGBzdG1tYWNgIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZT8gQWhhISBJdCBoYXMgUENJIGJpbmRpbmdzISBUaGF0J3MgZ29vZCBuZXdzOyBpdCBpbXByb3ZlcyB0aGUgY2hhbmNlcyBvZiB0ZXN0aW5nLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjI5LjIzMjU4NDAwNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg4NDk2MTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wY2lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD0xMDc9c3ludGF4IChlLmcuIGZvciBQQ0kgbW9kdWxlKTo6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0xMDgtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDoxMDk6ICAgIG1vZHByb2JlIHN0bW1hY19wY2kgW1xcdTAwM2NvcHRpb25cXHUwMDNlPVxcdTAwM2NWQUwxXFx1MDAzZSxcXHUwMDNjVkFMMlxcdTAwM2UsLi4uXVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0yNT1zdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXFx0dW5zaWduZWQgaW50IGZ1bmM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDU6c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDctXFx0c2l6ZV90IG5mdW5jcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM6c3RhdGljIGludCBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9saXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NzpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OC1cXHRjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODY9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODA2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXFx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMi1cXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQxPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NDg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ5LVxcdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODUyPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NzA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVxcdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk4LVxcdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTAxPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MTk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIwLVxcdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTQ0PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTUzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY3LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk3MD1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5ODA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4MS1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTg0PXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk5NDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQzLVxcdC5zZXR1cCA9IGFkbG5fc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0Ny1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBnYWxpbGVvX3N0bW1hY19kbWlfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTQtXFx0LmZ1bmMgPSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDU4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNjk6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGlvdDIwNDBfc3RtbWFjX2RtaV9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA3MC1cXHQuZnVuYyA9IGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTEwOT1zdGF0aWMgaW50IHF1YXJrX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTExOS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExMjA6XFx0cmV0ID0gc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHBkZXYsIHF1YXJrX3BjaV9kbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTEyMS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBxdWFya19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0Ni1cXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjY6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Ny1cXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDMtXFx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xNjU9c3RhdGljIGludCBsb29uZ3Nvbl9nbmV0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE3NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbmV0X3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVxcdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAxLVxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXFx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXFx0cGxhdC1cXHUwMDNlZml4X3NvY19yZXNldCA9IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzODpcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzk6XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0MC1cXHRsZC1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTQzOlxcdGluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0NC1cXHRyZXQgPSBpbmZvLVxcdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTE4OD1zdGF0aWMgaW50IG1vdG9yY29tbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxOTM6XFx0cmV0ID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShkZXYsIGJzcF9wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDgtXFx0cGxhdC1cXHUwMDNlY29yZV90eXBlXFx0XFx0PSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI0OTpcXHRwbGF0LVxcdTAwM2VzdXNwZW5kXFx0XFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTAtXFx0cGxhdC1cXHUwMDNlcmVzdW1lXFx0XFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoxMjppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MjY6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6Mjg6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6NDQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjk6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDoxMDppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMC1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MzM9c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVxcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXFx0LnNldHVwID0gc25wc19nbWFjNV9kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMjE6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjItXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgwOlxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgxOlxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4NzogKiBzdG1tYWNfcGNpX3JlbW92ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5MjpzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFxcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1OlxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNjpcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNy1cXHQuZHJpdmVyICAgICAgICAgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjMxLjAyMTA4NDQ1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxNDU1NDc2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBgc3RtbWFjYCBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgc3RtbWFjYCBkcml2ZXIgaXMgYWN0dWFsbHkgdGVzdGFibGUgaW4gYSBRRU1VIGVudmlyb25tZW50LCBnaXZlbiB0aGUgY29uc3RyYWludHMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBzaW5jZSB0aGUgZHJpdmVyIGhhcyBQQ0kgYmluZGluZ3MgKGBzdG1tYWNfcGNpLmNgKSwgaXQgKnNob3VsZCogYmUgcHJvYmVhYmxlIGlmIGEgY29ycmVzcG9uZGluZyBQQ0kgZGV2aWNlIGlzIGVtdWxhdGVkLCBvciBpZiBJIHVzZSBhIHZpcnR1YWwgUENJIGRldmljZS4gQnV0IHRoZW4gSSBwYXVzZWQgLSBkb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogU1RNTUFDIG92ZXIgUENJPyBJIG5lZWQgdG8gY2hlY2suXG5cblRoZW4gSSByZWNhbGxlZCB0aGF0IHN5emthbGxlciBvZnRlbiB0ZXN0cyBuZXR3b3JrIGRyaXZlcnMuIFBlcmhhcHMgc3l6a2FsbGVyIHV0aWxpemVzIGB2bmV0YCBvciBgZHVtbXlgIGludGVyZmFjZXMsIG9yIG1heWJlIGV2ZW4gaGFzIHNvbWUgY292ZXJhZ2Ugd2l0aG91dCBhIGRpcmVjdCBQQ0kgZGV2aWNlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGNhbiB0ZXN0IGl0IGlmIGl0J3MgYSBwbGF0Zm9ybSBkZXZpY2Ugb24gQVJNLCBvciBpZiB0aGVyZSdzIGEgUENJIGRldmljZS5cblxuQnV0IHRoZW4gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEl0IGNpdGVzIGV4YW1wbGVzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIG9yIFNtYXJ0TklDIGRyaXZlcnMsIHRoZSBraW5kcyBvZiB0aGluZ3MgdGhhdCByZXF1aXJlIGRlZGljYXRlZCBoYXJkd2FyZS4gQ291bGQgYHN0bW1hY2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/XG5cbkkgbmVlZCB0byBnZXQgdG8gdGhlIHJvb3Qgb2YgaG93IGBzdG1tYWNgIGlzIHVzZWQuIEkga25vdyBpdCdzIHVzZWQgaW4gbnVtZXJvdXMgQVJNIFNvQ3MgZnJvbSBSb2NrY2hpcCwgQWxsd2lubmVyLCBBbWxvZ2ljLCBOWFAsIGFuZCBvdGhlcnMuIEkga25vdyBRRU1VICpkb2VzKiBlbXVsYXRlIHNvbWUgb2YgdGhlc2UgU29DcyDigJMgSSd2ZSBzZWVuIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgKG1hcHBlZCB0byBgc3VuOGktZW1hY2AsIG5vdCBgc3RtbWFjYCkuIEknbSBsb29raW5nIGZvciB3aGVyZSBgc3RtbWFjYCBnZXRzIHVzZWQgaW4gUUVNVS4gTGV0IG1lIGxvb2sgYXQgdGhlIFFFTVUgc291cmNlLlxuXG5Pa2F5LCBJIHNlZSBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgLCB0aGF0J3MgYHN1bjhpLWVtYWNgLiBUaGVuIHRoZXJlJ3MgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgdGhhdCdzIGZvciB0aGUgYG1hY2JgIGRyaXZlci4gQW5kIGBody9uZXQvaW14X2ZlYy5jYCwgdGhhdCdzIGBmZWNgLiBgaHcvbmV0L25wY203eHhfZW1jLmNgIGlzIGZvciBgbnBjbTd4eF9lbWNgLCBhbmQgYGh3L25ldC94Z21hYy5jYCBpcyBvYnZpb3VzbHkgYHhnbWFjYC4gSSBhbSB3b25kZXJpbmcgaWYgYHN0bW1hY2AgY2FuIGV2ZW4gYmUgdXNlZCBpbiBRRU1VIGF0IGFsbD9cblxuV2FpdCwgSSB0aGluayBJIHJlbWVtYmVyIG5vdy4gYHN0bW1hY2AgaXMgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIChEV01BQykuIFNvIHRoYXQgbWVhbnMgUUVNVSAqc2hvdWxkKiBoYXZlIGFuIGVtdWxhdGlvbiBvZiB0aGlzLiBMZXQgbWUgc2VlLi4uIHllcyEgUUVNVSBoYXMgYGh3L25ldC9kZXNpZ253YXJlLmNgLiBPa2F5LCBub3cgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyB3aGF0IEknbSBsb29raW5nIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2ODMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzQ6NDAuMTY2NjM0NDI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTYwMzkxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdNQUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTk4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWw6Nzp0aXRsZTogQWx0ZXJhIFNPQ0ZQR0EgU29DIERXTUFDIGNvbnRyb2xsZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC04LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWw9MTI9ZGVzY3JpcHRpb246XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTMtICBUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgaW1wbGVtZW50YXRpb24gb2YgdGhlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWw6MTQ6ICBTeW5vcHN5cyBEV01BQyBmb3IgdGhlIEN5Y2xvbmU1LCBBcnJpYTUsIFN0cmF0aXgxMCwgQWdpbGV4NSBhbmQgQWdpbGV4N1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sLTE1LSAgZmFtaWxpZXMgb2YgY2hpcHMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbD0zMT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTEzLSAgICBkZXNjcmlwdGlvbjpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbDoxMTQ6ICAgICAgU2hvdWxkIGJlIHRoZSBwaGFuZGxlIHRvIHRoZSBlbWFjIHNwbGl0dGVyIHNvZnQgSVAgbm9kZSBpZiBEV01BQ1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sLTExNS0gICAgICBjb250cm9sbGVyIGlzIGNvbm5lY3RlZCBhbiBlbWFjIHNwbGl0dGVyLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWw9Nj0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbC03LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjg6dGl0bGU6IEFtbG9naWMgTWVzb24gRFdNQUMgRXRoZXJuZXQgY29udHJvbGxlclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sLTktXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbD0xMzA9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sLTE0OS0gICAgICAtIGRlc2NyaXB0aW9uOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjE1MDogICAgICAgICAgVGhlIGZpcnN0IHJlZ2lzdGVyIHJhbmdlIHNob3VsZCBiZSB0aGUgb25lIG9mIHRoZSBEV01BQyBjb250cm9sbGVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwtMTUxLSAgICAgIC0gZGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWw6Nzp0aXRsZTogSW50ZWwgRFdNQUMgZ2x1ZSBsYXllclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0OjE6KiBJUFE4MDZ4IERXTUFDIEV0aGVybmV0IGNvbnRyb2xsZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0LTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWw6Nzp0aXRsZTogTWVkaWFUZWsgRFdNQUMgZ2x1ZSBsYXllciBjb250cm9sbGVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZWRpYXRlay1kd21hYy55YW1sLTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWw6Nzp0aXRsZTogTnV2b3RvbiBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbDo3OnRpdGxlOiBOWFAgaS5NWDgvOSBEV01BQyBnbHVlIGxheWVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sPTEzPWRlc2NyaXB0aW9uOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTE0LSAgVGhpcyBkZXZpY2UgaXMgYSBTeW5vcHN5cyBEV0MgSVAsIGludGVncmF0ZWQgb24gTlhQIFMzMkcvUiBTb0NzLlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sOjE1OiAgVGhlIFNvQyBzZXJpZXMgUzMyRzJ4eCBhbmQgUzMyRzN4eCBmZWF0dXJlIG9uZSBEV01BQyBpbnN0YW5jZSxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbC0xNi0gIHRoZSBTb0MgUzMyUjQ1IGhhcyB0d28gaW5zdGFuY2VzLiBUaGUgZGV2aWNlcyBjYW4gdXNlIFJHTUlJL1JNSUkvTUlJXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbC0xOC0gIHRvIHRoZSBlbWJlZGRlZCBTZXJEZXMgZm9yIFNHTUlJIGNvbm5lY3Rpdml0eS5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbDoxOTogIFRoZSBEV01BQyBpbnN0YW5jZXMgaGF2ZSBjb25uZWN0ZWQgYWxsIFJYL1RYIHF1ZXVlcyBpbnRlcnJ1cHRzLFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTIwLSAgZW5hYmxpbmcgbG9hZCBiYWxhbmNpbmcgb2YgZGF0YSB0cmFmZmljIGFjcm9zcyBhbGwgQ1BVIGNvcmVzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sOjc6dGl0bGU6IFNvcGhnbyBDVjE4MDBCIERXTUFDIGdsdWUgbGF5ZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbDo3OnRpdGxlOiBTb3BoZ28gU0cyMDQ0IERXTUFDIGdsdWUgbGF5ZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbC04LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sOjc6dGl0bGU6IFNwYWNlbWl0IEszIERXTUFDIGdsdWUgbGF5ZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NwYWNlbWl0LGszLWR3bWFjLnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw9Nj0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTctXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbDo4OnRpdGxlOiBTdGFyRml2ZSBKSDcxMTAgRFdNQUMgZ2x1ZSBsYXllclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RpLWR3bWFjLnR4dDoxOlNUTWljcm9lbGVjdHJvbmljcyBTb0MgRFdNQUMgZ2x1ZSBsYXllciBjb250cm9sbGVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGktZHdtYWMudHh0LTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw9Nj0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtNy1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw6ODp0aXRsZTogU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMyIC8gTUNVIERXTUFDIGdsdWUgbGF5ZXIgY29udHJvbGxlclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbC05LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbC02LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sOjc6dGl0bGU6IFRvc2hpYmEgVmlzY29udGkgRFdNQUMgRXRoZXJuZXQgY29udHJvbGxlclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sLTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0PTEzPVRoZSBgYHN0bW1hY2BgIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgZHJpdmVyLXNwZWNpZmljIHBhcmFtZXRlcnMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0LTI0LSAgICAgLSBydW50aW1lXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Rldmxpbmsvc3RtbWFjLnJzdDoyNTogICAgIC0gRW5hYmxlIHRoZSBDb2Fyc2UgdGltZXN0YW1waW5nIG1vZGUsIGFzIGRlZmluZWQgaW4gdGhlIERXTUFDIFRSTS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0LTI2LSAgICAgICBBIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoaXMgdGltZXN0YW1waW5nIG1vZGUgY2FuIGJlIGZvdW5kIGluIHRoZVxcbi0tXFxuTUFJTlRBSU5FUlM9MzMzOD1GOlxcdGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtbnhwLXMzMmcqXFxuTUFJTlRBSU5FUlMtMzMzOS1cXG5NQUlOVEFJTkVSUzozMzQwOkFSTS9OWFAgUzMyRy9TMzJSIERXTUFDIEVUSEVSTkVUIERSSVZFUlxcbk1BSU5UQUlORVJTLTMzNDEtTTpcXHRKYW4gUGV0cm91cyBcXHUwMDNjamFuLnBldHJvdXNAb3NzLm54cC5jb21cXHUwMDNlXFxuLS1cXG5NQUlOVEFJTkVSUz0zNjA0PUY6XFx0ZHJpdmVycy9jbGsvc29jZnBnYS9cXG5NQUlOVEFJTkVSUy0zNjA1LVxcbk1BSU5UQUlORVJTOjM2MDY6QVJNL1NPQ0ZQR0EgRFdNQUMgR0xVRSBMQVlFUiBCSU5ESU5HU1xcbk1BSU5UQUlORVJTLTM2MDctTTpcXHRNYXR0aGV3IEdlcmxhY2ggXFx1MDAzY21hdHRoZXcuZ2VybGFjaEBhbHRlcmEuY29tXFx1MDAzZVxcbi0tXFxuTUFJTlRBSU5FUlM9MzYxMD1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXFxuTUFJTlRBSU5FUlMtMzYxMS1cXG5NQUlOVEFJTkVSUzozNjEyOkFSTS9TT0NGUEdBIERXTUFDIEdMVUUgTEFZRVJcXG5NQUlOVEFJTkVSUy0zNjEzLU06XFx0TWF4aW1lIENoZXZhbGxpZXIgXFx1MDAzY21heGltZS5jaGV2YWxsaWVyQGJvb3RsaW4uY29tXFx1MDAzZVxcbi0tXFxuTUFJTlRBSU5FUlM9MTgyMzI9RjpcXHRpbmNsdWRlL2xpbnV4L21vc3QuaFxcbk1BSU5UQUlORVJTLTE4MjMzLVxcbk1BSU5UQUlORVJTOjE4MjM0Ok1PVE9SQ09NTSBEV01BQyBHTFVFIERSSVZFUlxcbk1BSU5UQUlORVJTLTE4MjM1LU06XFx0WWFvIFppIFxcdTAwM2NtZUB6aXlhby5jY1xcdTAwM2VcXG4tLVxcbk1BSU5UQUlORVJTPTIzMDQzPUY6XFx0ZHJpdmVycy9paW8vYWRjL3J6bjEtYWRjLmNcXG5NQUlOVEFJTkVSUy0yMzA0NC1cXG5NQUlOVEFJTkVSUzoyMzA0NTpSRU5FU0FTIFJaL04xIERXTUFDIEdMVUUgTEFZRVJcXG5NQUlOVEFJTkVSUy0yMzA0Ni1NOlxcdFJvbWFpbiBHYW50b2lzIFxcdTAwM2Nyb21haW4uZ2FudG9pc0Bib290bGluLmNvbVxcdTAwM2VcXG4tLVxcbk1BSU5UQUlORVJTPTIzMDY1PUY6XFx0ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9yZW5lc2FzX3VzYmYuY1xcbk1BSU5UQUlORVJTLTIzMDY2LVxcbk1BSU5UQUlORVJTOjIzMDY3OlJFTkVTQVMgUlovVjJIKFApIERXTUFDIEdCRVRIIEdMVUUgTEFZRVIgRFJJVkVSXFxuTUFJTlRBSU5FUlMtMjMwNjgtTTpcXHRMYWQgUHJhYmhha2FyIFxcdTAwM2NwcmFiaGFrYXIubWFoYWRldi1sYWQucmpAYnAucmVuZXNhcy5jb21cXHUwMDNlXFxuLS1cXG5NQUlOVEFJTkVSUz0yNTQ0Mz1GOlxcdGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zcDIqXFxuTUFJTlRBSU5FUlMtMjU0NDQtXFxuTUFJTlRBSU5FUlM6MjU0NDU6U1BBQ0VNSVQgRFdNQUMgR0xVRSBMQVlFUlxcbk1BSU5UQUlORVJTLTI1NDQ2LU06XFx0SW5vY2hpIEFtYW90byBcXHUwMDNjaW5vY2hpYW1hQGdtYWlsLmNvbVxcdTAwM2VcXG4tLVxcbk1BSU5UQUlORVJTPTI1Nzk0PUY6XFx0YXJjaC9yaXNjdi9ib290L2R0cy9zdGFyZml2ZS9cXG5NQUlOVEFJTkVSUy0yNTc5NS1cXG5NQUlOVEFJTkVSUzoyNTc5NjpTVEFSRklWRSBEV01BQyBHTFVFIExBWUVSXFxuTUFJTlRBSU5FUlMtMjU3OTctTTpcXHRFbWlsIFJlbm5lciBCZXJ0aGluZyBcXHUwMDNja2VybmVsQGVzbWlsLmRrXFx1MDAzZVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9Mjc2PUNPTkZJR19TVE1NQUNfRVRIPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNzc6Q09ORklHX0RXTUFDX0RXQ19RT1NfRVRIPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0yNzgtQ09ORklHX1RJX0NQU1c9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9NjA9Q09ORklHX1NUTU1BQ19FVEg9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2htb2JpbGVfZGVmY29uZmlnOjYxOiMgQ09ORklHX0RXTUFDX1JFTkVTQVNfR0JFVEggaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2htb2JpbGVfZGVmY29uZmlnLTYyLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9NDQ2PUNPTkZJR19TVE1NQUNfRVRIPW1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQ0NzpDT05GSUdfRFdNQUNfTUVESUFURUs9bVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDQ4OkNPTkZJR19EV01BQ19URUdSQT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NDktIyBDT05GSUdfTkVUX1ZFTkRPUl9TVU4gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpYy9ib2FyZC1uaTE2OTQ0NS5jb25maWc9Mjg9Q09ORklHX1NUTU1BQ19QTEFURk9STT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpYy9ib2FyZC1uaTE2OTQ0NS5jb25maWc6Mjk6Q09ORklHX0RXTUFDX0dFTkVSSUM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZz04OT1DT05GSUdfU1RNTUFDX0VUSD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZzo5MDojIENPTkZJR19EV01BQ19HRU5FUklDIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnLTkxLSMgQ09ORklHX05FVF9WRU5ET1JfU1lOT1BTWVMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz0xNDE9Q09ORklHX1NUTU1BQ19FVEg9bVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6MTQyOkNPTkZJR19EV01BQ19USEVBRD1tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy0xNDMtQ09ORklHX01JQ1JFTF9QSFk9eVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL2FybS5jb25maWc9MzM9Q09ORklHX1BIWV9ST0NLQ0hJUF9EUD15XFxuZHJpdmVycy9ncHUvZHJtL2NpL2FybS5jb25maWc6MzQ6Q09ORklHX0RXTUFDX1JPQ0tDSElQPXlcXG5kcml2ZXJzL2dwdS9kcm0vY2kvYXJtLmNvbmZpZy0zNS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm02NC5jb25maWc9MzU9Q09ORklHX1BIWV9ST0NLQ0hJUF9EUD15XFxuZHJpdmVycy9ncHUvZHJtL2NpL2FybTY0LmNvbmZpZzozNjpDT05GSUdfRFdNQUNfUk9DS0NISVA9eVxcbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm02NC5jb25maWctMzctQ09ORklHX1NUTU1BQ19FVEg9eVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00Mj1pZiBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDQ6Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1Mjpjb25maWcgRFdNQUNfR0VORVJJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTM6XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU0LVxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1NjpcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTctXFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjA6Y29uZmlnIERXTUFDX0FOQVJJT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo2OTpjb25maWcgRFdNQUNfRUlDNzcwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjc4OmNvbmZpZyBEV01BQ19JTkdFTklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03OS1cXHR0cmlzdGF0ZSBcXFwiSW5nZW5pYyBNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5MDpjb25maWcgRFdNQUNfSVBRODA2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTE6XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05Mi1cXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5NjpcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwNjpjb25maWcgRFdNQUNfTFBDMThYWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTA3OlxcdHRyaXN0YXRlIFxcXCJOWFAgTFBDMTh4eC80M3h4IERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDgtXFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTExLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjExMjpcXHQgIFN1cHBvcnQgZm9yIE5YUCBMUEMxOHh4LzQzeHggRFdNQUMgRXRoZXJuZXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMTQ6Y29uZmlnIERXTUFDX01FRElBVEVLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UMjd4eCBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMjpjb25maWcgRFdNQUNfTUVTT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiQW1sb2dpYyBNZXNvbiBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzM6Y29uZmlnIERXTUFDX05VVk9UT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNC1cXHR0cmlzdGF0ZSBcXFwiTnV2b3RvbiBNQTM1IGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE0NTpjb25maWcgRFdNQUNfUUNPTV9FVEhRT1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE1NTpjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU2LVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjg6Y29uZmlnIERXTUFDX1JPQ0tDSElQXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjktXFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE3OTpjb25maWcgRFdNQUNfUlpOMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE5MTpjb25maWcgRFdNQUNfUzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTItXFx0dHJpc3RhdGUgXFxcIk5YUCBTMzJHL1MzMlIgR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDM6Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIwNC1cXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTg6Y29uZmlnIERXTUFDX1NPUEhHT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE5LVxcdHRyaXN0YXRlIFxcXCJTb3BoZ28gZHdtYWMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI5OmNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVxcdHRyaXN0YXRlIFxcXCJTcGFjZW1pdCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDE6Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDItXFx0dHJpc3RhdGUgXFxcIlN0YXJGaXZlIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI1Mzpjb25maWcgRFdNQUNfU1RJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTQtXFx0dHJpc3RhdGUgXFxcIlNUaSBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2NTpjb25maWcgRFdNQUNfU1RNMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2NjpcXHR0cmlzdGF0ZSBcXFwiU1RNMzIgRFdNQUMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Ny1cXHRkZWZhdWx0IEFSQ0hfU1RNMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjc3OmNvbmZpZyBEV01BQ19TVU5YSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODg6Y29uZmlnIERXTUFDX1NVTjhJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODktXFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwMDpjb25maWcgRFdNQUNfU1VONTVJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDEtXFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTI6Y29uZmlnIERXTUFDX1RIRUFEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIlQtSEVBRCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMjI6Y29uZmlnIERXTUFDX0lNWDhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMyMzpcXHR0cmlzdGF0ZSBcXFwiTlhQIElNWDggRFdNQUMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyNC1cXHRkZWZhdWx0IEFSQ0hfTVhDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNDpjb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDQ6Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQ1LVxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbjEgR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNTU6Y29uZmlnIERXTUFDX1RFR1JBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTYtXFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NDpjb25maWcgRFdNQUNfVklTQ09OVElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NTpcXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY2LVxcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzM9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc4OmNvbmZpZyBEV01BQ19JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4ODpjb25maWcgRFdNQUNfTE9PTkdTT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4OTpcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTAtXFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk4OmNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5OTpcXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAwLVxcdGRlcGVuZHMgb24gUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDQ6XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNS1cXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcXHQrPSBzdG1tYWMtcGxhdGZvcm0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19EV01BQ19BTkFSSU9OKVxcdCs9IGR3bWFjLWFuYXJpb24ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19EV01BQ19FSUM3NzAwKVxcdCs9IGR3bWFjLWVpYzc3MDAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVxcdCs9IGR3bWFjLWluZ2VuaWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19EV01BQ19JUFE4MDZYKVxcdCs9IGR3bWFjLWlwcTgwNngub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19EV01BQ19MUEMxOFhYKVxcdCs9IGR3bWFjLWxwYzE4eHgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcXHQrPSBkd21hYy1tZWRpYXRlay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0RXTUFDX01FU09OKVxcdCs9IGR3bWFjLW1lc29uLm8gZHdtYWMtbWVzb244Yi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0RXTUFDX05VVk9UT04pXFx0Kz0gZHdtYWMtbnV2b3Rvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVxcdCs9IGR3bWFjLXFjb20tZXRocW9zLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfRFdNQUNfUkVORVNBU19HQkVUSCkgKz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0RXTUFDX1JPQ0tDSElQKVxcdCs9IGR3bWFjLXJrLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfRFdNQUNfUlpOMSlcXHQrPSBkd21hYy1yem4xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVxcdFxcdCs9IGR3bWFjLXMzMi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX0RXTUFDX1NPQ0ZQR0EpXFx0Kz0gZHdtYWMtYWx0ci1zb2NmcGdhLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVxcdCs9IGR3bWFjLXNvcGhnby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0RXTUFDX1NQQUNFTUlUKVxcdCs9IGR3bWFjLXNwYWNlbWl0Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfRFdNQUNfU1RBUkZJVkUpXFx0Kz0gZHdtYWMtc3RhcmZpdmUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXFx0XFx0Kz0gZHdtYWMtc3RpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfRFdNQUNfU1RNMzIpXFx0Kz0gZHdtYWMtc3RtMzIub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcXHQrPSBkd21hYy1zdW54aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVxcdCs9IGR3bWFjLXN1bjhpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfRFdNQUNfU1VONTVJKVxcdCs9IGR3bWFjLXN1bjU1aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVxcdCs9IGR3bWFjLXRoZWFkLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXFx0Kz0gZHdtYWMtZHdjLXFvcy1ldGgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVxcdCs9IGR3bWFjLWludGVsLXBsYXQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfRFdNQUNfR0VORVJJQylcXHQrPSBkd21hYy1nZW5lcmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfRFdNQUNfSU1YOClcXHQrPSBkd21hYy1pbXgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcXHQrPSBkd21hYy10ZWdyYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVxcdCs9IGR3bWFjLXZpc2NvbnRpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00Ni1zdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTU0LXN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6Mjk6I2RlZmluZSBEV01BQ19TTlBTVkVSXFx0R0VOTUFTS19VMzIoNywgMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozMDojZGVmaW5lIERXTUFDX1VTRVJWRVJcXHRHRU5NQVNLX1UzMigxNSwgOClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMi0vKiBTeW5vcHN5cyBDb3JlIHZlcnNpb25zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzM6I2RlZmluZVxcdERXTUFDX0NPUkVfM180MFxcdFxcdDB4MzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDojZGVmaW5lXFx0RFdNQUNfQ09SRV8zXzUwXFx0XFx0MHgzNVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM1OiNkZWZpbmVcXHREV01BQ19DT1JFXzNfNzBcXHRcXHQweDM3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzY6I2RlZmluZVxcdERXTUFDX0NPUkVfNF8wMFxcdFxcdDB4NDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNzojZGVmaW5lIERXTUFDX0NPUkVfNF8xMFxcdFxcdDB4NDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozODojZGVmaW5lIERXTUFDX0NPUkVfNV8wMFxcdFxcdDB4NTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozOTojZGVmaW5lIERXTUFDX0NPUkVfNV8xMFxcdFxcdDB4NTFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0MDojZGVmaW5lIERXTUFDX0NPUkVfNV8yMFxcdFxcdDB4NTJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00MS0jZGVmaW5lIERXWEdNQUNfQ09SRV8yXzEwXFx0MHgyMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MTpcXHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZGVzY3MuaC0zLSAgSGVhZGVyIEZpbGUgdG8gZGVzY3JpYmUgdGhlIERNQSBkZXNjcmlwdG9ycyBhbmQgcmVsYXRlZCBkZWZpbml0aW9ucy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kZXNjcy5oOjQ6ICBUaGlzIGlzIGZvciBEV01BQzEwMCBhbmQgMTAwMCBjb3Jlcy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kZXNjcy5oLTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzozOiAqIEFkYXB0cnVtIEFuYXJpb24gRFdNQUMgZ2x1ZSBsYXllclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTMzPW1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYW5hcmlvbl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEzNTpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkFkYXB0cnVtIEFuYXJpb24gRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzYtTU9EVUxFX0FVVEhPUihcXFwiQWxleGFuZHJ1IEdhZ25pdWMgXFx1MDAzY21yLm51a2UubWVAZ21haWwuY29tXFx1MDAzZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0zNj1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg3LVxcdC8qIGR3Yy1xb3MgbmVlZHMgR01BQzQsIEFBTCwgVFNPIGFuZCBQTVQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjg4OlxcdHBsYXRfZGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtODktXFx0cGxhdF9kYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZWFhbCA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMS0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoyOiAqIEdlbmVyaWMgRFdNQUMgcGxhdGZvcm0gZHJpdmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTItLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOiAqIGR3bWFjLWlteC5jIC0gRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllciBmb3IgTlhQIGlteDhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00MDM9TU9EVUxFX0FVVEhPUihcXFwiTlhQXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDA0Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiTlhQIGlteDggRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllclxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwNS1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzozOiAqIGR3bWFjLWluZ2VuaWMuYyAtIEluZ2VuaWMgU29DcyBEV01BQyBzcGVjaWZpYyBnbHVlIGxheWVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0yODI9TU9EVUxFX0FVVEhPUihcXFwi5ZGo55Cw5p2wIChaaG91IFlhbmppZSkgXFx1MDAzY3pob3V5YW5qaWVAd2FueWVldGVjaC5jb21cXHUwMDNlXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI4MzpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkluZ2VuaWMgU29DcyBEV01BQyBzcGVjaWZpYyBnbHVlIGxheWVyXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI4NC1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoyOi8qIEludGVsIERXTUFDIHBsYXRmb3JtIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0zLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTUwPU1PRFVMRV9MSUNFTlNFKFxcXCJHUEwgdjJcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTUxOk1PRFVMRV9ERVNDUklQVElPTihcXFwiSW50ZWwgRFdNQUMgcGxhdGZvcm0gZHJpdmVyXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU5Nj1zdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk5LVxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzIwXzM1TTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYwMDpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MDEtXFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTY9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjYtXFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo2Mjc6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyOC1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oLTItLyogQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmg6MzogKiBEV01BQyBJbnRlbCBoZWFkZXIgZmlsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtNC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuaDo2OiNpZm5kZWYgX19EV01BQ19JTlRFTF9IX19cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjc6I2RlZmluZSBfX0RXTUFDX0lOVEVMX0hfX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuaDo4MTojZW5kaWYgLyogX19EV01BQ19JTlRFTF9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ3NjpcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00NzctXFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZ21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz01MDg9TU9EVUxFX0FVVEhPUihcXFwiTWF0aGlldSBPbGl2YXJpIFxcdTAwM2NtYXRoaWV1QGNvZGVhdXJvcmEub3JnXFx1MDAzZVxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDk6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJRdWFsY29tbSBBdGhlcm9zIElQUTgwNnggRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MTAtTU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy03Mi0jZGVmaW5lIFBDSV9ERVZJQ0VfSURfTE9PTkdTT05fR05FVFxcdDB4N2ExM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzM6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMVxcdDB4MTBcXHQvKiBMb29uZ3NvbiBjdXN0b20gSUQgMHgxMCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzQ6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMlxcdDB4MTJcXHQvKiBMb29uZ3NvbiBjdXN0b20gSUQgMHgxMiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTg2PXN0YXRpYyB2b2lkIGxvb25nc29uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTUtXFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMTAwXzE1ME07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo5NjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy05Ny1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEwOC1cXHRzd2l0Y2ggKGxkLVxcdTAwM2Vsb29uZ3Nvbl9pZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTA5OlxcdGNhc2UgRFdNQUNfQ09SRV9NVUxUSUNIQU5fVjE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xMTAtXFx0XFx0bGQtXFx1MDAzZW11bHRpY2hhbiA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEyMC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjEyMTpcXHRjYXNlIERXTUFDX0NPUkVfTVVMVElDSEFOX1YyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTIyLVxcdFxcdGxkLVxcdTAwM2VtdWx0aWNoYW4gPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0zMDY9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19zZXR1cCh2b2lkICphcHJpdiwgc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMjgtXFx0aWYgKGxkLVxcdTAwM2VtdWx0aWNoYW4pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjMyOTpcXHRcXHRwcml2LVxcdTAwM2VzeW5vcHN5c19pZCA9IERXTUFDX0NPUkVfM183MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTMzMC1cXHRcXHQqZG1hID0gZHdtYWMxMDAwX2RtYV9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ2Nj1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2FjcGlfY29uZmlnKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00NzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0Nzg6LyogTG9vbmdzb24ncyBEV01BQyBkZXZpY2UgbWF5IHRha2UgbmVhcmx5IHR3byBzZWNvbmRzIHRvIGNvbXBsZXRlIERNQSByZXNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDc5LXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjE0PW1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTY6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJMb29uZ3NvbiBEV01BQyBQQ0kgZHJpdmVyXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTctTU9EVUxFX0FVVEhPUihcXFwiUWluZyBaaGFuZyBcXHUwMDNjemhhbmdxaW5nQGxvb25nc29uLmNuXFx1MDAzZVxcXCIpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjQxLjg4MjY4MDgyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDM5NjA1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyIGFuZCBpdHMgUUVNVSBSZXByZXNlbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHN0bW1hY2AgZHJpdmVyIGEgYml0IGJldHRlciwgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBgRFdNQUNgIChEZXNpZ25XYXJlIE1BQykgYXMgaXQgc2VlbXMgdGhhdCBgc3RtbWFjYCBpcywgaW4gZmFjdCwgdGhlIGRyaXZlciBmb3IgYERXTUFDYC4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGFib3V0IHRoaXMgaW4gUUVNVSwgc28gbGV0J3MgY2hlY2sgYGh3L25ldC9kZXNpZ253YXJlLmNgLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hpY2ggUUVNVSBtYWNoaW5lcyBhY3R1YWxseSB1dGlsaXplIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgY29kZS4gSG1tLCBsb29rcyBsaWtlIGl0J3MgdXNlZCBpbiBgaHcvYXJtL2FsbHdpbm5lci1oMy5jYCwgYnV0IHdhaXQsIHRoZSBzdW44aS1lbWFjIGlzIGRpZmZlcmVudCBoZXJlLiBMZXQncyBzZWUuLi4gb2gsIGFsc28sIGRlc2lnbndhcmUgKmlzKiB1c2VkLCBidXQgaW4gYGh3L2FybS94bG54LXp5bnFtcC5jYD8gTm8sIHRoYXQncyBgY2FkZW5jZV9nZW1gLiBPa2F5LCBJIHdhcyBnZXR0aW5nIHRoYXQgY29uZnVzZWQuXG5cbk5vdywgd2hlcmUgd2FzIEk/IFJpZ2h0LCBgc3RtbWFjYC4gSSBhbHNvIHJlY2FsbCBzZWVpbmcgdGhhdCBgc3RtbWFjYCBpcyB0ZXN0ZWQgYnkgc3l6a2FsbGVyLiBUaGF0J3MgZ29vZCwgYmVjYXVzZSBzeXprYWxsZXIgcHJvdmlkZXMgdmFsdWFibGUgY292ZXJhZ2UgZGF0YS4gU28sIGxldCdzIGludmVzdGlnYXRlIHRoZSByZWFjaGFiaWxpdHkgb2YgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIEFuZCwgbGV0J3Mgc2VlLCB0aGF0IGZ1bmN0aW9uIGlzIHRoZSBgbmRvX3NlbGVjdF9xdWV1ZWAgY2FsbGJhY2sgZm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEdvdHRhIGNvbmZpcm0gdGhpcyBxdWlja2x5LiBHb2luZyB0byBjaGVjayBgc3RtbWFjX21haW4uY2AgdG8gYmUgY29tcGxldGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE2MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNDo0OC42ODY2NDM2NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMDk5MzgwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2VsZWN0X3F1ZXVlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjQxOT1zdGF0aWMgaW50IHN0bW1hY19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDQ1OnN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ0Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzE1LVxcdC5uZG9fc2V0dXBfdGMgPSBzdG1tYWNfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzE2OlxcdC5uZG9fc2VsZWN0X3F1ZXVlID0gc3RtbWFjX3NlbGVjdF9xdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPSBzdG1tYWNfc2V0X21hY19hZGRyZXNzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNDo1MC40ODc2NDI5MDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTQ4MDkzOTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBuZG9fc2VsZWN0X3F1ZXVlYCBpbiBgc3RtbWFjYCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBgbmRvX3NlbGVjdF9xdWV1ZWAgY2FsbGJhY2sgaGVyZS4gVGhhdCdzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgbmV0d29yayBkZXZpY2UgaGFzIG11bHRpcGxlIHRyYW5zbWl0IHF1ZXVlcyBhbmQgaXQncyB0aW1lIHRvIGRlY2lkZSB3aGljaCBvbmUgdG8gdXNlIGZvciBhIHBhY2tldC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IElmIHN5emthbGxlciBpcyB0YXJnZXRpbmcgYHN0bW1hY2AsIHRoZW4geWVzLiBJZiBzeXprYWxsZXIgY2FuIHRlc3QgaXQgdmlhIGB2bmV0YCwgb3IgYGR1bW15YCwgb3IgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmVkIGluIFFFTVUsIHRoZW4gaXQncyByZWFjaGFibGUuXG5cbk5vdywgZG9lcyBzeXprYWxsZXIgdGVzdCBgc3RtbWFjYD8gSSBjYW4gcXVpY2tseSBjaGVjayB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGVuYWJsZWQuIExldCdzIHNlZSBpZiBgQ09ORklHX1NUTU1BQ19FVEhgIGlzIHNldCBpbiB0aGUgYHg4Nl82NGAgZGVmY29uZmlnIG9yIHRoZSBtYWluIHN5emthbGxlciBjb25maWcuIEhtbW0sIEkgZG9uJ3QgaGF2ZSB0aGUgc3l6a2FsbGVyIGNvbmZpZyBoYW5keSwgYnV0IHdhaXQsIEkgY2FuIGNoZWNrIGlmIGl0J3MgYSBQQ0kgZGV2aWNlLiBgc3RtbWFjX3BjaS5jYCByZWdpc3RlcnMgYSBQQ0kgZHJpdmVyLlxuXG5Pa2F5LCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcywgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyLCBvciBRRU1VIGNhbiBlbXVsYXRlIHRoZSBQQ0kgZGV2aWNlLiBXYWl0Li4uZG9lcyBRRU1VIGVtdWxhdGUgdGhlIGBzdG1tYWNgIFBDSSBkZXZpY2U/IE5vLCB0aGF0J3Mgbm90IHNvbWV0aGluZyBRRU1VIGltcGxlbWVudHMuIEJ1dCBoYW5nIG9uLCBzeXprYWxsZXIgaGFzIGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLCBhbmQgYG5ldGRldnNpbWAgZm9yIG5ldC4gU28sIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSAqcHNldWRvKiBkZXZpY2UgZm9yIFBDST8gTm8sIGl0J3Mgbm90IHRoZSBzYW1lIHRoaW5nLiBTeXprYWxsZXIncyBgc3l6X3BjaV9kZXZpY2VgIGluamVjdHMgUENJIGRldmljZXMsIHByb3ZpZGluZyB0aGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgQkFScyB0byBwcm9iZSB0aGUgZHJpdmVyLiBCdXQgdG8gYWN0dWFsbHkgZ2V0IHRvIGBuZG9fc2VsZWN0X3F1ZXVlYCBhbmQgc2VuZCBwYWNrZXRzLCB0aGUgZGV2aWNlIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgYXMgYSBuZXRkZXYgYW5kIGJlIHVwLlxuXG5Pa2F5LCBzbyBjYW4gYHN0bW1hY2AgcHJvYmUgc3VjY2Vzc2Z1bGx5IHdpdGgganVzdCByYW5kb20gQkFScyBwcm92aWRlZCBieSBgc3l6X3BjaV9kZXZpY2VgPyBUaGF0IHNlZW1zIHVubGlrZWx5LCBidXQgaXQncyB3b3J0aCBjaGVja2luZyBgc3RtbWFjX3BjaV9wcm9iZWAgdG8gc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEwNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNTowMC4wMzU3Mzk5ODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODg1MDE0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3BjaV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1OlxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNi1cXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjAxLjYyNDI0OTIxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk2NjkzMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byBgc3RtbWFjX3BjaV9wcm9iZWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjX3BjaV9wcm9iZWAgaXMgYWN0dWFsbHkgZG9pbmcuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSBhc3N1bWluZyB0aGlzIGlzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGUgUENJLWJhc2VkIFNUTU1BQyBkcml2ZXIgaW5zdGFudGlhdGlvbi4gSXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGtlcm5lbCBkZXRlY3RzIGFuIFNUTU1BQyBFdGhlcm5ldCBjb250cm9sbGVyIHZpYSBQQ0kuIFNvLCB3aGF0IGFyZSB0aGUga2V5IHN0ZXBzIGl0J3MgbGlrZWx5IHRha2luZz8gSSBleHBlY3QgaXQnbGwgYmUgZG9pbmcgdGhpbmdzIGxpa2U6XG5cbiogICAqKlJlc291cmNlIEFsbG9jYXRpb246KiogRmlyc3QsIGl0IHdpbGwgbGlrZWx5IGJlIHByb2JpbmcgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHRvIGZpbmQgdGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIFNUTU1BQydzIHJlZ2lzdGVycywgaW50ZXJydXB0IG51bWJlcnMsIGFuZCBvdGhlciBuZWNlc3NhcnkgcmVzb3VyY2VzLiBJdCdsbCBiZSBhIGNyaXRpY2FsIHBhcnQgb2YgZGlzY292ZXJpbmcgaG93IHRoaXMgY2FyZCBpcyBob29rZWQgdXAuXG4qICAgKipEcml2ZXIgQmluZGluZzoqKiBJdCdsbCB0aGVuIGhhdmUgdG8gYmluZCB0byB0aGUgUENJIGRldmljZSwgbGlrZWx5IHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBwY2lfc2V0X2RydmRhdGFgIHRvIGF0dGFjaCB0aGUgZHJpdmVyLXNwZWNpZmljIGRhdGEgdG8gdGhlIFBDSSBkZXZpY2Ugc3RydWN0LiBJIGFudGljaXBhdGUgaXQncyBhIHJvdXRpbmUgY2FsbCB0aGF0J3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIHRoaXMgZHJpdmVyIHJ1bm5pbmcgYW5kIGZvciBsaW5raW5nIGl0IHRvIHRoZSBoYXJkd2FyZS5cbiogICAqKkRldmljZSBJbml0aWFsaXphdGlvbjoqKiBUaGlzIHdpbGwgaW5jbHVkZSBhbGxvY2F0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIHN0cnVjdCwgZmlsbGluZyBpdCB3aXRoIHRoZSBQQ0ktZGVyaXZlZCByZXNvdXJjZSBpbmZvcm1hdGlvbiwgYW5kIHBvc3NpYmx5IGNhbGxpbmcgaW50byBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVycy4gVGhpcyB3aWxsIHRoZW4gbGlrZWx5IHJlc3VsdCBpbiBjYWxsaW5nIGBwbGF0Zm9ybV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBpbml0aWFsaXphdGlvbnMgYW5kIGNhbGxzIGFyZSBsaW5rZWQgdG8gc2VlIHdoZXJlIHRoZSBkcml2ZXIgaXMgaG9va2VkIHVwLlxuKiAgICoqRE1BIFNldHVwOioqIEknbSBndWVzc2luZyBpdCB3aWxsIGNvbmZpZ3VyZSBETUEgc2V0dGluZ3MgYW5kIGxpa2VseSBhbGxvY2F0ZSBETUEtYWJsZSBtZW1vcnkgcmVnaW9ucyBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiBhbiBTVE1NQUMsIHRoaXMgaXMgZ29pbmcgdG8gYmUgY2VudHJhbCB0byBoaWdoLXNwZWVkIG9wZXJhdGlvbi5cbiogICAqKkludGVycnVwdCBIYW5kbGluZzoqKiBTZXR0aW5nIHVwIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB2aWEgdGhlIFBDSSBpbnRlcnJ1cHQgdmVjdG9yIGlzIGEgZ2l2ZW4uIEknbGwgbmVlZCB0byBsb29rIGF0IGhvdyBpdCdzIGhhbmRsZWQsIGluY2x1ZGluZyBpbnRlcnJ1cHQgbWFza2luZyBhbmQgcHJpb3JpdHkuXG4qICAgKipDbG9ja3MgYW5kIFJlc2V0OioqIEknbGwgYWxzbyBleHBlY3QgaXQgdG8gbWFuYWdlIGNsb2NrIGVuYWJsaW5nL2Rpc2FibGluZyBmb3IgdGhlIE1BQyBhbmQgcG90ZW50aWFsbHkgYXBwbHkgcmVzZXRzLiBTVE1NQUNzIG9mdGVuIHJlcXVpcmUgY2FyZWZ1bCBjbG9jayBtYW5hZ2VtZW50LlxuKiAgICoqTmV0d29yayBEZXZpY2UgUmVnaXN0cmF0aW9uOioqIEZpbmFsbHksIGl0J2xsIGFsbW9zdCBjZXJ0YWlubHkgY2FsbCBgcmVnaXN0ZXJfbmV0ZGV2YCB0byBjcmVhdGUgYSBuZXR3b3JrIGludGVyZmFjZSBhbmQgbWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoaXMgaXMgdGhlIGxhc3Qgc3RlcCB0byBtYWtlIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIgYXZhaWxhYmxlIHRvIHRoZSBrZXJuZWwgYW5kIHRoZSB1c2VybGFuZC5cblxuSSBuZWVkIHRvIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gdG8gdmVyaWZ5IHRoZXNlIGFzc3VtcHRpb25zIGFuZCB0byBiZXR0ZXIgdW5kZXJzdGFuZCBhbnkgbnVhbmNlcyBvciBvcHRpbWl6YXRpb25zIHRoZSBkZXZlbG9wZXJzIHVzZWQuIEkgaGF2ZSBhIGxvdCBvZiBwcmFjdGljYWwgZXhwZXJpZW5jZSBhbmQgdGhpcyB3aWxsIHRlbGwgbWUgaWYgdGhlIGNvZGUgaXMgZG9pbmcgd2hhdCBJIGV4cGVjdC4gTGV0J3Mgc2VlIGhvdyBpdCdzIGJlaW5nIGRvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTE5LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzU6MDguMzIwOTQ0MzMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTE4OlxcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gMTE5OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIDEyMDpcXHR7XFxuIDEyMTpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDEyMjpcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuIDEyMzpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcXG4gMTI0OlxcdFxcdGludCByZXQ7XFxuIDEyNTpcXHRcXHRpbnQgaTtcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0cGxhdCA9IHN0bW1hY19wbGF0X2RhdF9hbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTI4OlxcdFxcdGlmICghcGxhdClcXG4gMTI5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzMjpcXHRcXHRcXHRcXHRcXHRcXHQgICBzaXplb2YoKnBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpLFxcbiAxMzM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuIDEzNDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpXFxuIDEzNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTM2OlxcdFxcbiAxMzc6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHNpemVvZigqcGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcXG4gMTM5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCk7XFxuIDE0MDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZylcXG4gMTQxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxNDI6XFx0XFxuIDE0MzpcXHRcXHQvKiBFbmFibGUgcGNpIGRldmljZSAqL1xcbiAxNDQ6XFx0XFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbiAxNDU6XFx0XFx0aWYgKHJldCkge1xcbiAxNDY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiJXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcXFxuXFxcIixcXG4gMTQ3OlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4gMTQ4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE0OTpcXHRcXHR9XFxuIDE1MDpcXHRcXG4gMTUxOlxcdFxcdC8qIEdldCB0aGUgYmFzZSBhZGRyZXNzIG9mIGRldmljZSAqL1xcbiAxNTI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkrKykge1xcbiAxNTM6XFx0XFx0XFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkgPT0gMClcXG4gMTU0OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAxNTU6XFx0XFx0XFx0cmVzLmFkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCBpLCBTVE1NQUNfUkVTT1VSQ0VfTkFNRSk7XFxuIDE1NjpcXHRcXHRcXHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcXG4gMTU3OlxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHJlcy5hZGRyKTtcXG4gMTU4OlxcdFxcdFxcdGJyZWFrO1xcbiAxNTk6XFx0XFx0fVxcbiAxNjA6XFx0XFxuIDE2MTpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0cmV0ID0gaW5mby1cXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XFxuIDE2NDpcXHRcXHRpZiAocmV0KVxcbiAxNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0cmVzLndvbF9pcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE2ODpcXHRcXHRyZXMuaXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXRzb2VlID0gMTtcXG4gMTcxOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4cGVlID0gMTtcXG4gMTcyOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbWVzdGVlID0gMTtcXG4gMTczOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4ZWUgPSAxO1xcbiAxNzQ6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtdHhlZSA9IDE7XFxuIDE3NTpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZWVwc2kgPSAxO1xcbiAxNzY6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VlZHBwID0gMTtcXG4gMTc3OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlcHJ0eWVuID0gMTtcXG4gMTc4OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNldG1vdXRlbiA9IDE7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG4gMTgxOlxcdFxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbiAxODQ6XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHQvKipcXG4gMTg3OlxcdCAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuIDE4ODpcXHQgKlxcbiAxODk6XFx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXFxuIDE5MDpcXHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxcbiAxOTE6XFx0ICovXFxuIDE5MjpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTkzOlxcdHtcXG4gMTk0OlxcdFxcdHN0bW1hY19kdnJfcmVtb3ZlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTU6XFx0fVxcbiAxOTY6XFx0XFxuIDE5NzpcXHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xcbiAxOTg6XFx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1xcdFxcdDB4MDcwMFxcbiAxOTk6XFx0XFxuIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjA4LjMyMTAzNDkxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzIxODkyODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgUHJvYmUgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHRoZSBjb2RlJ3MgY2FsbGluZyBgc3RtbWFjX2R2cl9wcm9iZWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiwgc2VlIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmUgcm91dGluZSBmb3IgdGhpcyBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gc2VlIGhvdyBpdCdzIGluaXRpYWxpemVkLCBpZiBpdCBpcyB1c2luZyBhbnkgb2YgdGhlIGF2YWlsYWJsZSByZXNvdXJjZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZGV2aWNlIHNldHVwIHNob3VsZCBiZS4gTGV0J3Mgc2VlIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIGhhcmR3YXJlIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIGRhdGEuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHN0ZXBzIGl0IHRha2VzIHRvIGlkZW50aWZ5LCBpbml0aWFsaXplLCBhbmQgY2xhaW0gdGhlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgyMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzU6MTcuMDQyOTMwNDcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUxNjM1OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19kdnJfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yODM9c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMzMDpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzQxOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ4MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU2MjpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjY4OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjQyOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz00Nz1zdGF0aWMgaW50IG1lc29uNl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjczOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTQ2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NDY0OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTQ2NS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6Njg6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz0zNT1zdGF0aWMgaW50IHNvcGhnb19kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6NjU6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTY2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTUzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwMjpcXHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDMtXFx0ICogbmVlZCB0byBlbnN1cmUgdGhlIE1BQyByZXN1bWUgYmFjayBiZWZvcmUgb3RoZXIgb3BlcmF0aW9ucyBzdWNoXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDgtXFx0LyogVGhlIG11eCBtdXN0IGJlIHJlZ2lzdGVyZWQgYWZ0ZXIgcGFyZW50IE1ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XFx0ICogc28gYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjEwLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NjpcXHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc3LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjM3OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDEzPXZvaWQgc3RtbWFjX2R2cl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTQ6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNS1cXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3ODc9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsYXRfZGF0X2FsbG9jKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc3ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3Nzg5OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc3OTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTI6ICogc3RtbWFjX2R2cl9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5My0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTAwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEwMTppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTAyLVxcdFxcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMTI6XFx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTEzLVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcGxhdF9kYXQtXFx1MDAzZWV4aXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExODpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZHZyX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0OD1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU3OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzU6MTguNzk0NTcxODA5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNDE0MDI3MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgc3RtbWFjIERyaXZlciBhbmQgSWRlbnRpZnlpbmcgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIHF1ZXVlIHNlbGVjdGlvbi4gSXQgc2VlbXMgdGhhdCBgc3RtbWFjX2R2cl9wcm9iZWAgZXZlbnR1YWxseSBjYWxscyBgX19zdG1tYWNfZHZyX3Byb2JlYCwgd2hpY2ggcmVnaXN0ZXJzIHRoZSBuZXR3b3JrIGRldmljZS4gVGhlIGNydWNpYWwgcG9pbnQgaGVyZSBpcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCBgc3l6a2FsbGVyYCwgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCB0byBpbmplY3QgYSBQQ0kgZGV2aWNlIHdpdGggdGhlIHJpZ2h0IHZlbmRvciBhbmQgZGV2aWNlIElEcy4gVGhpcyBtZWFucyB3ZSBjYW4gZGVmaW5pdGVseSBnZXQgdGhlIGRyaXZlciB0byBiaW5kIHRvIHRoaXMgZGV2aWNlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG1hcCB0aGUgQkFScywgcmVnaXN0ZXIgdGhlIG5ldGRldiwgYW5kIHRoZW4sIGNydWNpYWxseSwgc2VuZCBwYWNrZXRzIHRocm91Z2ggaXQuIFRoYXQgZ2V0cyB1cyB0byBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIFRoaXMgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuXG5cbk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyBtb2RpZnlpbmcgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3b3VsZCB1c2UgYSBoYXJkY29kZWQgdmFsdWUgb2YgYDBgIGlmIFRTTy9VU08gd2FzIGluIHVzZSwgbm93IGl0J3Mgc2VsZWN0aW5nIGEgcXVldWUgd2l0aCBgbmV0ZGV2X3BpY2tfdHhgIGFuZCB2ZXJpZnlpbmcgaWYgdGhlIHNlbGVjdGVkIHF1ZXVlIGlzIHBlcm1pdHRlZCBmb3IgVFNPLiBJZiBub3QsIGl0IGZhbGxzIGJhY2sgdG8gcXVldWUgMC4gU28gaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBjb3JlIGxvZ2ljLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZ1enogYHN0bW1hY19zZWxlY3RfcXVldWVgLiBJdCdzIGEgaG90LXBhdGggZnVuY3Rpb247IGl0IGdldHMgY2FsbGVkIGZvciBldmVyeSB0cmFuc21pdHRlZCBwYWNrZXQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCdzIGd1aWRlbGluZTogYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIHByaW9yaXRpemUgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIE9vcHMhIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGEgcHJvYmxlbS5cblxuU28sIEkgbmVlZCB0byBmaW5kIGEgYmV0dGVyIHRhcmdldC4gTWF5YmUgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgPyBMZXQncyBjaGVjayBpZiBpdCdzIHN0YXRpYy4gVGhhdCB3b3VsZCBiZSBhIGJldHRlciB0YXJnZXQgZm9yIGZ1enppbmcgYmFzZWQgb24gdGhlIHByb21wdCdzIGd1aWRlbGluZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjI5LjIwODYwMjk4OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NjE3Mjk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYwND1zdGF0aWMgdm9pZCBzdG1tYWNfc2FmZXR5X2ZlYXRfY29uZmlndXJhdGlvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNjE5OnN0YXRpYyBib29sIHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYyMC1cXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2Mzg9c3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxMy1cXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY250OyBjaGFuKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM3MTQ6XFx0XFx0XFx0aWYgKCFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIGNoYW4pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxNS1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDk4ND1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTUwMDUtXFx0aWYgKHNrYl9pc19nc28oc2tiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NTAwNjpcXHRcXHRpZiAoIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA3LVxcdFxcdCAgICAhc3RtbWFjX3Rzb192YWxpZF9wYWNrZXQoc2tiKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjQ0NT1zdGF0aWMgdTE2IHN0bW1hY19zZWxlY3RfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1MS1cXHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3R5cGUgXFx1MDAyNiBwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0NTI6XFx0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1My1cXHRcXHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNTozMC44ODQ3ODQ4MjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIxMjc4OTMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgc3RtbWFjIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBhbmFseXppbmcgdGhpcyBwYXRjaC4gRmlyc3QgdGhvdWdodDogYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYnV0IHByb2JhYmx5IG5vdCByZWxldmFudCBoZXJlLiBUaGVuIEkgc2VlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyAqYWxzbyogc3RhdGljLiBIbW0sIGlzICphbnl0aGluZyogbm9uLXN0YXRpYz8gVGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAsIHdoaWNoIGlzIGEgYml0IG9mIGEgY29uY2Vybi4gSXQncyBhIGhvdC1wYXRoIGZ1bmN0aW9uIGJlY2F1c2UgaXQncyB1c2VkIGJ5IGBuZG9fc2VsZWN0X3F1ZXVlYC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgaW4gYEZvY3VzU3ltYm9sc2AgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJZiBJIGRvbid0IGxpc3QgYW55dGhpbmcsIFN5emthbGxlciB3aWxsIGp1c3QgdXNlIHRoZSBjb3ZlcmFnZSBmcm9tIHRoZSBwYXRjaC5cblxuV2FpdCBhIHNlY29uZOKApiB0aGUgcHJvbXB0ICphbHNvKiB3YW50cyBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkLCBhbmQgcHJlZmVycyBub24tc3RhdGljIGVudHJ5cG9pbnRzLiBJcyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgYSAqZ2VuZXJpYyogaG90LXBhdGg/IE5vLCBpdCdzIHNwZWNpZmljIHRvIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCdzIG5vdCBsaWtlIGBkZXZfcXVldWVfeG1pdGAgd2hpY2ggaXMgKnZlcnkqIGdlbmVyaWMuIEV2ZW4gdGhvdWdoIGl0J3MgaG90LXBhdGggZm9yICp0aGlzKiBkcml2ZXIsIGl0J3Mgbm90IGEga2VybmVsLXdpZGUgYm90dGxlbmVjay5cblxuTGV0IG1lIHRoaW5r4oCmIGlzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbiBpbXBhY3RlZD8gTm8sIGp1c3QgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBPa2F5LCBvbmUgbW9yZSBjaGVjazogaXMgaXQgaW5saW5lZD8gU2luY2UgaXQncyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBuZG9fc2VsZWN0X3F1ZXVlYCwgaXQncyAqbm90KiBpbmxpbmVkLiBQZXJmZWN0LiBJJ2xsIGxpc3QgYHN0bW1hY19zZWxlY3RfcXVldWVgIGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgdGhlIHJpZ2h0IGNob2ljZS5cblxuTm93LCBmb3IgQ09ORklHcy4gV2hhdCBkbyBJIG5lZWQgdG8gYWN0dWFsbHkgKnRlc3QqIHRoaXMgdmlhIFBDST8gSSB0aGluayBpdCdzIGBDT05GSUdfU1RNTUFDX0VUSGAgYW5kIGBDT05GSUdfU1RNTUFDX1BDSWAsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBqdXN0IHRvIGJlIGNlcnRhaW4gb2YgdGhlIGV4YWN0IG5hbWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAyOCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNTozOS4wOTc1NzczOTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjQ0NDM1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xOD1pZiBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5OmNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3MT1lbmRpZiAjIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjQxLjAyMjAyODAwNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM5MDcxNTAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBTVE1NQUMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcC4gQWgsIGEgZGVwZW5kZW5jeSEgYFNUTU1BQ19QQ0lgIHJlbGllcyBvbiBib3RoIGBQQ0lgIGFuZCBgU1RNTUFDX0VUSGAuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbHJlYWR5IGtub3cgd2hhdCBpbXBsaWNhdGlvbnMgYSBkZXBlbmRlbmN5IGxpa2UgdGhpcyBoYXMuIEl0J3MgdGltZSB0byBkaXZlIGRlZXBlciBhbmQgY2xhcmlmeSB0aGUgbmF0dXJlIG9mIHRoZXNlIHJlbGF0aW9uc2hpcHMsIHNvIGxldCBtZSBpbW1lZGlhdGVseSBjaGVjayB0aGUgc3BlY2lmaWNzIHN1cnJvdW5kaW5nIGBTVE1NQUNfUENJYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGhhcmQgZGVwZW5kZW5jeSwgYSBzb2Z0IG9uZSwgYW5kIHdoYXQgY29uc2VxdWVuY2VzIHRoZSBvdGhlciBjb25maWd1cmF0aW9ucyB3aWxsIGJyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQ0NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM2OjA4LjQxMjc0NTc0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTkxMjQzMDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM2OjEwLjAwMzk5NDA3MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ0NTEwNjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSdtIHRoaW5raW5nLCBsaW5lIDQwNyBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgZ2l2ZW4gdGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZXNlIGZpbGVzLiBUaGF0IHNlY3Rpb24gaXMgbGlrZWx5IGdvaW5nIHRvIGhvbGQgc29tZSBpbXBvcnRhbnQgY2x1ZXMgYWJvdXQgd2hhdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSdyZSBlbmFibGVkLCBhbmQgcG90ZW50aWFsbHkgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZC10aW1lIGNvbnNpZGVyYXRpb25zIGZvciB0aGlzIHBhcnRpY3VsYXIgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0J3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3MgYW5kIHNlZSB3aGF0J3Mgb24gb2ZmZXIgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3ODA2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6MTMuNTQ4NTA4NTc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM5NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM5NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcXG4gMzk2OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXFxuIDM5NzpcXHRcXG4gMzk4OlxcdGNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4gMzk5OlxcdFxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcXFwiXFxuIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoxMy41NDg2MTExNTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0NTY5NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU1RNTUFDIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFNUTU1BQyBjb25maWd1cmF0aW9ucyDigJMgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoZSBkZXBlbmRlbmNpZXMuXCIgU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBTVE1NQUNfRVRIYCByZWxpZXMgb24uIEFoLCBoZXJlIHdlIGFyZTogYFNUTU1BQ19FVEhgIGhhcyBhIGRlcGVuZGVuY3kgb24gYm90aCBgSEFTX0lPTUVNYCBhbmQgYEhBU19ETUFgLiBHb3QgaXQuIE5vdywgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aG9zZS4gV2hhdCBpcyBhY3R1YWxseSAqcmVxdWlyaW5nKiB0aG9zZSBvcHRpb25zPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGBTVE1NQUNfRVRIYCwgYW5kIHRob3NlIGRlcGVuZGVuY2llcyBhcmUgdGhlIGNyaXRpY2FsIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4Mzc3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoxNy42OTQzMTAzMTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM2OjE3LjY5NDM4ODIyMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTgyNzM5MTM2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLCBhbmQgSSB0aGluayBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBpdC4gVGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBmdW5jdGlvbi4gSXQncyBjbGVhciB0aGF0IHRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCBlaXRoZXIgdGhyb3VnaCBQQ0kgKGBTVE1NQUNfUENJYCkgb3IgcGxhdGZvcm0gZGV2aWNlcy4gQW5kIFN5emthbGxlciBjYW4gdGVzdCBpdCB1c2luZyBgc3l6X3BjaV9kZXZpY2VgIG9yIGBzeXpfcGxhdGZvcm1fZGV2aWNlYCwgd2hpY2ggaXMgZ29vZC5cblxuVGhlIGZ1bmN0aW9uYWwgaW1wYWN0IHNlZW1zIHRvIGJlIGEgY2hhbmdlIGluIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcXVldWUgc2VsZWN0aW9uIHNwZWNpZmljYWxseSBmb3IgR1NPIGZyYW1lcy4gVGhhdCBtYWtlcyBpdCB3b3J0aCBmdXp6aW5nLCBkZWZpbml0ZWx5LlxuXG5UaGUgcXVlc3Rpb24gdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcyB3aGV0aGVyIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgaXQncyBjYWxsZWQgZm9yIGV2ZXJ5IHRyYW5zbWl0dGVkIHBhY2tldCwgaXQgKmlzKiBhIGhvdC1wYXRoLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YXJucyBhZ2FpbnN0IGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gYXZvaWQgYmlhc2luZyB0aGUgdGVzdGluZy4gSG93ZXZlciwgYWZ0ZXIgdGhpbmtpbmcgaXQgdGhyb3VnaCwgSSd2ZSBkZWNpZGVkIHRvIGxpc3QgaXQuIEl0J3Mgbm90IGEgZ2VuZXJpYyBrZXJuZWwgZnVuY3Rpb24gbGlrZSBgZGV2X3F1ZXVlX3htaXRgIG9yIGBrbWFsbG9jYC4gSXQncyAqc3BlY2lmaWMqIHRvIHRoZSBTVE1NQUMgZHJpdmVyLCBhbmQgaXQncyB0aGUgb25seSBmdW5jdGlvbiB0aGF0J3MgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBFdmVuIGlmIFN5emthbGxlciB3aWxsIHBpY2sgaXQgdXAgdGhyb3VnaCBjb3ZlcmFnZSB3aXRob3V0IGxpc3RpbmcgaXQsIGV4cGxpY2l0bHkgY2FsbGluZyBpdCBvdXQgZm9jdXNlcyB0aGUgZnV6emluZy5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIHllcywgYHN0bW1hY19zZWxlY3RfcXVldWVgIGlzIHRoZSAqb25seSogZnVuY3Rpb24gY2hhbmdlZC5cblxuU28sIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgZm9sbG93aW5nOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUqKlxuKiAgICoqRm9jdXNTeW1ib2xzOiBcXFtcInN0bW1hY1xcX3NlbGVjdFxcX3F1ZXVlXCJcXF0qKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbXCJTVE1NQUNcXF9FVEhcIiwgXCJTVE1NQUNcXF9QQ0lcIlxcXSoqXG4qICAgKipSZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiKipcblxuVGhhdCBzaG91bGQgY292ZXIgZXZlcnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4NzksIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoyOS41MjE3ODI2MzFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzM3MzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZWxlY3RfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGZvciBHU08gZnJhbWVzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIFBDSSBhbmQgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3NlbGVjdF9xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoyOS41OTkxNjQ4NDlaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzY2MzIzNzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6MjkuNTk5NzUzMjI5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1NzY1NzMwODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNlbGVjdGluZyBhIHRyYW5zbWlzc2lvbiBxdWV1ZSBmb3IgbmV0d29yayBwYWNrZXRzIChza19idWZmKSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgY2hlY2tzIHRoZSBgZ3NvX3R5cGVgIG9mIHRoZSBwYWNrZXQgYWdhaW5zdCBgcHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXIncyBwcml2YXRlIGRhdGEgc3RydWN0dXJlLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBxdWV1ZSBzZWxlY3Rpb24gb3Igb3V0LW9mLWJvdW5kcyBxdWV1ZSBpbmRpY2VzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAxOWY1M2VjNDRmNjgyMjJiMTIwMjE2ODRjYTA2YTAwOGMxNGRkMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE1OjM0OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGIyYjdkMDI0MmRkM2MuLjk5ZmM3MzEzZjI0N2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNjQ0NSwxOSArNjQ0NSwxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4gc3RhdGljIHUxNiBzdG1tYWNfc2VsZWN0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpXG4ge1xuLVx0aW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fdHlwZTtcbitcdHUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi1cdTAwM2VyZWFsX251bV90eF9xdWV1ZXM7XG4rXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFxuLVx0aWYgKGdzbyBcdTAwMjYgKFNLQl9HU09fVENQVjQgfCBTS0JfR1NPX1RDUFY2IHwgU0tCX0dTT19VRFBfTDQpKSB7XG4tXHRcdC8qXG4tXHRcdCAqIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBUU08vVVNPXG4tXHRcdCAqIGNhcGFibGUgUXVldWVzLiBMZXQncyB1c2UgYWx3YXlzIHRoZSBRdWV1ZSAwXG4tXHRcdCAqIGJlY2F1c2UgaWYgVFNPL1VTTyBpcyBzdXBwb3J0ZWQgdGhlbiBhdCBsZWFzdCB0aGlzXG4tXHRcdCAqIG9uZSB3aWxsIGJlIGNhcGFibGUuXG4rXHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fdHlwZSBcdTAwMjYgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpKSB7XG4rXHRcdC8qIEdTTyBmcmFtZXMgbmVlZCBIVyBUU08vVVNPLCB3aGljaCBjYW5ub3QgcnVuIG9uIFRCUyBxdWV1ZXMuXG4rXHRcdCAqIEZhbGwgYmFjayB0byB0aGUgcXVldWUgcmVzZXJ2ZWQgZm9yIFRTTyAocXVldWUgMCkuXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdHJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuK1x0cmV0dXJuIHF1ZXVlO1xuIH1cbiBcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoyOS41OTk3NTY0OTlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg5NjI4MzIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHN0bW1hYyBRdWV1ZSBTZWxlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFib3V0IGRldGVybWluaW5nIHdoaWNoIHRyYW5zbWl0IHF1ZXVlIGEgZ2l2ZW4gYHNrX2J1ZmZgIChzb2NrZXQgYnVmZmVyKSBzaG91bGQgYmUgYXNzaWduZWQgdG8uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UgaW4gbG9naWMgYW5kIGl0cyBwb3RlbnRpYWwgaW1wbGljYXRpb25zLCBwYXJ0aWN1bGFybHkgaW4gdGVybXMgb2YgbWVtb3J5IHNhZmV0eSBhbmQgcGVyZm9ybWFuY2UuXG5cblRoZSBvcmlnaW5hbCBjb2RlJ3MgYXBwcm9hY2ggd2FzIHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlIGBza19idWZmYCBpbmRpY2F0ZWQgaXQgd2FzIGEgR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCAoR1NPKSBwYWNrZXQgKHNwZWNpZmljYWxseSBUQ1B2NCwgVENQdjYsIG9yIFVEUCBMNCksIGl0IHdvdWxkICphbHdheXMqIGRlZmF1bHQgdG8gcXVldWUgMC4gT3RoZXJ3aXNlLCBpdCB3b3VsZCB1c2UgYG5ldGRldl9waWNrX3R4YCB0byBzZWxlY3QgYSBxdWV1ZSwgbW9kdWxvIHRoZSBudW1iZXIgb2YgcmVhbCB0cmFuc21pdCBxdWV1ZXMuIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgYXNzaWduaW5nIGEgcXVldWUgaW4gYSByb3VuZCByb2JpbiBmYXNoaW9uLCB3aGlsZSBwcmlvcml0aXppbmcgVFNPIHRyYWZmaWMgdG8gYSBzaW5nbGUgcXVldWUuXG5cblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbW9yZSBudWFuY2VkIGFwcHJvYWNoLiBOb3csIHRoZSBsb2dpYyBjaGVja3MgaWYgYSBmZXcgY29uZGl0aW9ucyBob2xkOlxuMS4gIFRoZSBgc2tfYnVmZmAgaXMgYSBHU08gcGFja2V0ICh3aGljaCBpcyB1bmNoYW5nZWQpLlxuMi4gIFRoZSBgZ3NvX3R5cGVgIHdpdGhpbiB0aGUgYHNrX2J1ZmZgIG1hdGNoZXMgdGhlIGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBhbmRcbjMuICBUaGUgcHJvcG9zZWQgcXVldWUgaXMgTk9UIHBlcm1pdHRlZCBmb3IgVFNPLlxuXG5JZiB0aG9zZSB0aHJlZSBjb25kaXRpb25zIGhvbGQsIHRoZSBmdW5jdGlvbiBmYWxscyBiYWNrIHRvIHF1ZXVlIDAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUgaXMgc29tZSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gVFNPIChUQ1AgU2VnbWVudGF0aW9uIE9mZmxvYWQpIG9yIFVTTyAoVURQIFNlZ21lbnRhdGlvbiBPZmZsb2FkKSBjYXBhYmlsaXRpZXMuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgcGFja2V0IGlzIGEgR1NPIHBhY2tldCBvZiBhIHR5cGUgaGFuZGxlZCBieSBoYXJkd2FyZSBUU08vVVNPLCBhbmQgdGhlIGNob3NlbiBxdWV1ZSBkb2VzIG5vdCBzdXBwb3J0IGhhcmR3YXJlIFRTTy9VU08sIHRoZW4gcXVldWUgMCBpcyBjaG9zZW4uXG5cbk15IG1haW4gY29uY2VybiBpcyBhbHdheXMgbWVtb3J5IHNhZmV0eS4gSG93ZXZlciwgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXMgcXVpdGUgbG9jYWxpemVkLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBhbGxvY2F0ZWQsIGFuZCBubyBrZXJuZWwgZGF0YSBpcyBiZWluZyBsZWFrZWQgdG8gdXNlciBzcGFjZS4gSXQgb25seSByZWFkcyB0aGUgdmFsdWVzIGluIGBza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGVgIGFuZCBgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AuIFRoZSBgc2tiX3NoaW5mbyhza2IpLVx1MDAzZWdzb190eXBlYCBpcyBwb3B1bGF0ZWQgYnkgdGhlIG5ldHdvcmtpbmcgc3RhY2sgc28gaXQncyBndWFyYW50ZWVkIHRvIGJlIGluaXRpYWxpemVkLiBgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AgaXMgZHJpdmVyLWluaXRpYWxpemVkLiBUaGUgdmFsdWVzIHdpbGwgYWxyZWFkeSBleGlzdCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIFNvLCBmcm9tIGEgcXVpY2sgaW5zcGVjdGlvbiwgdGhlcmUgYXJlIG5vIGltbWVkaWF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIHBhdGNoIHNpbXBseSBtb2RpZmllcyAqaG93KiBhIHF1ZXVlIGlzIHNlbGVjdGVkLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgY2FuIGJlIHNldCB0byBmYWxzZS5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBpdCdzIHdvcnRoIGEgcXVpY2sgbG9vayBhdCBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZGAgdG8gY29uZmlybSB0aGF0IGl0IGRvZXMgbm90IGhhdmUgYW55IHBvdGVudGlhbCBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjozOS40OTYwNDMzNTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDU5MjM0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2MDQ9c3RhdGljIHZvaWQgc3RtbWFjX3NhZmV0eV9mZWF0X2NvbmZpZ3VyYXRpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zNjE4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzYxOTpzdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MjAtXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zNjM4PXN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTMtXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHR4X2NudDsgY2hhbisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNzE0OlxcdFxcdFxcdGlmICghc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBjaGFuKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTUtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQ5ODQ9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA1LVxcdGlmIChza2JfaXNfZ3NvKHNrYikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjUwMDY6XFx0XFx0aWYgKCFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNTAwNy1cXHRcXHQgICAgIXN0bW1hY190c29fdmFsaWRfcGFja2V0KHNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY0NDU9c3RhdGljIHUxNiBzdG1tYWNfc2VsZWN0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0NTEtXFx0aWYgKChza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWdzb190eXBlIFxcdTAwMjYgcHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDUyOlxcdCAgICAhc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBxdWV1ZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0NTMtXFx0XFx0LyogR1NPIGZyYW1lcyBuZWVkIEhXIFRTTy9VU08sIHdoaWNoIGNhbm5vdCBydW4gb24gVEJTIHF1ZXVlcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6MzkuOTE2NjQ3NjM0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDg4MTI5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkYCBmdW5jdGlvbi4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWxtb3N0IGNlcnRhaW5seSBqdXN0IGEgYm9vbGVhbiBjaGVjay4gSSdtIGd1ZXNzaW5nIGl0J3MgcHJvYmluZyBzb21lIGNvbmZpZ3VyYXRpb24gZmxhZyByZWxhdGVkIHRvIHdoZXRoZXIgdGhlIGNoYW5uZWwgaXMgc2V0IHVwIGZvciBUaW1lIEJhc2VkIFNjaGVkdWxpbmcsIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuIE5vIHJlZCBmbGFncyBoZXJlIOKAkyBJJ20gbm90IHNlZWluZyBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB0b3VjaGVkLCB3aGljaCBpcyBhbHdheXMgYSByZWxpZWYuIEdpdmVuIHRoYXQsIEknbSBjb25maWRlbnQgd2UgY2FuIHNhZmVseSBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzIG9uZS4gSXQgbG9va3MgbGlrZSB3ZSdyZSBpbiB0aGUgY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODIsIk91dHB1dFRva2VucyI6MTk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6NDUuMzY1NDYzMTcxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNlbGVjdGluZyBhIHRyYW5zbWlzc2lvbiBxdWV1ZSBmb3IgbmV0d29yayBwYWNrZXRzIChza19idWZmKSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgY2hlY2tzIHRoZSBgZ3NvX3R5cGVgIG9mIHRoZSBwYWNrZXQgYWdhaW5zdCBgcHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXIncyBwcml2YXRlIGRhdGEgc3RydWN0dXJlLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBxdWV1ZSBzZWxlY3Rpb24gb3Igb3V0LW9mLWJvdW5kcyBxdWV1ZSBpbmRpY2VzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2VsZWN0aW5nIGEgdHJhbnNtaXNzaW9uIHF1ZXVlIGZvciBuZXR3b3JrIHBhY2tldHMgKHNrX2J1ZmYpIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBjaGVja3MgdGhlIGBnc29fdHlwZWAgb2YgdGhlIHBhY2tldCBhZ2FpbnN0IGBwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AgYW5kIHZlcmlmaWVzIGlmIHRoZSBzZWxlY3RlZCBxdWV1ZSBwZXJtaXRzIFRTTyB2aWEgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBxdWV1ZSBzZWxlY3Rpb24gYmFzZWQgb24gYWxyZWFkeSBpbml0aWFsaXplZCBmaWVsZHMgaW4gdGhlIGBza19idWZmYCBhbmQgdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IHF1ZXVlIHNlbGVjdGlvbiBvciBvdXQtb2YtYm91bmRzIHF1ZXVlIGluZGljZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflows64df[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-07 15:32:27 +0000 UTC FinishedAt: 2026-08-07 15:36:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "4fa4977a0d900f936bcae5cd2c510be5554e8dd6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "4e91eda2-5c05-4660-be1c-8884165497c1" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_select_queue" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZWxlY3RfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNlbGVjdGluZyBhIHRyYW5zbWlzc2lvbiBxdWV1ZSBmb3IgbmV0d29yayBwYWNrZXRzIChza19idWZmKSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgY2hlY2tzIHRoZSBgZ3NvX3R5cGVgIG9mIHRoZSBwYWNrZXQgYWdhaW5zdCBgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AgYW5kIHZlcmlmaWVzIGlmIHRoZSBzZWxlY3RlZCBxdWV1ZSBwZXJtaXRzIFRTTyB2aWEgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBxdWV1ZSBzZWxlY3Rpb24gYmFzZWQgb24gYWxyZWFkeSBpbml0aWFsaXplZCBmaWVsZHMgaW4gdGhlIGBza19idWZmYCBhbmQgdGhlIGRyaXZlciYjMzk7cyBwcml2YXRlIGRhdGEgc3RydWN0dXJlLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBxdWV1ZSBzZWxlY3Rpb24gb3Igb3V0LW9mLWJvdW5kcyBxdWV1ZSBpbmRpY2VzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGZvciBHU08gZnJhbWVzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIFBDSSBhbmQgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxOWY1M2VjNDRmNjgyMjJiMTIwMjE2ODRjYTA2YTAwOGMxNGRkMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE1OjM0OjE5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTY0NDUsMTkgJiM0Mzs2NDQ1LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbiBzdGF0aWMgdTE2IHN0bW1hY19zZWxlY3RfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcbiB7XG4tXHRpbnQgZ3NvID0gc2tiX3NoaW5mbyhza2IpLVx1MDAzZWdzb190eXBlO1xuJiM0MztcdHUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi1cdTAwM2VyZWFsX251bV90eF9xdWV1ZXM7XG4mIzQzO1x0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdGlmIChnc28gXHUwMDI2IChTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNiB8IFNLQl9HU09fVURQX0w0KSkge1xuLVx0XHQvKlxuLVx0XHQgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgVFNPL1VTT1xuLVx0XHQgKiBjYXBhYmxlIFF1ZXVlcy4gTGV0JiMzOTtzIHVzZSBhbHdheXMgdGhlIFF1ZXVlIDBcbi1cdFx0ICogYmVjYXVzZSBpZiBUU08vVVNPIGlzIHN1cHBvcnRlZCB0aGVuIGF0IGxlYXN0IHRoaXNcbi1cdFx0ICogb25lIHdpbGwgYmUgY2FwYWJsZS5cbiYjNDM7XHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fdHlwZSBcdTAwMjYgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xuJiM0MztcdFx0LyogR1NPIGZyYW1lcyBuZWVkIEhXIFRTTy9VU08sIHdoaWNoIGNhbm5vdCBydW4gb24gVEJTIHF1ZXVlcy5cbiYjNDM7XHRcdCAqIEZhbGwgYmFjayB0byB0aGUgcXVldWUgcmVzZXJ2ZWQgZm9yIFRTTyAocXVldWUgMCkuXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdHJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuJiM0MztcdHJldHVybiBxdWV1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICphZGRyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfc2VsZWN0X3F1ZXVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE5ZjUzZWM0NGY2ODIyMmIxMjAyMTY4NGNhMDZhMDA4YzE0ZGQxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMTU6MzQ6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTY0NDUsMTkgJiM0Mzs2NDQ1LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwKIHN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpCiB7Ci0JaW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7Z3NvX3R5cGU7CiYjNDM7CXUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi0mZ3Q7cmVhbF9udW1fdHhfcXVldWVzOwomIzQzOwlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JaWYgKGdzbyAmYW1wOyAoU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjYgfCBTS0JfR1NPX1VEUF9MNCkpIHsKLQkJLyoKLQkJICogVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIFRTTy9VU08KLQkJICogY2FwYWJsZSBRdWV1ZXMuIExldCYjMzk7cyB1c2UgYWx3YXlzIHRoZSBRdWV1ZSAwCi0JCSAqIGJlY2F1c2UgaWYgVFNPL1VTTyBpcyBzdXBwb3J0ZWQgdGhlbiBhdCBsZWFzdCB0aGlzCi0JCSAqIG9uZSB3aWxsIGJlIGNhcGFibGUuCiYjNDM7CWlmICgoc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZSAmYW1wOyBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcykgJmFtcDsmYW1wOwomIzQzOwkgICAgIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpKSB7CiYjNDM7CQkvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLgomIzQzOwkJICogRmFsbCBiYWNrIHRvIHRoZSBxdWV1ZSByZXNlcnZlZCBmb3IgVFNPIChxdWV1ZSAwKS4KIAkJICovCiAJCXJldHVybiAwOwogCX0KIAotCXJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtJmd0O3JlYWxfbnVtX3R4X3F1ZXVlczsKJiM0MzsJcmV0dXJuIHF1ZXVlOwogfQogCiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTYKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA0MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgYSBgc3RtbWFjYCBRdWV1ZSBTZWxlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBmbG9hdGluZyBhcm91bmQgdGhhdCYjMzk7cyB0d2Vha2luZyBob3cgYHN0bW1hY19zZWxlY3RfcXVldWVgIHdvcmtzLCBzcGVjaWZpY2FsbHkgZm9yIEdTTyBmcmFtZXMgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNgLiBUaGUgY29yZSBjaGFuZ2Ugc2VlbXMgdG8gYmUgYXJvdW5kIHF1ZXVlIHNlbGVjdGlvbjsgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBvZiByZXR1cm5pbmcgcXVldWUgMCBmb3IgR1NPIGZyYW1lcywgaXQmIzM5O3MgYXR0ZW1wdGluZyB0byBzZWxlY3QgYSBxdWV1ZS4gQW5kIG9ubHkgaWYgdGhlIGNob3NlbiBxdWV1ZSBpc24mIzM5O3Qgc3VpdGFibGUgZm9yIFRTTyBkb2VzIGl0IGZhbGxiYWNrIHRvIHF1ZXVlIDAuCgpOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gIEEgY3JpdGljYWwgcXVlc3Rpb24gaGVyZSBpcywgY2FuIEkgcmVhZGlseSB0ZXN0IHRoaXMgY2hhbmdlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/ICBgc3RtbWFjYCwgYXMgSSByZWNhbGwsIGlzIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyIGZvciAxMC8xMDAvMTAwMC9FUU9TLiBJcyBpdCBlbXVsYXRlZCBieSBRRU1VPyBJIGRvbiYjMzk7dCB0aGluayBRRU1VICpuYXRpdmVseSogZW11bGF0ZXMgYHN0bW1hY2AuIEkgaGF2ZSB0byBkaWcgYSBiaXQuIFBlcmhhcHMgaXQmIzM5O3MgcHJlc2VudCBpbiBhbiBlbXVsYXRlZCBBUk0gYm9hcmQgd2l0aGluIFFFTVUuIE9yIHBlcmhhcHMgaXQmIzM5O3Mgbm90IGV2ZW4gdGVzdGFibGUgdGhlcmUuCgpIbW0sIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBRRU1VJiMzOTtzIG5ldHdvcmsgZGV2aWNlIGxpc3Q6IGBody9uZXQvaW14X2ZlYy5jYCwgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgYGh3L25ldC9hbGx3aW5uZXItc3VuOGktZW1hYy5jYCwgYGh3L25ldC9mdGdtYWMxMDAuY2AsIGBody9uZXQvbnBjbTd4eF9lbWMuY2AsIGBody9uZXQvc21jOTFjMTExLmNgLCBgaHcvbmV0L2xhbjkxMTguY2AsIGBody9uZXQveGdtYWMuY2AgKEhpZ2hiYW5rL01pZHdheSkuIFdhaXQsIGNvdWxkIGB4Z21hY2AgYmUgYHN0bW1hY2AgaW4gZGlzZ3Vpc2U/ICBObywgbm8sIHRoYXQmIzM5O3Mgbm90IHJpZ2h0LiBgeGdtYWNgIHNlZW1zIHRvIGJlIGVpdGhlciBDYWx4ZWRhIG9yIFNUTWljcm9lbGVjdHJvbmljcyYjMzk7cyBEV01BQy4KClJpZ2h0LCBzbyB0byBjb250aW51ZSB0aGlzIGFzc2Vzc21lbnQsIGxldCYjMzk7cyBjaGVjayBpdHMgZGV2aWNlIGJpbmRpbmc6IGlzIGBzdG1tYWNgIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZT8gQWhhISBJdCBoYXMgUENJIGJpbmRpbmdzISBUaGF0JiMzOTtzIGdvb2QgbmV3czsgaXQgaW1wcm92ZXMgdGhlIGNoYW5jZXMgb2YgdGVzdGluZy4gSSYjMzk7bGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19wY2kmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD0xMDc9c3ludGF4IChlLmcuIGZvciBQQ0kgbW9kdWxlKTo6XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMucnN0LTEwOC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3Q6MTA5OiAgICBtb2Rwcm9iZSBzdG1tYWNfcGNpIFtcdTAwM2NvcHRpb25cdTAwM2U9XHUwMDNjVkFMMVx1MDAzZSxcdTAwM2NWQUwyXHUwMDNlLC4uLl1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTEwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUzPW9iai0kKENPTkZJR19EV01BQ19NT1RPUkNPTU0pXHQmIzQzOz0gZHdtYWMtbW90b3Jjb21tLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MjU9c3RydWN0IGludGVsX3ByaXZfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0zOS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDA6c3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXHR1bnNpZ25lZCBpbnQgZnVuYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0NTpzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjQ2Olx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00Ny1cdHNpemVfdCBuZnVuY3M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NTA6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVx0aW50ICgqc2V0dXApKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjkzOnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2xpc3QpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgKmZ1bmNfZGF0YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTc6XHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4LVx0Y29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9pZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTc4Nj1zdGF0aWMgaW50IGVobF9zZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MDY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3NnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA3LVx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04MTA9c3RhdGljIGludCBlaGxfcmdtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODIxOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9yZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMi1cdC5zZXR1cCA9IGVobF9yZ21paV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQxPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NDg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDktXHQuc2V0dXAgPSBlaGxfcHNlMF9yZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz04NTI9c3RhdGljIGludCBlaGxfcHNlMF9zZ21paTFnX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjg3MDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBlaGxfcHNlMF9zZ21paTFnX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg3MS1cdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTg5MD1zdGF0aWMgaW50IGVobF9wc2UxX3JnbWlpMWdfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTg5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODk3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9wc2UxX3JnbWlpMWdfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk4LVx0LnNldHVwID0gZWhsX3BzZTFfcmdtaWkxZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTAxPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTE4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MTk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MjAtXHQuc2V0dXAgPSBlaGxfcHNlMV9zZ21paTFnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NDQ9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NTM6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NTQtXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTU3PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTFfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY3LVx0LnNldHVwID0gdGdsX3NnbWlpX3BoeTFfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk3MD1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5ODA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTgxLVx0LnNldHVwID0gYWRsc19zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05ODQ9c3RhdGljIGludCBhZGxzX3NnbWlpX3BoeTFfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTk0OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbHNfc2dtaWkxZ19waHkxX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5NS1cdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTAyMz1zdGF0aWMgaW50IGFkbG5fc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0MjpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxuX3NnbWlpMWdfcGh5MF9pbmZvID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQzLVx0LnNldHVwID0gYWRsbl9zZ21paV9waHkwX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDctXHR7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBnYWxpbGVvX3N0bW1hY19kbWlfZGF0YSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1NC1cdC5mdW5jID0gZ2FsaWxlb19zdG1tYWNfZnVuY19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA1ODpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU5LVx0e1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA2OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA2OTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEgaW90MjA0MF9zdG1tYWNfZG1pX2RhdGEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNzAtXHQuZnVuYyA9IGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTExMDk9c3RhdGljIGludCBxdWFya19kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTE5LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExMjA6XHRyZXQgPSBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIocGRldiwgcXVhcmtfcGNpX2RtaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExMjEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMTQ1OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHF1YXJrX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTExNDYtXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMjYzPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMjY2Olx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEyNjctXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NzY9c3RydWN0IGxvb25nc29uX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtODEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjgyOnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE0My1cdC5zZXR1cCA9IGxvb25nc29uX2dtYWNfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTE2NT1zdGF0aWMgaW50IGxvb25nc29uX2duZXRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTc3OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2duZXRfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3OC1cdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDEtXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAzLVx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTM3LVx0cGxhdC1cdTAwM2VmaXhfc29jX3Jlc2V0ID0gbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzg6XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTM5Olx0cGxhdC1cdTAwM2VyZXN1bWUgPSBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NDAtXHRsZC1cdTAwM2VkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTQzOlx0aW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXHUwMDNlZHJpdmVyX2RhdGE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0NC1cdHJldCA9IGluZm8tXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM9MTg4PXN0YXRpYyBpbnQgbW90b3Jjb21tX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjE5MzpcdHJldCA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoZGV2LCBic3BfcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTQtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMjQ4LVx0cGxhdC1cdTAwM2Vjb3JlX3R5cGVcdFx0PSBEV01BQ19DT1JFX0dNQUM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmM6MjQ5Olx0cGxhdC1cdTAwM2VzdXNwZW5kXHRcdD0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTAtXHRwbGF0LVx1MDAzZXJlc3VtZVx0XHQ9IG1vdG9yY29tbV9yZXN1bWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjEyOmludCBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjUtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjI2OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoyODppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI5LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtNDMtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jOjQ0OkVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wY2lfcGxhdF9yZXN1bWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQ1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaC04LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjk6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjEwOmludCBzdG1tYWNfcGNpX3BsYXRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTExLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxOTpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMC1cdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MzM9c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtNTEtXHQuc2V0dXAgPSBzdG1tYWNfZGVmYXVsdF9kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz01ND1zdGF0aWMgaW50IHNucHNfZ21hYzVfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTAyOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTAzLVx0LnNldHVwID0gc25wc19nbWFjNV9kZWZhdWx0X2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwNi0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEwOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTE4OnN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTktXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEyMTpcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTEyMi1cdHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTc5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MDpcdHBsYXQtXHUwMDNlc3VzcGVuZCA9IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MTpcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Ni0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxODc6ICogc3RtbWFjX3BjaV9yZW1vdmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODgtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkxLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5MjpzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTMte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNDpcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjA1Olx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjA2LVx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTA9TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHN0bW1hY19pZF90YWJsZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxMjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjEzLVx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1Olx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTY6XHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE3LVx0LmRyaXZlciAgICAgICAgID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjIyOm1vZHVsZV9wY2lfZHJpdmVyKHN0bW1hY19wY2lfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2ODMKCQkJCQkJCW91dHB1dDogMTcKCQkJCQkJCXRob3VnaHRzOiA0OTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBgc3RtbWFjYCBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiB0aGlzIGBzdG1tYWNgIGRyaXZlciBpcyBhY3R1YWxseSB0ZXN0YWJsZSBpbiBhIFFFTVUgZW52aXJvbm1lbnQsIGdpdmVuIHRoZSBjb25zdHJhaW50cy4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHNpbmNlIHRoZSBkcml2ZXIgaGFzIFBDSSBiaW5kaW5ncyAoYHN0bW1hY19wY2kuY2ApLCBpdCAqc2hvdWxkKiBiZSBwcm9iZWFibGUgaWYgYSBjb3JyZXNwb25kaW5nIFBDSSBkZXZpY2UgaXMgZW11bGF0ZWQsIG9yIGlmIEkgdXNlIGEgdmlydHVhbCBQQ0kgZGV2aWNlLiBCdXQgdGhlbiBJIHBhdXNlZCAtIGRvZXMgUUVNVSBldmVuICplbXVsYXRlKiBTVE1NQUMgb3ZlciBQQ0k/IEkgbmVlZCB0byBjaGVjay4KClRoZW4gSSByZWNhbGxlZCB0aGF0IHN5emthbGxlciBvZnRlbiB0ZXN0cyBuZXR3b3JrIGRyaXZlcnMuIFBlcmhhcHMgc3l6a2FsbGVyIHV0aWxpemVzIGB2bmV0YCBvciBgZHVtbXlgIGludGVyZmFjZXMsIG9yIG1heWJlIGV2ZW4gaGFzIHNvbWUgY292ZXJhZ2Ugd2l0aG91dCBhIGRpcmVjdCBQQ0kgZGV2aWNlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGNhbiB0ZXN0IGl0IGlmIGl0JiMzOTtzIGEgcGxhdGZvcm0gZGV2aWNlIG9uIEFSTSwgb3IgaWYgdGhlcmUmIzM5O3MgYSBQQ0kgZGV2aWNlLgoKQnV0IHRoZW4gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEl0IGNpdGVzIGV4YW1wbGVzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIG9yIFNtYXJ0TklDIGRyaXZlcnMsIHRoZSBraW5kcyBvZiB0aGluZ3MgdGhhdCByZXF1aXJlIGRlZGljYXRlZCBoYXJkd2FyZS4gQ291bGQgYHN0bW1hY2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/CgpJIG5lZWQgdG8gZ2V0IHRvIHRoZSByb290IG9mIGhvdyBgc3RtbWFjYCBpcyB1c2VkLiBJIGtub3cgaXQmIzM5O3MgdXNlZCBpbiBudW1lcm91cyBBUk0gU29DcyBmcm9tIFJvY2tjaGlwLCBBbGx3aW5uZXIsIEFtbG9naWMsIE5YUCwgYW5kIG90aGVycy4gSSBrbm93IFFFTVUgKmRvZXMqIGVtdWxhdGUgc29tZSBvZiB0aGVzZSBTb0NzIOKAkyBJJiMzOTt2ZSBzZWVuIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgKG1hcHBlZCB0byBgc3VuOGktZW1hY2AsIG5vdCBgc3RtbWFjYCkuIEkmIzM5O20gbG9va2luZyBmb3Igd2hlcmUgYHN0bW1hY2AgZ2V0cyB1c2VkIGluIFFFTVUuIExldCBtZSBsb29rIGF0IHRoZSBRRU1VIHNvdXJjZS4KCk9rYXksIEkgc2VlIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIHRoYXQmIzM5O3MgYHN1bjhpLWVtYWNgLiBUaGVuIHRoZXJlJiMzOTtzIGBody9uZXQvY2FkZW5jZV9nZW0uY2AsIHRoYXQmIzM5O3MgZm9yIHRoZSBgbWFjYmAgZHJpdmVyLiBBbmQgYGh3L25ldC9pbXhfZmVjLmNgLCB0aGF0JiMzOTtzIGBmZWNgLiBgaHcvbmV0L25wY203eHhfZW1jLmNgIGlzIGZvciBgbnBjbTd4eF9lbWNgLCBhbmQgYGh3L25ldC94Z21hYy5jYCBpcyBvYnZpb3VzbHkgYHhnbWFjYC4gSSBhbSB3b25kZXJpbmcgaWYgYHN0bW1hY2AgY2FuIGV2ZW4gYmUgdXNlZCBpbiBRRU1VIGF0IGFsbD8KCldhaXQsIEkgdGhpbmsgSSByZW1lbWJlciBub3cuIGBzdG1tYWNgIGlzIHRoZSBTeW5vcHN5cyBEZXNpZ25XYXJlIE1BQyAoRFdNQUMpLiBTbyB0aGF0IG1lYW5zIFFFTVUgKnNob3VsZCogaGF2ZSBhbiBlbXVsYXRpb24gb2YgdGhpcy4gTGV0IG1lIHNlZS4uLiB5ZXMhIFFFTVUgaGFzIGBody9uZXQvZGVzaWdud2FyZS5jYC4gT2theSwgbm93IEkganVzdCBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RXTUFDJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTk4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sOjc6dGl0bGU6IEFsdGVyYSBTT0NGUEdBIFNvQyBEV01BQyBjb250cm9sbGVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC04LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sPTEyPWRlc2NyaXB0aW9uOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTMtICBUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgaW1wbGVtZW50YXRpb24gb2YgdGhlXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbDoxNDogIFN5bm9wc3lzIERXTUFDIGZvciB0aGUgQ3ljbG9uZTUsIEFycmlhNSwgU3RyYXRpeDEwLCBBZ2lsZXg1IGFuZCBBZ2lsZXg3XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC0xNS0gIGZhbWlsaWVzIG9mIGNoaXBzLlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sPTMxPXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTEzLSAgICBkZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sOjExNDogICAgICBTaG91bGQgYmUgdGhlIHBoYW5kbGUgdG8gdGhlIGVtYWMgc3BsaXR0ZXIgc29mdCBJUCBub2RlIGlmIERXTUFDXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC0xMTUtICAgICAgY29udHJvbGxlciBpcyBjb25uZWN0ZWQgYW4gZW1hYyBzcGxpdHRlci5cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbD02PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwtNy1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjg6dGl0bGU6IEFtbG9naWMgTWVzb24gRFdNQUMgRXRoZXJuZXQgY29udHJvbGxlclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbD0xMzA9cHJvcGVydGllczpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbC0xNDktICAgICAgLSBkZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjE1MDogICAgICAgICAgVGhlIGZpcnN0IHJlZ2lzdGVyIHJhbmdlIHNob3VsZCBiZSB0aGUgb25lIG9mIHRoZSBEV01BQyBjb250cm9sbGVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbC0xNTEtICAgICAgLSBkZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sOjc6dGl0bGU6IEludGVsIERXTUFDIGdsdWUgbGF5ZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pcHE4MDZ4LWR3bWFjLnR4dDoxOiogSVBRODA2eCBEV01BQyBFdGhlcm5ldCBjb250cm9sbGVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0LTItXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZWRpYXRlay1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWVkaWF0ZWstZHdtYWMueWFtbDo3OnRpdGxlOiBNZWRpYVRlayBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWVkaWF0ZWstZHdtYWMueWFtbC04LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnV2b3RvbixtYTM1ZDEtZHdtYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9udXZvdG9uLG1hMzVkMS1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWw6Nzp0aXRsZTogTnV2b3RvbiBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnV2b3RvbixtYTM1ZDEtZHdtYWMueWFtbC04LVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbC02LVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWw6Nzp0aXRsZTogTlhQIGkuTVg4LzkgRFdNQUMgZ2x1ZSBsYXllclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwtOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbD0xMz1kZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTE0LSAgVGhpcyBkZXZpY2UgaXMgYSBTeW5vcHN5cyBEV0MgSVAsIGludGVncmF0ZWQgb24gTlhQIFMzMkcvUiBTb0NzLlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWw6MTU6ICBUaGUgU29DIHNlcmllcyBTMzJHMnh4IGFuZCBTMzJHM3h4IGZlYXR1cmUgb25lIERXTUFDIGluc3RhbmNlLFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwtMTYtICB0aGUgU29DIFMzMlI0NSBoYXMgdHdvIGluc3RhbmNlcy4gVGhlIGRldmljZXMgY2FuIHVzZSBSR01JSS9STUlJL01JSVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTE4LSAgdG8gdGhlIGVtYmVkZGVkIFNlckRlcyBmb3IgU0dNSUkgY29ubmVjdGl2aXR5LlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWw6MTk6ICBUaGUgRFdNQUMgaW5zdGFuY2VzIGhhdmUgY29ubmVjdGVkIGFsbCBSWC9UWCBxdWV1ZXMgaW50ZXJydXB0cyxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTIwLSAgZW5hYmxpbmcgbG9hZCBiYWxhbmNpbmcgb2YgZGF0YSB0cmFmZmljIGFjcm9zcyBhbGwgQ1BVIGNvcmVzLlxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLGN2MTgwMGItZHdtYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWw6Nzp0aXRsZTogU29waGdvIENWMTgwMEIgRFdNQUMgZ2x1ZSBsYXllclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbDo3OnRpdGxlOiBTb3BoZ28gU0cyMDQ0IERXTUFDIGdsdWUgbGF5ZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NwYWNlbWl0LGszLWR3bWFjLnlhbWwtNi1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3BhY2VtaXQsazMtZHdtYWMueWFtbDo3OnRpdGxlOiBTcGFjZW1pdCBLMyBEV01BQyBnbHVlIGxheWVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NwYWNlbWl0LGszLWR3bWFjLnlhbWwtOC1cbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sPTY9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTctXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sOjg6dGl0bGU6IFN0YXJGaXZlIEpINzExMCBEV01BQyBnbHVlIGxheWVyXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTktXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGktZHdtYWMudHh0OjE6U1RNaWNyb2VsZWN0cm9uaWNzIFNvQyBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RpLWR3bWFjLnR4dC0yLVxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbD02PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sLTctXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw6ODp0aXRsZTogU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMyIC8gTUNVIERXTUFDIGdsdWUgbGF5ZXIgY29udHJvbGxlclxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdG0zMi1kd21hYy55YW1sLTktXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sLTYtXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbDo3OnRpdGxlOiBUb3NoaWJhIFZpc2NvbnRpIERXTUFDIEV0aGVybmV0IGNvbnRyb2xsZXJcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sLTgtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Rldmxpbmsvc3RtbWFjLnJzdD0xMz1UaGUgYGBzdG1tYWNgYCBkcml2ZXIgaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGRyaXZlci1zcGVjaWZpYyBwYXJhbWV0ZXJzLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL3N0bW1hYy5yc3QtMjQtICAgICAtIHJ1bnRpbWVcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rL3N0bW1hYy5yc3Q6MjU6ICAgICAtIEVuYWJsZSB0aGUgQ29hcnNlIHRpbWVzdGFtcGluZyBtb2RlLCBhcyBkZWZpbmVkIGluIHRoZSBEV01BQyBUUk0uXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0LTI2LSAgICAgICBBIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoaXMgdGltZXN0YW1waW5nIG1vZGUgY2FuIGJlIGZvdW5kIGluIHRoZVxuLS1cbk1BSU5UQUlORVJTPTMzMzg9RjpcdGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtbnhwLXMzMmcqXG5NQUlOVEFJTkVSUy0zMzM5LVxuTUFJTlRBSU5FUlM6MzM0MDpBUk0vTlhQIFMzMkcvUzMyUiBEV01BQyBFVEhFUk5FVCBEUklWRVJcbk1BSU5UQUlORVJTLTMzNDEtTTpcdEphbiBQZXRyb3VzIFx1MDAzY2phbi5wZXRyb3VzQG9zcy5ueHAuY29tXHUwMDNlXG4tLVxuTUFJTlRBSU5FUlM9MzYwND1GOlx0ZHJpdmVycy9jbGsvc29jZnBnYS9cbk1BSU5UQUlORVJTLTM2MDUtXG5NQUlOVEFJTkVSUzozNjA2OkFSTS9TT0NGUEdBIERXTUFDIEdMVUUgTEFZRVIgQklORElOR1Ncbk1BSU5UQUlORVJTLTM2MDctTTpcdE1hdHRoZXcgR2VybGFjaCBcdTAwM2NtYXR0aGV3LmdlcmxhY2hAYWx0ZXJhLmNvbVx1MDAzZVxuLS1cbk1BSU5UQUlORVJTPTM2MTA9RjpcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXG5NQUlOVEFJTkVSUy0zNjExLVxuTUFJTlRBSU5FUlM6MzYxMjpBUk0vU09DRlBHQSBEV01BQyBHTFVFIExBWUVSXG5NQUlOVEFJTkVSUy0zNjEzLU06XHRNYXhpbWUgQ2hldmFsbGllciBcdTAwM2NtYXhpbWUuY2hldmFsbGllckBib290bGluLmNvbVx1MDAzZVxuLS1cbk1BSU5UQUlORVJTPTE4MjMyPUY6XHRpbmNsdWRlL2xpbnV4L21vc3QuaFxuTUFJTlRBSU5FUlMtMTgyMzMtXG5NQUlOVEFJTkVSUzoxODIzNDpNT1RPUkNPTU0gRFdNQUMgR0xVRSBEUklWRVJcbk1BSU5UQUlORVJTLTE4MjM1LU06XHRZYW8gWmkgXHUwMDNjbWVAeml5YW8uY2NcdTAwM2Vcbi0tXG5NQUlOVEFJTkVSUz0yMzA0Mz1GOlx0ZHJpdmVycy9paW8vYWRjL3J6bjEtYWRjLmNcbk1BSU5UQUlORVJTLTIzMDQ0LVxuTUFJTlRBSU5FUlM6MjMwNDU6UkVORVNBUyBSWi9OMSBEV01BQyBHTFVFIExBWUVSXG5NQUlOVEFJTkVSUy0yMzA0Ni1NOlx0Um9tYWluIEdhbnRvaXMgXHUwMDNjcm9tYWluLmdhbnRvaXNAYm9vdGxpbi5jb21cdTAwM2Vcbi0tXG5NQUlOVEFJTkVSUz0yMzA2NT1GOlx0ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9yZW5lc2FzX3VzYmYuY1xuTUFJTlRBSU5FUlMtMjMwNjYtXG5NQUlOVEFJTkVSUzoyMzA2NzpSRU5FU0FTIFJaL1YySChQKSBEV01BQyBHQkVUSCBHTFVFIExBWUVSIERSSVZFUlxuTUFJTlRBSU5FUlMtMjMwNjgtTTpcdExhZCBQcmFiaGFrYXIgXHUwMDNjcHJhYmhha2FyLm1haGFkZXYtbGFkLnJqQGJwLnJlbmVzYXMuY29tXHUwMDNlXG4tLVxuTUFJTlRBSU5FUlM9MjU0NDM9RjpcdGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zcDIqXG5NQUlOVEFJTkVSUy0yNTQ0NC1cbk1BSU5UQUlORVJTOjI1NDQ1OlNQQUNFTUlUIERXTUFDIEdMVUUgTEFZRVJcbk1BSU5UQUlORVJTLTI1NDQ2LU06XHRJbm9jaGkgQW1hb3RvIFx1MDAzY2lub2NoaWFtYUBnbWFpbC5jb21cdTAwM2Vcbi0tXG5NQUlOVEFJTkVSUz0yNTc5ND1GOlx0YXJjaC9yaXNjdi9ib290L2R0cy9zdGFyZml2ZS9cbk1BSU5UQUlORVJTLTI1Nzk1LVxuTUFJTlRBSU5FUlM6MjU3OTY6U1RBUkZJVkUgRFdNQUMgR0xVRSBMQVlFUlxuTUFJTlRBSU5FUlMtMjU3OTctTTpcdEVtaWwgUmVubmVyIEJlcnRoaW5nIFx1MDAzY2tlcm5lbEBlc21pbC5ka1x1MDAzZVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTI3Nj1DT05GSUdfU1RNTUFDX0VUSD15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNzc6Q09ORklHX0RXTUFDX0RXQ19RT1NfRVRIPXlcbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTI3OC1DT05GSUdfVElfQ1BTVz15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9NjA9Q09ORklHX1NUTU1BQ19FVEg9eVxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc6NjE6IyBDT05GSUdfRFdNQUNfUkVORVNBU19HQkVUSCBpcyBub3Qgc2V0XG5hcmNoL2FybS9jb25maWdzL3NobW9iaWxlX2RlZmNvbmZpZy02Mi1DT05GSUdfTUlDUkVMX1BIWT15XG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz00NDY9Q09ORklHX1NUTU1BQ19FVEg9bVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZzo0NDc6Q09ORklHX0RXTUFDX01FRElBVEVLPW1cbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDQ4OkNPTkZJR19EV01BQ19URUdSQT1tXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTQ0OS0jIENPTkZJR19ORVRfVkVORE9SX1NVTiBpcyBub3Qgc2V0XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpYy9ib2FyZC1uaTE2OTQ0NS5jb25maWc9Mjg9Q09ORklHX1NUTU1BQ19QTEFURk9STT15XG5hcmNoL21pcHMvY29uZmlncy9nZW5lcmljL2JvYXJkLW5pMTY5NDQ1LmNvbmZpZzoyOTpDT05GSUdfRFdNQUNfR0VORVJJQz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZz04OT1DT05GSUdfU1RNTUFDX0VUSD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnOjkwOiMgQ09ORklHX0RXTUFDX0dFTkVSSUMgaXMgbm90IHNldFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZy05MS0jIENPTkZJR19ORVRfVkVORE9SX1NZTk9QU1lTIGlzIG5vdCBzZXRcbi0tXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnPTE0MT1DT05GSUdfU1RNTUFDX0VUSD1tXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnOjE0MjpDT05GSUdfRFdNQUNfVEhFQUQ9bVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy0xNDMtQ09ORklHX01JQ1JFTF9QSFk9eVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm0uY29uZmlnPTMzPUNPTkZJR19QSFlfUk9DS0NISVBfRFA9eVxuZHJpdmVycy9ncHUvZHJtL2NpL2FybS5jb25maWc6MzQ6Q09ORklHX0RXTUFDX1JPQ0tDSElQPXlcbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm0uY29uZmlnLTM1LVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm02NC5jb25maWc9MzU9Q09ORklHX1BIWV9ST0NLQ0hJUF9EUD15XG5kcml2ZXJzL2dwdS9kcm0vY2kvYXJtNjQuY29uZmlnOjM2OkNPTkZJR19EV01BQ19ST0NLQ0hJUD15XG5kcml2ZXJzL2dwdS9kcm0vY2kvYXJtNjQuY29uZmlnLTM3LUNPTkZJR19TVE1NQUNfRVRIPXlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTQyPWlmIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDQ6Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQ1LVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjUyOmNvbmZpZyBEV01BQ19HRU5FUklDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjUzOlx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBkcml2ZXIgZm9yIERXTUFDXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU0LVx0ZGVmYXVsdCBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTUtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjU2Olx0ICBHZW5lcmljIERXTUFDIGRyaXZlciBmb3IgcGxhdGZvcm1zIHRoYXQgZG9uJiMzOTt0IHJlcXVpcmUgYW55XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU3LVx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjA6Y29uZmlnIERXTUFDX0FOQVJJT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjY5OmNvbmZpZyBEV01BQ19FSUM3NzAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTcwLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgRXN3aW4gZWljNzcwMCBldGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo3ODpjb25maWcgRFdNQUNfSU5HRU5JQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03OS1cdHRyaXN0YXRlIFwmIzM0O0luZ2VuaWMgTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTg5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5MDpjb25maWcgRFdNQUNfSVBRODA2WFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5MTpcdHRyaXN0YXRlIFwmIzM0O1FDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTItXHRkZWZhdWx0IEFSQ0hfUUNPTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTUtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjk2Olx0ICBTdXBwb3J0IGZvciBRQ0EgSVBRODA2WCBEV01BQyBFdGhlcm5ldC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwNjpjb25maWcgRFdNQUNfTFBDMThYWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMDc6XHR0cmlzdGF0ZSBcJiMzNDtOWFAgTFBDMTh4eC80M3h4IERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTA4LVx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTExMS1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTEyOlx0ICBTdXBwb3J0IGZvciBOWFAgTFBDMTh4eC80M3h4IERXTUFDIEV0aGVybmV0LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjExNDpjb25maWcgRFdNQUNfTUVESUFURUtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTE1LVx0dHJpc3RhdGUgXCYjMzQ7TWVkaWFUZWsgTVQyN3h4IEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMjI6Y29uZmlnIERXTUFDX01FU09OXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMy1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgTWVzb24gZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzM6Y29uZmlnIERXTUFDX05VVk9UT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTM0LVx0dHJpc3RhdGUgXCYjMzQ7TnV2b3RvbiBNQTM1IGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTQ1OmNvbmZpZyBEV01BQ19RQ09NX0VUSFFPU1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNDYtXHR0cmlzdGF0ZSBcJiMzNDtRdWFsY29tbSBFVEhRT1Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNTU6Y29uZmlnIERXTUFDX1JFTkVTQVNfR0JFVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU2LVx0dHJpc3RhdGUgXCYjMzQ7UmVuZXNhcyBSWi9WMkgoUCkgR0JFVEggYW5kIFJaL1QySCwgUlovTjJIIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjg6Y29uZmlnIERXTUFDX1JPQ0tDSElQXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE2OS1cdHRyaXN0YXRlIFwmIzM0O1JvY2tjaGlwIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTc5OmNvbmZpZyBEV01BQ19SWk4xXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE4MC1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUlovTjEgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTkwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxOTE6Y29uZmlnIERXTUFDX1MzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTItXHR0cmlzdGF0ZSBcJiMzNDtOWFAgUzMyRy9TMzJSIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjAyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDM6Y29uZmlnIERXTUFDX1NPQ0ZQR0FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjA0LVx0dHJpc3RhdGUgXCYjMzQ7U09DRlBHQSBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIxODpjb25maWcgRFdNQUNfU09QSEdPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxOS1cdHRyaXN0YXRlIFwmIzM0O1NvcGhnbyBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIyOTpjb25maWcgRFdNQUNfU1BBQ0VNSVRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVx0dHJpc3RhdGUgXCYjMzQ7U3BhY2VtaXQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDE6Y29uZmlnIERXTUFDX1NUQVJGSVZFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI0Mi1cdHRyaXN0YXRlIFwmIzM0O1N0YXJGaXZlIGR3bWFjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjUzOmNvbmZpZyBEV01BQ19TVElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjU0LVx0dHJpc3RhdGUgXCYjMzQ7U1RpIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNjU6Y29uZmlnIERXTUFDX1NUTTMyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2NjpcdHRyaXN0YXRlIFwmIzM0O1NUTTMyIERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjY3LVx0ZGVmYXVsdCBBUkNIX1NUTTMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI3Nzpjb25maWcgRFdNQUNfU1VOWElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjc4LVx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIEdNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODg6Y29uZmlnIERXTUFDX1NVTjhJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4OS1cdHRyaXN0YXRlIFwmIzM0O0FsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzAwOmNvbmZpZyBEV01BQ19TVU41NUlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzAxLVx0dHJpc3RhdGUgXCYjMzQ7QWxsd2lubmVyIHN1bjU1aSBHTUFDMjAwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzEyOmNvbmZpZyBEV01BQ19USEVBRFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTMtXHR0cmlzdGF0ZSBcJiMzNDtULUhFQUQgZHdtYWMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMjI6Y29uZmlnIERXTUFDX0lNWDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzIzOlx0dHJpc3RhdGUgXCYjMzQ7TlhQIElNWDggRFdNQUMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjQtXHRkZWZhdWx0IEFSQ0hfTVhDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNDpjb25maWcgRFdNQUNfSU5URUxfUExBVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMzUtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBkd21hYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM0NDpjb25maWcgRFdNQUNfTE9PTkdTT04xXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM0NS1cdHRyaXN0YXRlIFwmIzM0O0xvb25nc29uMSBHTUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzU1OmNvbmZpZyBEV01BQ19URUdSQVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTYtXHR0cmlzdGF0ZSBcJiMzNDtOVklESUEgVGVncmEgTUdCRSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NDpjb25maWcgRFdNQUNfVklTQ09OVElcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzY1Olx0dHJpc3RhdGUgXCYjMzQ7VG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2Ni1cdGRlZmF1bHQgQVJDSF9WSVNDT05USVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzczPWNvbmZpZyBTVE1NQUNfTElCUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3ODpjb25maWcgRFdNQUNfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgR01BQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4ODpjb25maWcgRFdNQUNfTE9PTkdTT05cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzg5Olx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzkwLVx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk4OmNvbmZpZyBEV01BQ19NT1RPUkNPTU1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk5Olx0dHJpc3RhdGUgXCYjMzQ7TW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMC1cdGRlcGVuZHMgb24gUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDMtXHRoZWxwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNDpcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNS1cdCAgY29udHJvbGxlcnMuIEN1cnJlbnRseSBvbmx5IFlUNjgwMSBpcyBzdXBwb3J0ZWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcdCYjNDM7PSBzdG1tYWMtcGxhdGZvcm0ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0RXTUFDX0FOQVJJT04pXHQmIzQzOz0gZHdtYWMtYW5hcmlvbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfRFdNQUNfRUlDNzcwMClcdCYjNDM7PSBkd21hYy1laWM3NzAwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVx0JiM0Mzs9IGR3bWFjLWluZ2VuaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX0RXTUFDX0lQUTgwNlgpXHQmIzQzOz0gZHdtYWMtaXBxODA2eC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfRFdNQUNfTFBDMThYWClcdCYjNDM7PSBkd21hYy1scGMxOHh4Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcdCYjNDM7PSBkd21hYy1tZWRpYXRlay5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRFdNQUNfTUVTT04pXHQmIzQzOz0gZHdtYWMtbWVzb24ubyBkd21hYy1tZXNvbjhiLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIzOm9iai0kKENPTkZJR19EV01BQ19OVVZPVE9OKVx0JiM0Mzs9IGR3bWFjLW51dm90b24ub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVx0JiM0Mzs9IGR3bWFjLXFjb20tZXRocW9zLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI1Om9iai0kKENPTkZJR19EV01BQ19SRU5FU0FTX0dCRVRIKSAmIzQzOz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNjpvYmotJChDT05GSUdfRFdNQUNfUk9DS0NISVApXHQmIzQzOz0gZHdtYWMtcmsub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjc6b2JqLSQoQ09ORklHX0RXTUFDX1JaTjEpXHQmIzQzOz0gZHdtYWMtcnpuMS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVx0XHQmIzQzOz0gZHdtYWMtczMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjI5Om9iai0kKENPTkZJR19EV01BQ19TT0NGUEdBKVx0JiM0Mzs9IGR3bWFjLWFsdHItc29jZnBnYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVx0JiM0Mzs9IGR3bWFjLXNvcGhnby5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMTpvYmotJChDT05GSUdfRFdNQUNfU1BBQ0VNSVQpXHQmIzQzOz0gZHdtYWMtc3BhY2VtaXQub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzI6b2JqLSQoQ09ORklHX0RXTUFDX1NUQVJGSVZFKVx0JiM0Mzs9IGR3bWFjLXN0YXJmaXZlLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXHRcdCYjNDM7PSBkd21hYy1zdGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzQ6b2JqLSQoQ09ORklHX0RXTUFDX1NUTTMyKVx0JiM0Mzs9IGR3bWFjLXN0bTMyLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcdCYjNDM7PSBkd21hYy1zdW54aS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfRFdNQUNfU1VOOEkpXHQmIzQzOz0gZHdtYWMtc3VuOGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzc6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjU1SSlcdCYjNDM7PSBkd21hYy1zdW41NWkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVx0JiM0Mzs9IGR3bWFjLXRoZWFkLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM5Om9iai0kKENPTkZJR19EV01BQ19EV0NfUU9TX0VUSClcdCYjNDM7PSBkd21hYy1kd2MtcW9zLWV0aC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MDpvYmotJChDT05GSUdfRFdNQUNfSU5URUxfUExBVClcdCYjNDM7PSBkd21hYy1pbnRlbC1wbGF0Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXHQmIzQzOz0gZHdtYWMtbG9vbmdzb24xLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQyOm9iai0kKENPTkZJR19EV01BQ19HRU5FUklDKVx0JiM0Mzs9IGR3bWFjLWdlbmVyaWMub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDM6b2JqLSQoQ09ORklHX0RXTUFDX0lNWDgpXHQmIzQzOz0gZHdtYWMtaW14Lm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcdCYjNDM7PSBkd21hYy10ZWdyYS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0NTpvYmotJChDT05GSUdfRFdNQUNfVklTQ09OVEkpXHQmIzQzOz0gZHdtYWMtdmlzY29udGkub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGUtNDYtc3RtbWFjLXBsYXRmb3JtLW9ianM6PSBzdG1tYWNfcGxhdGZvcm0ub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlPTUwPW9iai0kKENPTkZJR19TVE1NQUNfUENJKVx0JiM0Mzs9IHN0bW1hYy1wY2kub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTE6b2JqLSQoQ09ORklHX0RXTUFDX0lOVEVMKVx0JiM0Mzs9IGR3bWFjLWludGVsLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcdCYjNDM7PSBkd21hYy1sb29uZ3Nvbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MzpvYmotJChDT05GSUdfRFdNQUNfTU9UT1JDT01NKVx0JiM0Mzs9IGR3bWFjLW1vdG9yY29tbS5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS01NC1zdG1tYWMtcGNpLW9ianM6PSBzdG1tYWNfcGNpLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjI5OiNkZWZpbmUgRFdNQUNfU05QU1ZFUlx0R0VOTUFTS19VMzIoNywgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjMwOiNkZWZpbmUgRFdNQUNfVVNFUlZFUlx0R0VOTUFTS19VMzIoMTUsIDgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTMyLS8qIFN5bm9wc3lzIENvcmUgdmVyc2lvbnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjMzOiNkZWZpbmVcdERXTUFDX0NPUkVfM180MFx0XHQweDM0XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDojZGVmaW5lXHREV01BQ19DT1JFXzNfNTBcdFx0MHgzNVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzU6I2RlZmluZVx0RFdNQUNfQ09SRV8zXzcwXHRcdDB4MzdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM2OiNkZWZpbmVcdERXTUFDX0NPUkVfNF8wMFx0XHQweDQwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNzojZGVmaW5lIERXTUFDX0NPUkVfNF8xMFx0XHQweDQxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozODojZGVmaW5lIERXTUFDX0NPUkVfNV8wMFx0XHQweDUwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozOTojZGVmaW5lIERXTUFDX0NPUkVfNV8xMFx0XHQweDUxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0MDojZGVmaW5lIERXTUFDX0NPUkVfNV8yMFx0XHQweDUyXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00MS0jZGVmaW5lIERXWEdNQUNfQ09SRV8yXzEwXHQweDIxXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6NTE6XHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC01Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZGVzY3MuaC0zLSAgSGVhZGVyIEZpbGUgdG8gZGVzY3JpYmUgdGhlIERNQSBkZXNjcmlwdG9ycyBhbmQgcmVsYXRlZCBkZWZpbml0aW9ucy5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2Rlc2NzLmg6NDogIFRoaXMgaXMgZm9yIERXTUFDMTAwIGFuZCAxMDAwIGNvcmVzLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZGVzY3MuaC01LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MzogKiBBZGFwdHJ1bSBBbmFyaW9uIERXTUFDIGdsdWUgbGF5ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy00LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jPTEzMz1tb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFuYXJpb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM6MTM1Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtBZGFwdHJ1bSBBbmFyaW9uIERXTUFDIHNwZWNpZmljIGdsdWUgbGF5ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jLTEzNi1NT0RVTEVfQVVUSE9SKFwmIzM0O0FsZXhhbmRydSBHYWduaXVjIFx1MDAzY21yLm51a2UubWVAZ21haWwuY29tXHUwMDNlXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jPTM2PXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19jb25maWdfZHQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg3LVx0LyogZHdjLXFvcyBuZWVkcyBHTUFDNCwgQUFMLCBUU08gYW5kIFBNVCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzo4ODpcdHBsYXRfZGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg5LVx0cGxhdF9kYXQtXHUwMDNlZG1hX2NmZy1cdTAwM2VhYWwgPSAxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYy0xLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmM6MjogKiBHZW5lcmljIERXTUFDIHBsYXRmb3JtIGRyaXZlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOiAqIGR3bWFjLWlteC5jIC0gRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllciBmb3IgTlhQIGlteDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00MDM9TU9EVUxFX0FVVEhPUihcJiMzNDtOWFBcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDA0Ok1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtOWFAgaW14OCBEV01BQyBTcGVjaWZpYyBHbHVlIGxheWVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwNS1NT0RVTEVfTElDRU5TRShcJiMzNDtHUEwgdjJcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYy0yLS8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MzogKiBkd21hYy1pbmdlbmljLmMgLSBJbmdlbmljIFNvQ3MgRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTQtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM9MjgyPU1PRFVMRV9BVVRIT1IoXCYjMzQ75ZGo55Cw5p2wIChaaG91IFlhbmppZSkgXHUwMDNjemhvdXlhbmppZUB3YW55ZWV0ZWNoLmNvbVx1MDAzZVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmM6MjgzOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtJbmdlbmljIFNvQ3MgRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMjg0LU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoyOi8qIEludGVsIERXTUFDIHBsYXRmb3JtIGRyaXZlclxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jLTMtICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTUwPU1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTCB2MlwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTUxOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtJbnRlbCBEV01BQyBwbGF0Zm9ybSBkcml2ZXJcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9NTk2PXN0YXRpYyB2b2lkIGNvbW1vbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk5LVx0cGxhdC1cdTAwM2VjbGtfY3NyID0gU1RNTUFDX0NTUl8yMF8zNU07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYwMDpcdHBsYXQtXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MDEtXHRwbGF0LVx1MDAzZWZvcmNlX3NmX2RtYV9tb2RlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTYxNj1zdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjYtXHRwbGF0LVx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzI1MF8zMDBNO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo2Mjc6XHRwbGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyOC1cdHBsYXQtXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtMi0vKiBDb3B5cmlnaHQgKGMpIDIwMjAsIEludGVsIENvcnBvcmF0aW9uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjM6ICogRFdNQUMgSW50ZWwgaGVhZGVyIGZpbGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtNC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmg6NjojaWZuZGVmIF9fRFdNQUNfSU5URUxfSF9fXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjc6I2RlZmluZSBfX0RXTUFDX0lOVEVMX0hfX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjgxOiNlbmRpZiAvKiBfX0RXTUFDX0lOVEVMX0hfXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmMtNDc1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ3NjpcdHBsYXRfZGF0LVx1MDAzZWNvcmVfdHlwZSA9IERXTUFDX0NPUkVfR01BQztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00NzctXHRwbGF0X2RhdC1cdTAwM2Vic3BfcHJpdiA9IGdtYWM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jPTUwOD1NT0RVTEVfQVVUSE9SKFwmIzM0O01hdGhpZXUgT2xpdmFyaSBcdTAwM2NtYXRoaWV1QGNvZGVhdXJvcmEub3JnXHUwMDNlXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDk6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgSVBRODA2eCBEV01BQyBzcGVjaWZpYyBnbHVlIGxheWVyXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MTAtTU9EVUxFX0xJQ0VOU0UoXCYjMzQ7RHVhbCBCU0QvR1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTcyLSNkZWZpbmUgUENJX0RFVklDRV9JRF9MT09OR1NPTl9HTkVUXHQweDdhMTNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzM6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMVx0MHgxMFx0LyogTG9vbmdzb24gY3VzdG9tIElEIDB4MTAgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzQ6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMlx0MHgxMlx0LyogTG9vbmdzb24gY3VzdG9tIElEIDB4MTIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNzUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz04Nj1zdGF0aWMgdm9pZCBsb29uZ3Nvbl9kZWZhdWx0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy05NS1cdHBsYXQtXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMTAwXzE1ME07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjk2Olx0cGxhdC1cdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTk3LVx0cGxhdC1cdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xMDgtXHRzd2l0Y2ggKGxkLVx1MDAzZWxvb25nc29uX2lkKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjEwOTpcdGNhc2UgRFdNQUNfQ09SRV9NVUxUSUNIQU5fVjE6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTExMC1cdFx0bGQtXHUwMDNlbXVsdGljaGFuID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEyMC1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjEyMTpcdGNhc2UgRFdNQUNfQ09SRV9NVUxUSUNIQU5fVjI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEyMi1cdFx0bGQtXHUwMDNlbXVsdGljaGFuID0gMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTMwNj1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3NldHVwKHZvaWQgKmFwcml2LCBzdHJ1Y3QgbWFjX2RldmljZV9pbmZvICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMjgtXHRpZiAobGQtXHUwMDNlbXVsdGljaGFuKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjMyOTpcdFx0cHJpdi1cdTAwM2VzeW5vcHN5c19pZCA9IERXTUFDX0NPUkVfM183MDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMzMwLVx0XHQqZG1hID0gZHdtYWMxMDAwX2RtYV9vcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz00NjY9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19hY3BpX2NvbmZpZyhzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NDc4Oi8qIExvb25nc29uJiMzOTtzIERXTUFDIGRldmljZSBtYXkgdGFrZSBuZWFybHkgdHdvIHNlY29uZHMgdG8gY29tcGxldGUgRE1BIHJlc2V0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTQ3OS1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz02MTQ9bW9kdWxlX3BjaV9kcml2ZXIobG9vbmdzb25fZHdtYWNfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNjE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTY6TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O0xvb25nc29uIERXTUFDIFBDSSBkcml2ZXJcJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTctTU9EVUxFX0FVVEhPUihcJiMzNDtRaW5nIFpoYW5nIFx1MDAzY3poYW5ncWluZ0Bsb29uZ3Nvbi5jblx1MDAzZVwmIzM0Oyk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxNjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyIGFuZCBpdHMgUUVNVSBSZXByZXNlbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBzdG1tYWNgIGRyaXZlciBhIGJpdCBiZXR0ZXIsIGFuZCBob3cgaXQgcmVsYXRlcyB0byB0aGUgYERXTUFDYCAoRGVzaWduV2FyZSBNQUMpIGFzIGl0IHNlZW1zIHRoYXQgYHN0bW1hY2AgaXMsIGluIGZhY3QsIHRoZSBkcml2ZXIgZm9yIGBEV01BQ2AuIEkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCB0aGlzIGluIFFFTVUsIHNvIGxldCYjMzk7cyBjaGVjayBgaHcvbmV0L2Rlc2lnbndhcmUuY2AuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hpY2ggUUVNVSBtYWNoaW5lcyBhY3R1YWxseSB1dGlsaXplIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgY29kZS4gSG1tLCBsb29rcyBsaWtlIGl0JiMzOTtzIHVzZWQgaW4gYGh3L2FybS9hbGx3aW5uZXItaDMuY2AsIGJ1dCB3YWl0LCB0aGUgc3VuOGktZW1hYyBpcyBkaWZmZXJlbnQgaGVyZS4gTGV0JiMzOTtzIHNlZS4uLiBvaCwgYWxzbywgZGVzaWdud2FyZSAqaXMqIHVzZWQsIGJ1dCBpbiBgaHcvYXJtL3hsbngtenlucW1wLmNgPyBObywgdGhhdCYjMzk7cyBgY2FkZW5jZV9nZW1gLiBPa2F5LCBJIHdhcyBnZXR0aW5nIHRoYXQgY29uZnVzZWQuCgpOb3csIHdoZXJlIHdhcyBJPyBSaWdodCwgYHN0bW1hY2AuIEkgYWxzbyByZWNhbGwgc2VlaW5nIHRoYXQgYHN0bW1hY2AgaXMgdGVzdGVkIGJ5IHN5emthbGxlci4gVGhhdCYjMzk7cyBnb29kLCBiZWNhdXNlIHN5emthbGxlciBwcm92aWRlcyB2YWx1YWJsZSBjb3ZlcmFnZSBkYXRhLiBTbywgbGV0JiMzOTtzIGludmVzdGlnYXRlIHRoZSByZWFjaGFiaWxpdHkgb2YgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIEFuZCwgbGV0JiMzOTtzIHNlZSwgdGhhdCBmdW5jdGlvbiBpcyB0aGUgYG5kb19zZWxlY3RfcXVldWVgIGNhbGxiYWNrIGZvciB0aGUgYHN0bW1hY2AgZHJpdmVyLiBHb3R0YSBjb25maXJtIHRoaXMgcXVpY2tseS4gR29pbmcgdG8gY2hlY2sgYHN0bW1hY19tYWluLmNgIHRvIGJlIGNvbXBsZXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfc2VsZWN0X3F1ZXVlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjQxOT1zdGF0aWMgaW50IHN0bW1hY19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDQ1OnN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDQ2LVx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzMxNS1cdC5uZG9fc2V0dXBfdGMgPSBzdG1tYWNfc2V0dXBfdGMsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTY6XHQubmRvX3NlbGVjdF9xdWV1ZSA9IHN0bW1hY19zZWxlY3RfcXVldWUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXHQubmRvX3NldF9tYWNfYWRkcmVzcyA9IHN0bW1hY19zZXRfbWFjX2FkZHJlc3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYxMDUKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0NDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG5kb19zZWxlY3RfcXVldWVgIGluIGBzdG1tYWNgIGZvciBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGBuZG9fc2VsZWN0X3F1ZXVlYCBjYWxsYmFjayBoZXJlLiBUaGF0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgbmV0d29yayBkZXZpY2UgaGFzIG11bHRpcGxlIHRyYW5zbWl0IHF1ZXVlcyBhbmQgaXQmIzM5O3MgdGltZSB0byBkZWNpZGUgd2hpY2ggb25lIHRvIHVzZSBmb3IgYSBwYWNrZXQuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgY2FuIHdlIGFjdHVhbGx5IHJlYWNoIHRoaXMgaW4gYSB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50PyBJZiBzeXprYWxsZXIgaXMgdGFyZ2V0aW5nIGBzdG1tYWNgLCB0aGVuIHllcy4gSWYgc3l6a2FsbGVyIGNhbiB0ZXN0IGl0IHZpYSBgdm5ldGAsIG9yIGBkdW1teWAsIG9yIGEgcGxhdGZvcm0gZGV2aWNlIHByb2JlZCBpbiBRRU1VLCB0aGVuIGl0JiMzOTtzIHJlYWNoYWJsZS4KCk5vdywgZG9lcyBzeXprYWxsZXIgdGVzdCBgc3RtbWFjYD8gSSBjYW4gcXVpY2tseSBjaGVjayB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGVuYWJsZWQuIExldCYjMzk7cyBzZWUgaWYgYENPTkZJR19TVE1NQUNfRVRIYCBpcyBzZXQgaW4gdGhlIGB4ODZfNjRgIGRlZmNvbmZpZyBvciB0aGUgbWFpbiBzeXprYWxsZXIgY29uZmlnLiBIbW1tLCBJIGRvbiYjMzk7dCBoYXZlIHRoZSBzeXprYWxsZXIgY29uZmlnIGhhbmR5LCBidXQgd2FpdCwgSSBjYW4gY2hlY2sgaWYgaXQmIzM5O3MgYSBQQ0kgZGV2aWNlLiBgc3RtbWFjX3BjaS5jYCByZWdpc3RlcnMgYSBQQ0kgZHJpdmVyLgoKT2theSwgc3l6a2FsbGVyICpjYW4qIGZ1enogUENJIGRldmljZXMsIHVzaW5nIGBzeXpfcGNpX2RldmljZWAgb3Igc2ltaWxhciwgb3IgUUVNVSBjYW4gZW11bGF0ZSB0aGUgUENJIGRldmljZS4gV2FpdC4uLmRvZXMgUUVNVSBlbXVsYXRlIHRoZSBgc3RtbWFjYCBQQ0kgZGV2aWNlPyBObywgdGhhdCYjMzk7cyBub3Qgc29tZXRoaW5nIFFFTVUgaW1wbGVtZW50cy4gQnV0IGhhbmcgb24sIHN5emthbGxlciBoYXMgYHZoY2lgIGZvciBVU0IsIGBtYWM4MDIxMV9od3NpbWAgZm9yIHdpZmksIGFuZCBgbmV0ZGV2c2ltYCBmb3IgbmV0LiBTbywgZG9lcyBzeXprYWxsZXIgaGF2ZSBhICpwc2V1ZG8qIGRldmljZSBmb3IgUENJPyBObywgaXQmIzM5O3Mgbm90IHRoZSBzYW1lIHRoaW5nLiBTeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlYCBpbmplY3RzIFBDSSBkZXZpY2VzLCBwcm92aWRpbmcgdGhlIFBDSSBjb25maWcgc3BhY2UgYW5kIEJBUnMgdG8gcHJvYmUgdGhlIGRyaXZlci4gQnV0IHRvIGFjdHVhbGx5IGdldCB0byBgbmRvX3NlbGVjdF9xdWV1ZWAgYW5kIHNlbmQgcGFja2V0cywgdGhlIGRldmljZSBuZWVkcyB0byBiZSByZWdpc3RlcmVkIGFzIGEgbmV0ZGV2IGFuZCBiZSB1cC4KCk9rYXksIHNvIGNhbiBgc3RtbWFjYCBwcm9iZSBzdWNjZXNzZnVsbHkgd2l0aCBqdXN0IHJhbmRvbSBCQVJzIHByb3ZpZGVkIGJ5IGBzeXpfcGNpX2RldmljZWA/IFRoYXQgc2VlbXMgdW5saWtlbHksIGJ1dCBpdCYjMzk7cyB3b3J0aCBjaGVja2luZyBgc3RtbWFjX3BjaV9wcm9iZWAgdG8gc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfcGNpX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0xMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gc25wc19nbWFjNV9wY2lfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwNzogKiBzdG1tYWNfcGNpX3Byb2JlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA4LSAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExNy0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMTg6c3RhdGljIGludCBzdG1tYWNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMTI9c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTQtXHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1Olx0LnByb2JlID0gc3RtbWFjX3BjaV9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTYtXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTE5CgkJCQkJCQlvdXRwdXQ6IDUxCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDoKCioqRGl2aW5nIGludG8gYHN0bW1hY19wY2lfcHJvYmVgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjX3BjaV9wcm9iZWAgaXMgYWN0dWFsbHkgZG9pbmcuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gYXNzdW1pbmcgdGhpcyBpcyB0aGUgcHJpbWFyeSBlbnRyeSBwb2ludCBmb3IgdGhlIFBDSS1iYXNlZCBTVE1NQUMgZHJpdmVyIGluc3RhbnRpYXRpb24uIEl0JiMzOTtzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGRldGVjdHMgYW4gU1RNTUFDIEV0aGVybmV0IGNvbnRyb2xsZXIgdmlhIFBDSS4gU28sIHdoYXQgYXJlIHRoZSBrZXkgc3RlcHMgaXQmIzM5O3MgbGlrZWx5IHRha2luZz8gSSBleHBlY3QgaXQmIzM5O2xsIGJlIGRvaW5nIHRoaW5ncyBsaWtlOgoKKiAgICoqUmVzb3VyY2UgQWxsb2NhdGlvbjoqKiBGaXJzdCwgaXQgd2lsbCBsaWtlbHkgYmUgcHJvYmluZyB0aGUgUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgdG8gZmluZCB0aGUgYmFzZSBhZGRyZXNzIGZvciB0aGUgU1RNTUFDJiMzOTtzIHJlZ2lzdGVycywgaW50ZXJydXB0IG51bWJlcnMsIGFuZCBvdGhlciBuZWNlc3NhcnkgcmVzb3VyY2VzLiBJdCYjMzk7bGwgYmUgYSBjcml0aWNhbCBwYXJ0IG9mIGRpc2NvdmVyaW5nIGhvdyB0aGlzIGNhcmQgaXMgaG9va2VkIHVwLgoqICAgKipEcml2ZXIgQmluZGluZzoqKiBJdCYjMzk7bGwgdGhlbiBoYXZlIHRvIGJpbmQgdG8gdGhlIFBDSSBkZXZpY2UsIGxpa2VseSB1c2luZyBmdW5jdGlvbnMgbGlrZSBgcGNpX3NldF9kcnZkYXRhYCB0byBhdHRhY2ggdGhlIGRyaXZlci1zcGVjaWZpYyBkYXRhIHRvIHRoZSBQQ0kgZGV2aWNlIHN0cnVjdC4gSSBhbnRpY2lwYXRlIGl0JiMzOTtzIGEgcm91dGluZSBjYWxsIHRoYXQmIzM5O3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIHRoaXMgZHJpdmVyIHJ1bm5pbmcgYW5kIGZvciBsaW5raW5nIGl0IHRvIHRoZSBoYXJkd2FyZS4KKiAgICoqRGV2aWNlIEluaXRpYWxpemF0aW9uOioqIFRoaXMgd2lsbCBpbmNsdWRlIGFsbG9jYXRpbmcgYSBwbGF0Zm9ybSBkZXZpY2Ugc3RydWN0LCBmaWxsaW5nIGl0IHdpdGggdGhlIFBDSS1kZXJpdmVkIHJlc291cmNlIGluZm9ybWF0aW9uLCBhbmQgcG9zc2libHkgY2FsbGluZyBpbnRvIHBsYXRmb3JtIGRldmljZSBkcml2ZXJzLiBUaGlzIHdpbGwgdGhlbiBsaWtlbHkgcmVzdWx0IGluIGNhbGxpbmcgYHBsYXRmb3JtX2RldmljZV9hZGRgIG9yIHNpbWlsYXIuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBpbml0aWFsaXphdGlvbnMgYW5kIGNhbGxzIGFyZSBsaW5rZWQgdG8gc2VlIHdoZXJlIHRoZSBkcml2ZXIgaXMgaG9va2VkIHVwLgoqICAgKipETUEgU2V0dXA6KiogSSYjMzk7bSBndWVzc2luZyBpdCB3aWxsIGNvbmZpZ3VyZSBETUEgc2V0dGluZ3MgYW5kIGxpa2VseSBhbGxvY2F0ZSBETUEtYWJsZSBtZW1vcnkgcmVnaW9ucyBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiBhbiBTVE1NQUMsIHRoaXMgaXMgZ29pbmcgdG8gYmUgY2VudHJhbCB0byBoaWdoLXNwZWVkIG9wZXJhdGlvbi4KKiAgICoqSW50ZXJydXB0IEhhbmRsaW5nOioqIFNldHRpbmcgdXAgdGhlIGludGVycnVwdCBoYW5kbGVyIHZpYSB0aGUgUENJIGludGVycnVwdCB2ZWN0b3IgaXMgYSBnaXZlbi4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGhvdyBpdCYjMzk7cyBoYW5kbGVkLCBpbmNsdWRpbmcgaW50ZXJydXB0IG1hc2tpbmcgYW5kIHByaW9yaXR5LgoqICAgKipDbG9ja3MgYW5kIFJlc2V0OioqIEkmIzM5O2xsIGFsc28gZXhwZWN0IGl0IHRvIG1hbmFnZSBjbG9jayBlbmFibGluZy9kaXNhYmxpbmcgZm9yIHRoZSBNQUMgYW5kIHBvdGVudGlhbGx5IGFwcGx5IHJlc2V0cy4gU1RNTUFDcyBvZnRlbiByZXF1aXJlIGNhcmVmdWwgY2xvY2sgbWFuYWdlbWVudC4KKiAgICoqTmV0d29yayBEZXZpY2UgUmVnaXN0cmF0aW9uOioqIEZpbmFsbHksIGl0JiMzOTtsbCBhbG1vc3QgY2VydGFpbmx5IGNhbGwgYHJlZ2lzdGVyX25ldGRldmAgdG8gY3JlYXRlIGEgbmV0d29yayBpbnRlcmZhY2UgYW5kIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBUaGlzIGlzIHRoZSBsYXN0IHN0ZXAgdG8gbWFrZSB0aGUgbmV0d29yayBjb250cm9sbGVyIGF2YWlsYWJsZSB0byB0aGUga2VybmVsIGFuZCB0aGUgdXNlcmxhbmQuCgpJIG5lZWQgdG8gc2VlIHRoZSBpbXBsZW1lbnRhdGlvbiB0byB2ZXJpZnkgdGhlc2UgYXNzdW1wdGlvbnMgYW5kIHRvIGJldHRlciB1bmRlcnN0YW5kIGFueSBudWFuY2VzIG9yIG9wdGltaXphdGlvbnMgdGhlIGRldmVsb3BlcnMgdXNlZC4gSSBoYXZlIGEgbG90IG9mIHByYWN0aWNhbCBleHBlcmllbmNlIGFuZCB0aGlzIHdpbGwgdGVsbCBtZSBpZiB0aGUgY29kZSBpcyBkb2luZyB3aGF0IEkgZXhwZWN0LiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCYjMzk7cyBiZWluZyBkb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDExOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDExODpcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAxMTk6XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuIDEyMDpcdHtcbiAxMjE6XHRcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVx1MDAzZWRyaXZlcl9kYXRhO1xuIDEyMjpcdFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xuIDEyMzpcdFx0c3RydWN0IHN0bW1hY19yZXNvdXJjZXMgcmVzID0ge307XG4gMTI0Olx0XHRpbnQgcmV0O1xuIDEyNTpcdFx0aW50IGk7XG4gMTI2Olx0XG4gMTI3Olx0XHRwbGF0ID0gc3RtbWFjX3BsYXRfZGF0X2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbiAxMjg6XHRcdGlmICghcGxhdClcbiAxMjk6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTMwOlx0XG4gMTMxOlx0XHRwbGF0LVx1MDAzZW1kaW9fYnVzX2RhdGEgPSBkZXZtX2t6YWxsb2MoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4gMTMyOlx0XHRcdFx0XHRcdCAgIHNpemVvZigqcGxhdC1cdTAwM2VtZGlvX2J1c19kYXRhKSxcbiAxMzM6XHRcdFx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4gMTM0Olx0XHRpZiAoIXBsYXQtXHUwMDNlbWRpb19idXNfZGF0YSlcbiAxMzU6XHRcdFx0cmV0dXJuIC1FTk9NRU07XG4gMTM2Olx0XG4gMTM3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZyA9IGRldm1fa3phbGxvYyhcdTAwMjZwZGV2LVx1MDAzZWRldixcbiAxMzg6XHRcdFx0XHRcdFx0ICAgICBzaXplb2YoKnBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcbiAxMzk6XHRcdFx0XHRcdFx0ICAgICBHRlBfS0VSTkVMKTtcbiAxNDA6XHRcdGlmICghcGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmcpXG4gMTQxOlx0XHRcdHJldHVybiAtRU5PTUVNO1xuIDE0MjpcdFxuIDE0MzpcdFx0LyogRW5hYmxlIHBjaSBkZXZpY2UgKi9cbiAxNDQ6XHRcdHJldCA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiAxNDU6XHRcdGlmIChyZXQpIHtcbiAxNDY6XHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7JXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcblwmIzM0OyxcbiAxNDc6XHRcdFx0XHRfX2Z1bmNfXyk7XG4gMTQ4Olx0XHRcdHJldHVybiByZXQ7XG4gMTQ5Olx0XHR9XG4gMTUwOlx0XG4gMTUxOlx0XHQvKiBHZXQgdGhlIGJhc2UgYWRkcmVzcyBvZiBkZXZpY2UgKi9cbiAxNTI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkmIzQzOyYjNDM7KSB7XG4gMTUzOlx0XHRcdGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIGkpID09IDApXG4gMTU0Olx0XHRcdFx0Y29udGludWU7XG4gMTU1Olx0XHRcdHJlcy5hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgaSwgU1RNTUFDX1JFU09VUkNFX05BTUUpO1xuIDE1NjpcdFx0XHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcbiAxNTc6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihyZXMuYWRkcik7XG4gMTU4Olx0XHRcdGJyZWFrO1xuIDE1OTpcdFx0fVxuIDE2MDpcdFxuIDE2MTpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMTYyOlx0XG4gMTYzOlx0XHRyZXQgPSBpbmZvLVx1MDAzZXNldHVwKHBkZXYsIHBsYXQpO1xuIDE2NDpcdFx0aWYgKHJldClcbiAxNjU6XHRcdFx0cmV0dXJuIHJldDtcbiAxNjY6XHRcbiAxNjc6XHRcdHJlcy53b2xfaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY4Olx0XHRyZXMuaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMTY5Olx0XG4gMTcwOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2V0c29lZSA9IDE7XG4gMTcxOlx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VtcnhwZWUgPSAxO1xuIDE3MjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlbWVzdGVlID0gMTtcbiAxNzM6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW1yeGVlID0gMTtcbiAxNzQ6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZW10eGVlID0gMTtcbiAxNzU6XHRcdHBsYXQtXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVx1MDAzZWVwc2kgPSAxO1xuIDE3NjpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNlZWRwcCA9IDE7XG4gMTc3Olx0XHRwbGF0LVx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cdTAwM2VwcnR5ZW4gPSAxO1xuIDE3ODpcdFx0cGxhdC1cdTAwM2VzYWZldHlfZmVhdF9jZmctXHUwMDNldG1vdXRlbiA9IDE7XG4gMTc5Olx0XG4gMTgwOlx0XHRwbGF0LVx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcbiAxODE6XHRcdHBsYXQtXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcbiAxODI6XHRcbiAxODM6XHRcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuIDE4NDpcdH1cbiAxODU6XHRcbiAxODY6XHQvKipcbiAxODc6XHQgKiBzdG1tYWNfcGNpX3JlbW92ZVxuIDE4ODpcdCAqXG4gMTg5Olx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXG4gMTkwOlx0ICogRGVzY3JpcHRpb246IHRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIG1haW4gdG8gZnJlZSB0aGUgbmV0IHJlc291cmNlcy5cbiAxOTE6XHQgKi9cbiAxOTI6XHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAxOTM6XHR7XG4gMTk0Olx0XHRzdG1tYWNfZHZyX3JlbW92ZShcdTAwMjZwZGV2LVx1MDAzZWRldik7XG4gMTk1Olx0fVxuIDE5NjpcdFxuIDE5NzpcdC8qIHN5bnRoZXRpYyBJRCwgbm8gb2ZmaWNpYWwgdmVuZG9yICovXG4gMTk4Olx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1x0XHQweDA3MDBcbiAxOTk6XHRcbiAyMDA6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbiAyMDE6XHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1lOT1BTWVNfR01BQzVfSURcdFx0MHg3MTAyXG4gMjAyOlx0XG4gMjAzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xuIDIwNDpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFx1MDAyNnN0bW1hY19wY2lfaW5mbykgfSxcbiAyMDU6XHRcdHsgUENJX0RFVklDRV9EQVRBKFNUTUlDUk8sIE1BQywgXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxuIDIwNjpcdFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxuIDIwNzpcdFx0e31cbiAyMDg6XHR9O1xuIDIwOTpcdFxuIDIxMDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBzdG1tYWNfaWRfdGFibGUpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBzdG1tYWNfcGNpX2RyaXZlciA9IHtcbiAyMTM6XHRcdC5uYW1lID0gU1RNTUFDX1JFU09VUkNFX05BTUUsXG4gMjE0Olx0XHQuaWRfdGFibGUgPSBzdG1tYWNfaWRfdGFibGUsXG4gMjE1Olx0XHQucHJvYmUgPSBzdG1tYWNfcGNpX3Byb2JlLFxuIDIxNjpcdFx0LnJlbW92ZSA9IHN0bW1hY19wY2lfcmVtb3ZlLFxuIDIxNzpcdFx0LmRyaXZlciAgICAgICAgID0ge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTgyMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBQcm9iZSBGdW5jdGlvbiBDYWxsKioKCkFscmlnaHQsIHRoZSBjb2RlJiMzOTtzIGNhbGxpbmcgYHN0bW1hY19kdnJfcHJvYmVgLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZGl2ZSBpbnRvIHRoYXQgZnVuY3Rpb24sIHNlZSB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iZSByb3V0aW5lIGZvciB0aGlzIFNUTU1BQyBkcml2ZXIuIEkgbmVlZCB0byBzZWUgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLCBpZiBpdCBpcyB1c2luZyBhbnkgb2YgdGhlIGF2YWlsYWJsZSByZXNvdXJjZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZGV2aWNlIHNldHVwIHNob3VsZCBiZS4gTGV0JiMzOTtzIHNlZSBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gZGF0YS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHN0ZXBzIGl0IHRha2VzIHRvIGlkZW50aWZ5LCBpbml0aWFsaXplLCBhbmQgY2xhaW0gdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfZHZyX3Byb2JlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmM9MjgzPXN0YXRpYyBpbnQgZHdjX2V0aF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtMzI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYzozMzA6XHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMzMS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jPTQyPXN0YXRpYyBpbnQgaW50ZWxfZXRoX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwtcGxhdC5jOjExODpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzQxOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgXHUwMDI2cmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTM0Mi1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pcHE4MDZ4LmM9Mzc0PXN0YXRpYyBpbnQgaXBxODA2eF9nbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo0ODM6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jLTQ4NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01NjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU2MjpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2My1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jPTQyPXN0YXRpYyBpbnQgbHBjMTh4eF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYy02Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxwYzE4eHguYzo2ODpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjQyOlx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVkaWF0ZWsuYy02NDMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uLmM9NDc9c3RhdGljIGludCBtZXNvbjZfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYzo3MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jLTc0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NDY0Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lc29uOGIuYy00NjUtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTI5Mz1zdGF0aWMgaW50IG1vdG9yY29tbV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjM1OTpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYwLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM9NDg9c3RhdGljIGludCByem4xX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jOjY4Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02OS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM9MzU9c3RhdGljIGludCBzb3BoZ29fZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jOjY1Olx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXHUwMDI2c3RtbWFjX3Jlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYy02Ni19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYz0xNDc9c3RhdGljIGludCBzcGFjZW1pdF9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3BhY2VtaXQuYzoyMDc6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jLTE1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTUzOlx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTU0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jPTUyNT1zdGF0aWMgaW50IHN0bTMyX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdG0zMi5jOjU3OTpcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXRfZGF0LCBcdTAwMjZzdG1tYWNfcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTgwLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmMtMTIwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwMjpcdC8qIHRoZSBNQUMgaXMgcnVudGltZSBzdXNwZW5kZWQgYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpLCBzbyB3ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAzLVx0ICogbmVlZCB0byBlbnN1cmUgdGhlIE1BQyByZXN1bWUgYmFjayBiZWZvcmUgb3RoZXIgb3BlcmF0aW9ucyBzdWNoXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjA4LVx0LyogVGhlIG11eCBtdXN0IGJlIHJlZ2lzdGVyZWQgYWZ0ZXIgcGFyZW50IE1ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwOTpcdCAqIHNvIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjEwLVx0ICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0zNzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NjpcdGVyciA9IHN0bW1hY19kdnJfcHJvYmUoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHBsYXQsIFx1MDAyNnJlcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3Ny1cdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjM3Olx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9kYXQsIFx1MDAyNnN0bW1hY19yZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYy0yMzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMz12b2lkIHN0bW1hY19kdnJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTQ6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDE1LVx0XHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03Nzg3PUVYUE9SVF9TWU1CT0xfR1BMKHN0bW1hY19wbGF0X2RhdF9hbGxvYyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc3ODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc3ODk6c3RhdGljIGludCBfX3N0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NzkwLVx0XHRcdCAgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MDkxLS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MDkyOiAqIHN0bW1hY19kdnJfcHJvYmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5My0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODEwMC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEwMTppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMDItXHRcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMTI6XHRyZXQgPSBfX3N0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExMy1cdGlmIChyZXQgXHUwMDI2XHUwMDI2IHBsYXRfZGF0LVx1MDAzZWV4aXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTE3LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExODpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZHZyX3Byb2JlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MzpcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwbGF0LCBcdTAwMjZyZXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4NC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9ODQ4PWludCBzdG1tYWNfcGx0ZnJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYzo4NTc6XHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdCwgcmVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jLTg1OC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0MTI2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNzI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgc3RtbWFjIERyaXZlciBhbmQgSWRlbnRpZnlpbmcgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBzdG1tYWNgIGRyaXZlciBjb2RlLCBzcGVjaWZpY2FsbHkgaG93IGl0IGhhbmRsZXMgcXVldWUgc2VsZWN0aW9uLiBJdCBzZWVtcyB0aGF0IGBzdG1tYWNfZHZyX3Byb2JlYCBldmVudHVhbGx5IGNhbGxzIGBfX3N0bW1hY19kdnJfcHJvYmVgLCB3aGljaCByZWdpc3RlcnMgdGhlIG5ldHdvcmsgZGV2aWNlLiBUaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBzeXprYWxsZXJgLCB1c2luZyBgc3l6X3BjaV9kZXZpY2VgIHRvIGluamVjdCBhIFBDSSBkZXZpY2Ugd2l0aCB0aGUgcmlnaHQgdmVuZG9yIGFuZCBkZXZpY2UgSURzLiBUaGlzIG1lYW5zIHdlIGNhbiBkZWZpbml0ZWx5IGdldCB0aGUgZHJpdmVyIHRvIGJpbmQgdG8gdGhpcyBkZXZpY2UgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgbWFwIHRoZSBCQVJzLCByZWdpc3RlciB0aGUgbmV0ZGV2LCBhbmQgdGhlbiwgY3J1Y2lhbGx5LCBzZW5kIHBhY2tldHMgdGhyb3VnaCBpdC4gVGhhdCBnZXRzIHVzIHRvIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYC4gVGhpcyBjb2RlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZS4KCk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQmIzM5O3MgbW9kaWZ5aW5nIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYC4gQmVmb3JlIHRoZSBwYXRjaCwgdGhlIGNvZGUgd291bGQgdXNlIGEgaGFyZGNvZGVkIHZhbHVlIG9mIGAwYCBpZiBUU08vVVNPIHdhcyBpbiB1c2UsIG5vdyBpdCYjMzk7cyBzZWxlY3RpbmcgYSBxdWV1ZSB3aXRoIGBuZXRkZXZfcGlja190eGAgYW5kIHZlcmlmeWluZyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgaXMgcGVybWl0dGVkIGZvciBUU08uIElmIG5vdCwgaXQgZmFsbHMgYmFjayB0byBxdWV1ZSAwLiBTbyBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgY29yZSBsb2dpYy4KCk15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZnV6eiBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIEl0JiMzOTtzIGEgaG90LXBhdGggZnVuY3Rpb247IGl0IGdldHMgY2FsbGVkIGZvciBldmVyeSB0cmFuc21pdHRlZCBwYWNrZXQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCYjMzk7cyBndWlkZWxpbmU6IGF2b2lkIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zLCBwcmlvcml0aXplIG5vbi1zdGF0aWMgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLiBPb3BzISBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgaXMgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQmIzM5O3MgYSBwcm9ibGVtLgoKU28sIEkgbmVlZCB0byBmaW5kIGEgYmV0dGVyIHRhcmdldC4gTWF5YmUgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgPyBMZXQmIzM5O3MgY2hlY2sgaWYgaXQmIzM5O3Mgc3RhdGljLiBUaGF0IHdvdWxkIGJlIGEgYmV0dGVyIHRhcmdldCBmb3IgZnV6emluZyBiYXNlZCBvbiB0aGUgcHJvbXB0JiMzOTtzIGd1aWRlbGluZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zNjA0PXN0YXRpYyB2b2lkIHN0bW1hY19zYWZldHlfZmVhdF9jb25maWd1cmF0aW9uKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MTgtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2MTk6c3RhdGljIGJvb2wgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MjAtXHRcdFx0XHRcdCB1bnNpZ25lZCBpbnQgY2hhbilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2Mzg9c3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTMtXHRcdGZvciAoY2hhbiA9IDA7IGNoYW4gXHUwMDNjIHR4X2NudDsgY2hhbiYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzcxNDpcdFx0XHRpZiAoIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgY2hhbikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTUtXHRcdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQ5ODQ9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNTAwNS1cdGlmIChza2JfaXNfZ3NvKHNrYikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NTAwNjpcdFx0aWYgKCFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSB8fFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA3LVx0XHQgICAgIXN0bW1hY190c29fdmFsaWRfcGFja2V0KHNrYikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02NDQ1PXN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1MS1cdGlmICgoc2tiX3NoaW5mbyhza2IpLVx1MDAzZWdzb190eXBlIFx1MDAyNiBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzKSBcdTAwMjZcdTAwMjZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjQ1MjpcdCAgICAhc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBxdWV1ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1My1cdFx0LyogR1NPIGZyYW1lcyBuZWVkIEhXIFRTTy9VU08sIHdoaWNoIGNhbm5vdCBydW4gb24gVEJTIHF1ZXVlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzYwMjgKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiA0MzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXNpbmcgb24gdGhlIHN0bW1hYyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBhbmFseXppbmcgdGhpcyBwYXRjaC4gRmlyc3QgdGhvdWdodDogYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYnV0IHByb2JhYmx5IG5vdCByZWxldmFudCBoZXJlLiBUaGVuIEkgc2VlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyAqYWxzbyogc3RhdGljLiBIbW0sIGlzICphbnl0aGluZyogbm9uLXN0YXRpYz8gVGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAsIHdoaWNoIGlzIGEgYml0IG9mIGEgY29uY2Vybi4gSXQmIzM5O3MgYSBob3QtcGF0aCBmdW5jdGlvbiBiZWNhdXNlIGl0JiMzOTtzIHVzZWQgYnkgYG5kb19zZWxlY3RfcXVldWVgLiBUaGUgaW5zdHJ1Y3Rpb25zIHNheSB0byBhdm9pZCBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyBpbiBgRm9jdXNTeW1ib2xzYCB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuIElmIEkgZG9uJiMzOTt0IGxpc3QgYW55dGhpbmcsIFN5emthbGxlciB3aWxsIGp1c3QgdXNlIHRoZSBjb3ZlcmFnZSBmcm9tIHRoZSBwYXRjaC4KCldhaXQgYSBzZWNvbmTigKYgdGhlIHByb21wdCAqYWxzbyogd2FudHMgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCwgYW5kIHByZWZlcnMgbm9uLXN0YXRpYyBlbnRyeXBvaW50cy4gSXMgYHN0bW1hY19zZWxlY3RfcXVldWVgIGEgKmdlbmVyaWMqIGhvdC1wYXRoPyBObywgaXQmIzM5O3Mgc3BlY2lmaWMgdG8gdGhlIHN0bW1hYyBkcml2ZXIuIEl0JiMzOTtzIG5vdCBsaWtlIGBkZXZfcXVldWVfeG1pdGAgd2hpY2ggaXMgKnZlcnkqIGdlbmVyaWMuIEV2ZW4gdGhvdWdoIGl0JiMzOTtzIGhvdC1wYXRoIGZvciAqdGhpcyogZHJpdmVyLCBpdCYjMzk7cyBub3QgYSBrZXJuZWwtd2lkZSBib3R0bGVuZWNrLgoKTGV0IG1lIHRoaW5r4oCmIGlzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbiBpbXBhY3RlZD8gTm8sIGp1c3QgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBPa2F5LCBvbmUgbW9yZSBjaGVjazogaXMgaXQgaW5saW5lZD8gU2luY2UgaXQmIzM5O3MgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgbmRvX3NlbGVjdF9xdWV1ZWAsIGl0JiMzOTtzICpub3QqIGlubGluZWQuIFBlcmZlY3QuIEkmIzM5O2xsIGxpc3QgYHN0bW1hY19zZWxlY3RfcXVldWVgIGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0JiMzOTtzIHRoZSByaWdodCBjaG9pY2UuCgpOb3csIGZvciBDT05GSUdzLiBXaGF0IGRvIEkgbmVlZCB0byBhY3R1YWxseSAqdGVzdCogdGhpcyB2aWEgUENJPyBJIHRoaW5rIGl0JiMzOTtzIGBDT05GSUdfU1RNTUFDX0VUSGAgYW5kIGBDT05GSUdfU1RNTUFDX1BDSWAsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBqdXN0IHRvIGJlIGNlcnRhaW4gb2YgdGhlIGV4YWN0IG5hbWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDXyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjA6Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIFNUTU1BQyBTZWxmdGVzdHNcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNzM6Y29uZmlnIFNUTU1BQ19MSUJQQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NDQ2CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkFuYWx5emluZyBTVE1NQUMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gSSBzZWUgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGVpciByZWxhdGlvbnNoaXAuIEFoLCBhIGRlcGVuZGVuY3khIGBTVE1NQUNfUENJYCByZWxpZXMgb24gYm90aCBgUENJYCBhbmQgYFNUTU1BQ19FVEhgLiBHaXZlbiBteSBleHBlcnRpc2UsIEkgYWxyZWFkeSBrbm93IHdoYXQgaW1wbGljYXRpb25zIGEgZGVwZW5kZW5jeSBsaWtlIHRoaXMgaGFzLiBJdCYjMzk7cyB0aW1lIHRvIGRpdmUgZGVlcGVyIGFuZCBjbGFyaWZ5IHRoZSBuYXR1cmUgb2YgdGhlc2UgcmVsYXRpb25zaGlwcywgc28gbGV0IG1lIGltbWVkaWF0ZWx5IGNoZWNrIHRoZSBzcGVjaWZpY3Mgc3Vycm91bmRpbmcgYFNUTU1BQ19QQ0lgIGFuZCBpdHMgZGVwZW5kZW5jaWVzLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGhhcmQgZGVwZW5kZW5jeSwgYSBzb2Z0IG9uZSwgYW5kIHdoYXQgY29uc2VxdWVuY2VzIHRoZSBvdGhlciBjb25maWd1cmF0aW9ucyB3aWxsIGJyaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU1RNTUFDX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3ODA2CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIFNUTU1BQyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSB0aGlua2luZywgbGluZSA0MDcgc2VlbXMgbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQsIGdpdmVuIHRoZSBnZW5lcmFsIHN0cnVjdHVyZSBvZiB0aGVzZSBmaWxlcy4gVGhhdCBzZWN0aW9uIGlzIGxpa2VseSBnb2luZyB0byBob2xkIHNvbWUgaW1wb3J0YW50IGNsdWVzIGFib3V0IHdoYXQgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSwgaG93IHRoZXkmIzM5O3JlIGVuYWJsZWQsIGFuZCBwb3RlbnRpYWxseSBhbnkgZGVwZW5kZW5jaWVzIG9yIGJ1aWxkLXRpbWUgY29uc2lkZXJhdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBTVE1pY3JvZWxlY3Ryb25pY3MgTUFDIGNvbnRyb2xsZXIgaW1wbGVtZW50YXRpb24uIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0JiMzOTtzIGdldCB0byB0aGUgc3BlY2lmaWNzIGFuZCBzZWUgd2hhdCYjMzk7cyBvbiBvZmZlciB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAzOTU6XHRcdCAgVGhpcyBzZWxlY3RzIHRoZSBMT09OR1NPTiBQQ0kgYnVzIHN1cHBvcnQgZm9yIHRoZSBzdG1tYWMgZHJpdmVyLFxuIDM5NjpcdFx0ICBTdXBwb3J0IGZvciBldGhlcm5ldCBjb250cm9sbGVyIG9uIExvb25nc29uLTJLMTAwMCBTb0MgYW5kIExTN0ExMDAwIGJyaWRnZS5cbiAzOTc6XHRcbiAzOTg6XHRjb25maWcgRFdNQUNfTU9UT1JDT01NXG4gMzk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcJiMzNDtcbiA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4Mzc3CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNUTU1BQyBDb25maWd1cmF0aW9uIE9wdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIFNUTU1BQyBjb25maWd1cmF0aW9ucyDigJMgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCBsZXQmIzM5O3MgZGlzc2VjdCB0aGUgZGVwZW5kZW5jaWVzLiYjMzQ7IFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgU1RNTUFDX0VUSGAgcmVsaWVzIG9uLiBBaCwgaGVyZSB3ZSBhcmU6IGBTVE1NQUNfRVRIYCBoYXMgYSBkZXBlbmRlbmN5IG9uIGJvdGggYEhBU19JT01FTWAgYW5kIGBIQVNfRE1BYC4gR290IGl0LiBOb3csIEkgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhvc2UuIFdoYXQgaXMgYWN0dWFsbHkgKnJlcXVpcmluZyogdGhvc2Ugb3B0aW9ucz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyBgU1RNTUFDX0VUSGAsIGFuZCB0aG9zZSBkZXBlbmRlbmNpZXMgYXJlIHRoZSBjcml0aWNhbCBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4NzkKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiA0NjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU1RNTUFDIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLCBhbmQgSSB0aGluayBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBpdC4gVGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBmdW5jdGlvbi4gSXQmIzM5O3MgY2xlYXIgdGhhdCB0aGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgZWl0aGVyIHRocm91Z2ggUENJIChgU1RNTUFDX1BDSWApIG9yIHBsYXRmb3JtIGRldmljZXMuIEFuZCBTeXprYWxsZXIgY2FuIHRlc3QgaXQgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBvciBgc3l6X3BsYXRmb3JtX2RldmljZWAsIHdoaWNoIGlzIGdvb2QuCgpUaGUgZnVuY3Rpb25hbCBpbXBhY3Qgc2VlbXMgdG8gYmUgYSBjaGFuZ2UgaW4gaG93IHRoZSBkcml2ZXIgaGFuZGxlcyBxdWV1ZSBzZWxlY3Rpb24gc3BlY2lmaWNhbGx5IGZvciBHU08gZnJhbWVzLiBUaGF0IG1ha2VzIGl0IHdvcnRoIGZ1enppbmcsIGRlZmluaXRlbHkuCgpUaGUgcXVlc3Rpb24gdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcyB3aGV0aGVyIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgaXQmIzM5O3MgY2FsbGVkIGZvciBldmVyeSB0cmFuc21pdHRlZCBwYWNrZXQsIGl0ICppcyogYSBob3QtcGF0aC4gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgd2FybnMgYWdhaW5zdCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIGF2b2lkIGJpYXNpbmcgdGhlIHRlc3RpbmcuIEhvd2V2ZXIsIGFmdGVyIHRoaW5raW5nIGl0IHRocm91Z2gsIEkmIzM5O3ZlIGRlY2lkZWQgdG8gbGlzdCBpdC4gSXQmIzM5O3Mgbm90IGEgZ2VuZXJpYyBrZXJuZWwgZnVuY3Rpb24gbGlrZSBgZGV2X3F1ZXVlX3htaXRgIG9yIGBrbWFsbG9jYC4gSXQmIzM5O3MgKnNwZWNpZmljKiB0byB0aGUgU1RNTUFDIGRyaXZlciwgYW5kIGl0JiMzOTtzIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQmIzM5O3MgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBFdmVuIGlmIFN5emthbGxlciB3aWxsIHBpY2sgaXQgdXAgdGhyb3VnaCBjb3ZlcmFnZSB3aXRob3V0IGxpc3RpbmcgaXQsIGV4cGxpY2l0bHkgY2FsbGluZyBpdCBvdXQgZm9jdXNlcyB0aGUgZnV6emluZy4KCkkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkLCBhbmQgeWVzLCBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgaXMgdGhlICpvbmx5KiBmdW5jdGlvbiBjaGFuZ2VkLgoKU28sIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgZm9sbG93aW5nOgoKKiAgICoqV29ydGhGdXp6aW5nOiBUcnVlKioKKiAgICoqRm9jdXNTeW1ib2xzOiBcWyYjMzQ7c3RtbWFjXF9zZWxlY3RcX3F1ZXVlJiMzNDtcXSoqCiogICAqKkVuYWJsZUNvbmZpZ3M6IFxbJiMzNDtTVE1NQUNcX0VUSCYjMzQ7LCAmIzM0O1NUTU1BQ1xfUENJJiMzNDtcXSoqCiogICAqKlJlYXNvbmluZzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBmb3IgR1NPIGZyYW1lcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIERXTUFDIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBQQ0kgYW5kIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDsqKgoKVGhhdCBzaG91bGQgY292ZXIgZXZlcnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZWxlY3RfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBmb3IgR1NPIGZyYW1lcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIERXTUFDIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBQQ0kgYW5kIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY19zZWxlY3RfcXVldWUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHF1ZXVlIHNlbGVjdGlvbiBsb2dpYyBmb3IgR1NPIGZyYW1lcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIERXTUFDIGRyaXZlci4gVGhlIGRyaXZlciBjYW4gYmUgcHJvYmVkIHZpYSBQQ0kgYW5kIHRlc3RlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA3IDE1OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZWxlY3RpbmcgYSB0cmFuc21pc3Npb24gcXVldWUgZm9yIG5ldHdvcmsgcGFja2V0cyAoc2tfYnVmZikgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIEl0IGNoZWNrcyB0aGUgYGdzb190eXBlYCBvZiB0aGUgcGFja2V0IGFnYWluc3QgYHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgcXVldWUgc2VsZWN0aW9uIG9yIG91dC1vZi1ib3VuZHMgcXVldWUgaW5kaWNlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE5ZjUzZWM0NGY2ODIyMmIxMjAyMTY4NGNhMDZhMDA4YzE0ZGQxYwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDcgMTU6MzQ6MTkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYwppbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTY0NDUsMTkgJiM0Mzs2NDQ1LDE4IEBAIHN0YXRpYyBpbnQgc3RtbWFjX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSwKIHN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpCiB7Ci0JaW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS0mZ3Q7Z3NvX3R5cGU7CiYjNDM7CXUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi0mZ3Q7cmVhbF9udW1fdHhfcXVldWVzOwomIzQzOwlzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwogCi0JaWYgKGdzbyAmYW1wOyAoU0tCX0dTT19UQ1BWNCB8IFNLQl9HU09fVENQVjYgfCBTS0JfR1NPX1VEUF9MNCkpIHsKLQkJLyoKLQkJICogVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIFRTTy9VU08KLQkJICogY2FwYWJsZSBRdWV1ZXMuIExldCYjMzk7cyB1c2UgYWx3YXlzIHRoZSBRdWV1ZSAwCi0JCSAqIGJlY2F1c2UgaWYgVFNPL1VTTyBpcyBzdXBwb3J0ZWQgdGhlbiBhdCBsZWFzdCB0aGlzCi0JCSAqIG9uZSB3aWxsIGJlIGNhcGFibGUuCiYjNDM7CWlmICgoc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZSAmYW1wOyBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlcykgJmFtcDsmYW1wOwomIzQzOwkgICAgIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpKSB7CiYjNDM7CQkvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLgomIzQzOwkJICogRmFsbCBiYWNrIHRvIHRoZSBxdWV1ZSByZXNlcnZlZCBmb3IgVFNPIChxdWV1ZSAwKS4KIAkJICovCiAJCXJldHVybiAwOwogCX0KIAotCXJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtJmd0O3JlYWxfbnVtX3R4X3F1ZXVlczsKJiM0MzsJcmV0dXJuIHF1ZXVlOwogfQogCiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzUzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgc3RtbWFjIFF1ZXVlIFNlbGVjdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHN0bW1hY19zZWxlY3RfcXVldWVgIHdpdGhpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IGRyaXZlci4gVGhlIGNvcmUgb2YgdGhpcyBmdW5jdGlvbiBpcyBhYm91dCBkZXRlcm1pbmluZyB3aGljaCB0cmFuc21pdCBxdWV1ZSBhIGdpdmVuIGBza19idWZmYCAoc29ja2V0IGJ1ZmZlcikgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY2hhbmdlIGluIGxvZ2ljIGFuZCBpdHMgcG90ZW50aWFsIGltcGxpY2F0aW9ucywgcGFydGljdWxhcmx5IGluIHRlcm1zIG9mIG1lbW9yeSBzYWZldHkgYW5kIHBlcmZvcm1hbmNlLgoKVGhlIG9yaWdpbmFsIGNvZGUmIzM5O3MgYXBwcm9hY2ggd2FzIHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlIGBza19idWZmYCBpbmRpY2F0ZWQgaXQgd2FzIGEgR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCAoR1NPKSBwYWNrZXQgKHNwZWNpZmljYWxseSBUQ1B2NCwgVENQdjYsIG9yIFVEUCBMNCksIGl0IHdvdWxkICphbHdheXMqIGRlZmF1bHQgdG8gcXVldWUgMC4gT3RoZXJ3aXNlLCBpdCB3b3VsZCB1c2UgYG5ldGRldl9waWNrX3R4YCB0byBzZWxlY3QgYSBxdWV1ZSwgbW9kdWxvIHRoZSBudW1iZXIgb2YgcmVhbCB0cmFuc21pdCBxdWV1ZXMuIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgYXNzaWduaW5nIGEgcXVldWUgaW4gYSByb3VuZCByb2JpbiBmYXNoaW9uLCB3aGlsZSBwcmlvcml0aXppbmcgVFNPIHRyYWZmaWMgdG8gYSBzaW5nbGUgcXVldWUuCgpUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG1vcmUgbnVhbmNlZCBhcHByb2FjaC4gTm93LCB0aGUgbG9naWMgY2hlY2tzIGlmIGEgZmV3IGNvbmRpdGlvbnMgaG9sZDoKMS4gIFRoZSBgc2tfYnVmZmAgaXMgYSBHU08gcGFja2V0ICh3aGljaCBpcyB1bmNoYW5nZWQpLgoyLiAgVGhlIGBnc29fdHlwZWAgd2l0aGluIHRoZSBgc2tfYnVmZmAgbWF0Y2hlcyB0aGUgYHByaXYtJmd0O2dzb19lbmFibGVkX3R5cGVzYCBhbmQKMy4gIFRoZSBwcm9wb3NlZCBxdWV1ZSBpcyBOT1QgcGVybWl0dGVkIGZvciBUU08uCgpJZiB0aG9zZSB0aHJlZSBjb25kaXRpb25zIGhvbGQsIHRoZSBmdW5jdGlvbiBmYWxscyBiYWNrIHRvIHF1ZXVlIDAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUgaXMgc29tZSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gVFNPIChUQ1AgU2VnbWVudGF0aW9uIE9mZmxvYWQpIG9yIFVTTyAoVURQIFNlZ21lbnRhdGlvbiBPZmZsb2FkKSBjYXBhYmlsaXRpZXMuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgcGFja2V0IGlzIGEgR1NPIHBhY2tldCBvZiBhIHR5cGUgaGFuZGxlZCBieSBoYXJkd2FyZSBUU08vVVNPLCBhbmQgdGhlIGNob3NlbiBxdWV1ZSBkb2VzIG5vdCBzdXBwb3J0IGhhcmR3YXJlIFRTTy9VU08sIHRoZW4gcXVldWUgMCBpcyBjaG9zZW4uCgpNeSBtYWluIGNvbmNlcm4gaXMgYWx3YXlzIG1lbW9yeSBzYWZldHkuIEhvd2V2ZXIsIGFmdGVyIHJldmlld2luZyB0aGUgY29kZSwgaXQgc2VlbXMgdGhlIHBhdGNoIGlzIHF1aXRlIGxvY2FsaXplZC4gTm8gbmV3IGRhdGEgc3RydWN0dXJlcyBhcmUgYmVpbmcgYWxsb2NhdGVkLCBhbmQgbm8ga2VybmVsIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXIgc3BhY2UuIEl0IG9ubHkgcmVhZHMgdGhlIHZhbHVlcyBpbiBgc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZWAgYW5kIGBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlc2AuIFRoZSBgc2tiX3NoaW5mbyhza2IpLSZndDtnc29fdHlwZWAgaXMgcG9wdWxhdGVkIGJ5IHRoZSBuZXR3b3JraW5nIHN0YWNrIHNvIGl0JiMzOTtzIGd1YXJhbnRlZWQgdG8gYmUgaW5pdGlhbGl6ZWQuIGBwcml2LSZndDtnc29fZW5hYmxlZF90eXBlc2AgaXMgZHJpdmVyLWluaXRpYWxpemVkLiBUaGUgdmFsdWVzIHdpbGwgYWxyZWFkeSBleGlzdCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIFNvLCBmcm9tIGEgcXVpY2sgaW5zcGVjdGlvbiwgdGhlcmUgYXJlIG5vIGltbWVkaWF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIHBhdGNoIHNpbXBseSBtb2RpZmllcyAqaG93KiBhIHF1ZXVlIGlzIHNlbGVjdGVkLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgY2FuIGJlIHNldCB0byBmYWxzZS4KClRvIGJlIGFic29sdXRlbHkgc3VyZSwgaXQmIzM5O3Mgd29ydGggYSBxdWljayBsb29rIGF0IGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkYCB0byBjb25maXJtIHRoYXQgaXQgZG9lcyBub3QgaGF2ZSBhbnkgcG90ZW50aWFsIGZvciBtZW1vcnkgc2FmZXR5IGlzc3Vlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2MDQ9c3RhdGljIHZvaWQgc3RtbWFjX3NhZmV0eV9mZWF0X2NvbmZpZ3VyYXRpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYxOC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzYxOTpzdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYyMC1cdFx0XHRcdFx0IHVuc2lnbmVkIGludCBjaGFuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYzOD1zdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxMy1cdFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcdTAwM2MgdHhfY250OyBjaGFuJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNzE0Olx0XHRcdGlmICghc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBjaGFuKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxNS1cdFx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDk4ND1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA1LVx0aWYgKHNrYl9pc19nc28oc2tiKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo1MDA2Olx0XHRpZiAoIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTUwMDctXHRcdCAgICAhc3RtbWFjX3Rzb192YWxpZF9wYWNrZXQoc2tiKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY0NDU9c3RhdGljIHUxNiBzdG1tYWNfc2VsZWN0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDUxLVx0aWYgKChza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGUgXHUwMDI2IHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDUyOlx0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02NDUzLVx0XHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNyAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzgyCgkJCQkJCQlvdXRwdXQ6IDE5OQoJCQkJCQkJdGhvdWdodHM6IDU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkYCBmdW5jdGlvbi4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWxtb3N0IGNlcnRhaW5seSBqdXN0IGEgYm9vbGVhbiBjaGVjay4gSSYjMzk7bSBndWVzc2luZyBpdCYjMzk7cyBwcm9iaW5nIHNvbWUgY29uZmlndXJhdGlvbiBmbGFnIHJlbGF0ZWQgdG8gd2hldGhlciB0aGUgY2hhbm5lbCBpcyBzZXQgdXAgZm9yIFRpbWUgQmFzZWQgU2NoZWR1bGluZywgb3Igc29tZXRoaW5nIGFuYWxvZ291cy4gTm8gcmVkIGZsYWdzIGhlcmUg4oCTIEkmIzM5O20gbm90IHNlZWluZyBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB0b3VjaGVkLCB3aGljaCBpcyBhbHdheXMgYSByZWxpZWYuIEdpdmVuIHRoYXQsIEkmIzM5O20gY29uZmlkZW50IHdlIGNhbiBzYWZlbHkgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEl0IGxvb2tzIGxpa2Ugd2UmIzM5O3JlIGluIHRoZSBjbGVhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDcgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZWxlY3RpbmcgYSB0cmFuc21pc3Npb24gcXVldWUgZm9yIG5ldHdvcmsgcGFja2V0cyAoc2tfYnVmZikgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIEl0IGNoZWNrcyB0aGUgYGdzb190eXBlYCBvZiB0aGUgcGFja2V0IGFnYWluc3QgYHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgcXVldWUgc2VsZWN0aW9uIG9yIG91dC1vZi1ib3VuZHMgcXVldWUgaW5kaWNlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2VsZWN0aW5nIGEgdHJhbnNtaXNzaW9uIHF1ZXVlIGZvciBuZXR3b3JrIHBhY2tldHMgKHNrX2J1ZmYpIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBjaGVja3MgdGhlIGBnc29fdHlwZWAgb2YgdGhlIHBhY2tldCBhZ2FpbnN0IGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBhbmQgdmVyaWZpZXMgaWYgdGhlIHNlbGVjdGVkIHF1ZXVlIHBlcm1pdHMgVFNPIHZpYSBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZCgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIHNlbGVjdGlvbiBiYXNlZCBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGZpZWxkcyBpbiB0aGUgYHNrX2J1ZmZgIGFuZCB0aGUgZHJpdmVyJiMzOTtzIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IHF1ZXVlIHNlbGVjdGlvbiBvciBvdXQtb2YtYm91bmRzIHF1ZXVlIGluZGljZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjE5Ljk2NjAyODUwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTM5OTQ3MDg2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3NlbGVjdF9xdWV1ZVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGxvZ2ljIGZvciBzZWxlY3RpbmcgYSB0cmFuc21pc3Npb24gcXVldWUgZm9yIG5ldHdvcmsgcGFja2V0cyAoc2tfYnVmZikgaW4gdGhlIHN0bW1hYyBkcml2ZXIuIEl0IGNoZWNrcyB0aGUgYGdzb190eXBlYCBvZiB0aGUgcGFja2V0IGFnYWluc3QgYHByaXYtXFx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBhbmQgdmVyaWZpZXMgaWYgdGhlIHNlbGVjdGVkIHF1ZXVlIHBlcm1pdHMgVFNPIHZpYSBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZCgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGFmZmVjdCBjb250cm9sIGZsb3cgYW5kIHF1ZXVlIHNlbGVjdGlvbiBiYXNlZCBvbiBhbHJlYWR5IGluaXRpYWxpemVkIGZpZWxkcyBpbiB0aGUgYHNrX2J1ZmZgIGFuZCB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4gVGhlcmUgYXJlIG5vIG5ldyBhbGxvY2F0aW9ucywgbm8gc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgcXVldWUgc2VsZWN0aW9uIG9yIG91dC1vZi1ib3VuZHMgcXVldWUgaW5kaWNlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGZvciBHU08gZnJhbWVzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIFBDSSBhbmQgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzQ6MTkuOTY2MDMzOTI2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MjIxNjU5NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwMTlmNTNlYzQ0ZjY4MjIyYjEyMDIxNjg0Y2EwNmEwMDhjMTRkZDFjXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDcgMTU6MzQ6MTkgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuQEAgLTY0NDUsMTkgKzY0NDUsMTggQEAgc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxcbiBzdGF0aWMgdTE2IHN0bW1hY19zZWxlY3RfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpXFxuIHtcXG4tXFx0aW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3R5cGU7XFxuK1xcdHUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi1cXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xcbitcXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiBcXG4tXFx0aWYgKGdzbyBcXHUwMDI2IChTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNiB8IFNLQl9HU09fVURQX0w0KSkge1xcbi1cXHRcXHQvKlxcbi1cXHRcXHQgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgVFNPL1VTT1xcbi1cXHRcXHQgKiBjYXBhYmxlIFF1ZXVlcy4gTGV0J3MgdXNlIGFsd2F5cyB0aGUgUXVldWUgMFxcbi1cXHRcXHQgKiBiZWNhdXNlIGlmIFRTTy9VU08gaXMgc3VwcG9ydGVkIHRoZW4gYXQgbGVhc3QgdGhpc1xcbi1cXHRcXHQgKiBvbmUgd2lsbCBiZSBjYXBhYmxlLlxcbitcXHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3R5cGUgXFx1MDAyNiBwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xcbitcXHRcXHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxcbitcXHRcXHQgKiBGYWxsIGJhY2sgdG8gdGhlIHF1ZXVlIHJlc2VydmVkIGZvciBUU08gKHF1ZXVlIDApLlxcbiBcXHRcXHQgKi9cXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdHJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXFx1MDAzZXJlYWxfbnVtX3R4X3F1ZXVlcztcXG4rXFx0cmV0dXJuIHF1ZXVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjIwLjM4ODk3MjkzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEyOTIxMDE4NjkzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3NlbGVjdF9xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwMTlmNTNlYzQ0ZjY4MjIyYjEyMDIxNjg0Y2EwNmEwMDhjMTRkZDFjXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgNyAxNTozNDoxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCBiMmI3ZDAyNDJkZDNjLi45OWZjNzMxM2YyNDdlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xuQEAgLTY0NDUsMTkgKzY0NDUsMTggQEAgc3RhdGljIGludCBzdG1tYWNfc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuIHN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqc2JfZGV2KVxuIHtcbi1cdGludCBnc28gPSBza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGU7XG4rXHR1MzIgcXVldWUgPSBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuK1x0c3RydWN0IHN0bW1hY19wcml2ICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiBcbi1cdGlmIChnc28gXHUwMDI2IChTS0JfR1NPX1RDUFY0IHwgU0tCX0dTT19UQ1BWNiB8IFNLQl9HU09fVURQX0w0KSkge1xuLVx0XHQvKlxuLVx0XHQgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgVFNPL1VTT1xuLVx0XHQgKiBjYXBhYmxlIFF1ZXVlcy4gTGV0J3MgdXNlIGFsd2F5cyB0aGUgUXVldWUgMFxuLVx0XHQgKiBiZWNhdXNlIGlmIFRTTy9VU08gaXMgc3VwcG9ydGVkIHRoZW4gYXQgbGVhc3QgdGhpc1xuLVx0XHQgKiBvbmUgd2lsbCBiZSBjYXBhYmxlLlxuK1x0aWYgKChza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGUgXHUwMDI2IHByaXYtXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMpIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xuK1x0XHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxuK1x0XHQgKiBGYWxsIGJhY2sgdG8gdGhlIHF1ZXVlIHJlc2VydmVkIGZvciBUU08gKHF1ZXVlIDApLlxuIFx0XHQgKi9cbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRyZXR1cm4gbmV0ZGV2X3BpY2tfdHgoZGV2LCBza2IsIE5VTEwpICUgZGV2LVx1MDAzZXJlYWxfbnVtX3R4X3F1ZXVlcztcbitcdHJldHVybiBxdWV1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBzdG1tYWNfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCB2b2lkICphZGRyKVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzQ6MjAuMzg4OTc0NTczWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg0MzYwNzE0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIGBzdG1tYWNgIFF1ZXVlIFNlbGVjdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBmbG9hdGluZyBhcm91bmQgdGhhdCdzIHR3ZWFraW5nIGhvdyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgd29ya3MsIHNwZWNpZmljYWxseSBmb3IgR1NPIGZyYW1lcyBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIFRoZSBjb3JlIGNoYW5nZSBzZWVtcyB0byBiZSBhcm91bmQgcXVldWUgc2VsZWN0aW9uOyBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IG9mIHJldHVybmluZyBxdWV1ZSAwIGZvciBHU08gZnJhbWVzLCBpdCdzIGF0dGVtcHRpbmcgdG8gc2VsZWN0IGEgcXVldWUuIEFuZCBvbmx5IGlmIHRoZSBjaG9zZW4gcXVldWUgaXNuJ3Qgc3VpdGFibGUgZm9yIFRTTyBkb2VzIGl0IGZhbGxiYWNrIHRvIHF1ZXVlIDAuXG5cbk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzLiAgQSBjcml0aWNhbCBxdWVzdGlvbiBoZXJlIGlzLCBjYW4gSSByZWFkaWx5IHRlc3QgdGhpcyBjaGFuZ2UgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gIGBzdG1tYWNgLCBhcyBJIHJlY2FsbCwgaXMgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBkcml2ZXIgZm9yIDEwLzEwMC8xMDAwL0VRT1MuIElzIGl0IGVtdWxhdGVkIGJ5IFFFTVU/IEkgZG9uJ3QgdGhpbmsgUUVNVSAqbmF0aXZlbHkqIGVtdWxhdGVzIGBzdG1tYWNgLiBJIGhhdmUgdG8gZGlnIGEgYml0LiBQZXJoYXBzIGl0J3MgcHJlc2VudCBpbiBhbiBlbXVsYXRlZCBBUk0gYm9hcmQgd2l0aGluIFFFTVUuIE9yIHBlcmhhcHMgaXQncyBub3QgZXZlbiB0ZXN0YWJsZSB0aGVyZS5cblxuSG1tLCBsZXQncyBzZWUgd2hhdCdzIGluIFFFTVUncyBuZXR3b3JrIGRldmljZSBsaXN0OiBgaHcvbmV0L2lteF9mZWMuY2AsIGBody9uZXQvY2FkZW5jZV9nZW0uY2AsIGBody9uZXQvYWxsd2lubmVyLXN1bjhpLWVtYWMuY2AsIGBody9uZXQvZnRnbWFjMTAwLmNgLCBgaHcvbmV0L25wY203eHhfZW1jLmNgLCBgaHcvbmV0L3NtYzkxYzExMS5jYCwgYGh3L25ldC9sYW45MTE4LmNgLCBgaHcvbmV0L3hnbWFjLmNgIChIaWdoYmFuay9NaWR3YXkpLiBXYWl0LCBjb3VsZCBgeGdtYWNgIGJlIGBzdG1tYWNgIGluIGRpc2d1aXNlPyAgTm8sIG5vLCB0aGF0J3Mgbm90IHJpZ2h0LiBgeGdtYWNgIHNlZW1zIHRvIGJlIGVpdGhlciBDYWx4ZWRhIG9yIFNUTWljcm9lbGVjdHJvbmljcydzIERXTUFDLlxuXG5SaWdodCwgc28gdG8gY29udGludWUgdGhpcyBhc3Nlc3NtZW50LCBsZXQncyBjaGVjayBpdHMgZGV2aWNlIGJpbmRpbmc6IGlzIGBzdG1tYWNgIGEgUENJIGRldmljZSBvciBhIHBsYXRmb3JtIGRldmljZT8gQWhhISBJdCBoYXMgUENJIGJpbmRpbmdzISBUaGF0J3MgZ29vZCBuZXdzOyBpdCBpbXByb3ZlcyB0aGUgY2hhbmNlcyBvZiB0ZXN0aW5nLiBJJ2xsIG5lZWQgdG8gZXhhbWluZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjI5LjIzMjU4NDAwNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg4NDk2MTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19wY2lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdD0xMDc9c3ludGF4IChlLmcuIGZvciBQQ0kgbW9kdWxlKTo6XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdC0xMDgtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLnJzdDoxMDk6ICAgIG1vZHByb2JlIHN0bW1hY19wY2kgW1xcdTAwM2NvcHRpb25cXHUwMDNlPVxcdTAwM2NWQUwxXFx1MDAzZSxcXHUwMDNjVkFMMlxcdTAwM2UsLi4uXVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy5yc3QtMTEwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9NTM9b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjU0OnN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0yNT1zdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMzktICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo0MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDEtXFx0dW5zaWduZWQgaW50IGZ1bmM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDU6c3RydWN0IHN0bW1hY19wY2lfZG1pX2RhdGEge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6NDY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDctXFx0c2l6ZV90IG5mdW5jcztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo1MDpzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTUxLVxcdGludCAoKnNldHVwKShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTE9c3RhdGljIGNvbnN0IGludCBhZGxuX3Rzbl9sYW5lX3JlZ3NbXSA9IHs2fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTM6c3RhdGljIGludCBzdG1tYWNfcGNpX2ZpbmRfcGh5X2FkZHIoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NC1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IGRtaV9zeXN0ZW1faWQgKmRtaV9saXN0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTY6XFx0Y29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhICpmdW5jX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NzpcXHRjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSAqZG1pX2RhdGE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05OC1cXHRjb25zdCBzdHJ1Y3QgZG1pX3N5c3RlbV9pZCAqZG1pX2lkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz03ODY9c3RhdGljIGludCBlaGxfc2dtaWlfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6ODA2OnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGVobF9zZ21paTFnX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MDctXFx0LnNldHVwID0gZWhsX3NnbWlpX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTgxMD1zdGF0aWMgaW50IGVobF9yZ21paV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4MjE6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3JnbWlpMWdfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTgyMi1cXHQuc2V0dXAgPSBlaGxfcmdtaWlfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODQxPXN0YXRpYyBpbnQgZWhsX3BzZTBfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NDg6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODQ5LVxcdC5zZXR1cCA9IGVobF9wc2UwX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODUyPXN0YXRpYyBpbnQgZWhsX3BzZTBfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04NjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4NzA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTBfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODcxLVxcdC5zZXR1cCA9IGVobF9wc2UwX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9ODkwPXN0YXRpYyBpbnQgZWhsX3BzZTFfcmdtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy04OTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo4OTc6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfcmdtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtODk4LVxcdC5zZXR1cCA9IGVobF9wc2UxX3JnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTAxPXN0YXRpYyBpbnQgZWhsX3BzZTFfc2dtaWkxZ19kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05MTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5MTk6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gZWhsX3BzZTFfc2dtaWkxZ19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTIwLVxcdC5zZXR1cCA9IGVobF9wc2UxX3NnbWlpMWdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTQ0PXN0YXRpYyBpbnQgdGdsX3NnbWlpX3BoeTBfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6OTUzOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHRnbF9zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk1NC1cXHQuc2V0dXAgPSB0Z2xfc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz05NTc9c3RhdGljIGludCB0Z2xfc2dtaWlfcGh5MV9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5NjY6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gdGdsX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTY3LVxcdC5zZXR1cCA9IHRnbF9zZ21paV9waHkxX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTk3MD1zdGF0aWMgaW50IGFkbHNfc2dtaWlfcGh5MF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy05NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo5ODA6c3RhdGljIHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gYWRsc19zZ21paTFnX3BoeTBfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk4MS1cXHQuc2V0dXAgPSBhZGxzX3NnbWlpX3BoeTBfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9OTg0PXN0YXRpYyBpbnQgYWRsc19zZ21paV9waHkxX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTk5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjk5NDpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBhZGxzX3NnbWlpMWdfcGh5MV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtOTk1LVxcdC5zZXR1cCA9IGFkbHNfc2dtaWlfcGh5MV9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz0xMDIzPXN0YXRpYyBpbnQgYWRsbl9zZ21paV9waHkwX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGFkbG5fc2dtaWkxZ19waHkwX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQzLVxcdC5zZXR1cCA9IGFkbG5fc2dtaWlfcGh5MF9kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDQ1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfZnVuY19kYXRhIGdhbGlsZW9fc3RtbWFjX2Z1bmNfZGF0YVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA0Ny1cXHR7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDUzOnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9kbWlfZGF0YSBnYWxpbGVvX3N0bW1hY19kbWlfZGF0YSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTQtXFx0LmZ1bmMgPSBnYWxpbGVvX3N0bW1hY19mdW5jX2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEwNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMDU4OnN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9mdW5jX2RhdGEgaW90MjA0MF9zdG1tYWNfZnVuY19kYXRhW10gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMDU5LVxcdHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA2OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEwNjk6c3RhdGljIGNvbnN0IHN0cnVjdCBzdG1tYWNfcGNpX2RtaV9kYXRhIGlvdDIwNDBfc3RtbWFjX2RtaV9kYXRhID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTA3MC1cXHQuZnVuYyA9IGlvdDIwNDBfc3RtbWFjX2Z1bmNfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTEwOT1zdGF0aWMgaW50IHF1YXJrX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTExOS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjExMjA6XFx0cmV0ID0gc3RtbWFjX3BjaV9maW5kX3BoeV9hZGRyKHBkZXYsIHF1YXJrX3BjaV9kbWkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTEyMS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM6MTE0NTpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBxdWFya19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTE0Ni1cXHQuc2V0dXAgPSBxdWFya19kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTEyNjM9c3RhdGljIGludCBpbnRlbF9ldGhfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMjY1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjEyNjY6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtMTI2Ny1cXHRzdHJ1Y3QgaW50ZWxfcHJpdl9kYXRhICppbnRlbF9wcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz03Nj1zdHJ1Y3QgbG9vbmdzb25fZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6ODI6c3RydWN0IHN0bW1hY19wY2lfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy04My1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTEzMj1zdGF0aWMgaW50IGxvb25nc29uX2dtYWNfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTQyOnN0YXRpYyBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIGxvb25nc29uX2dtYWNfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xNDMtXFx0LnNldHVwID0gbG9vbmdzb25fZ21hY19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0xNjU9c3RhdGljIGludCBsb29uZ3Nvbl9nbmV0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTE3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjE3NzpzdGF0aWMgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBsb29uZ3Nvbl9nbmV0X3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTc4LVxcdC5zZXR1cCA9IGxvb25nc29uX2duZXRfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NDk4PXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTAxLVxcdHN0cnVjdCBzdG1tYWNfcmVzb3VyY2VzIHJlcyA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTAyOlxcdHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKmluZm87XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MDMtXFx0c3RydWN0IGxvb25nc29uX2RhdGEgKmxkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy01MzctXFx0cGxhdC1cXHUwMDNlZml4X3NvY19yZXNldCA9IGxvb25nc29uX2R3bWFjX2ZpeF9yZXNldDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjUzODpcXHRwbGF0LVxcdTAwM2VzdXNwZW5kID0gc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo1Mzk6XFx0cGxhdC1cXHUwMDNlcmVzdW1lID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0MC1cXHRsZC1cXHUwMDNlZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NTQzOlxcdGluZm8gPSAoc3RydWN0IHN0bW1hY19wY2lfaW5mbyAqKWlkLVxcdTAwM2Vkcml2ZXJfZGF0YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU0NC1cXHRyZXQgPSBpbmZvLVxcdTAwM2VzZXR1cChwZGV2LCBwbGF0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTE4OD1zdGF0aWMgaW50IG1vdG9yY29tbV9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzoxOTM6XFx0cmV0ID0gc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShkZXYsIGJzcF9wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0xOTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jPTIwOD1tb3RvcmNvbW1fZGVmYXVsdF9wbGF0X2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNDgtXFx0cGxhdC1cXHUwMDNlY29yZV90eXBlXFx0XFx0PSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jOjI0OTpcXHRwbGF0LVxcdTAwM2VzdXNwZW5kXFx0XFx0PSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYy0yNTAtXFx0cGxhdC1cXHUwMDNlcmVzdW1lXFx0XFx0PSBtb3RvcmNvbW1fcmVzdW1lO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYzoxMjppbnQgc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTI1LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6MjY6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3N1c3BlbmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuYy0yNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6Mjg6aW50IHN0bW1hY19wY2lfcGxhdF9yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpic3BfcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmMtMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQzLX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmM6NDQ6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5jLTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oLTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX2xpYnBjaS5oOjk6aW50IHN0bW1hY19wY2lfcGxhdF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqYnNwX3ByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19saWJwY2kuaDoxMDppbnQgc3RtbWFjX3BjaV9wbGF0X3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmJzcF9wcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbGlicGNpLmgtMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5OnN0cnVjdCBzdG1tYWNfcGNpX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMC1cXHRpbnQgKCpzZXR1cCkoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MzM9c3RhdGljIGludCBzdG1tYWNfZGVmYXVsdF9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzdG1tYWNfcGNpX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTUxLVxcdC5zZXR1cCA9IHN0bW1hY19kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9NTQ9c3RhdGljIGludCBzbnBzX2dtYWM1X2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjEwMjpzdGF0aWMgY29uc3Qgc3RydWN0IHN0bW1hY19wY2lfaW5mbyBzbnBzX2dtYWM1X3BjaV9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDMtXFx0LnNldHVwID0gc25wc19nbWFjNV9kZWZhdWx0X2RhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMjE6XFx0c3RydWN0IHN0bW1hY19wY2lfaW5mbyAqaW5mbyA9IChzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICopaWQtXFx1MDAzZWRyaXZlcl9kYXRhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMjItXFx0c3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgwOlxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MTgxOlxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4NzogKiBzdG1tYWNfcGNpX3JlbW92ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTEtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE5MjpzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYz0yMDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHN0bW1hY19pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDQ6XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNTUFDLCBTVE1NQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwNTpcXHR7IFBDSV9ERVZJQ0VfREFUQShTVE1JQ1JPLCBNQUMsIFxcdTAwMjZzdG1tYWNfcGNpX2luZm8pIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwNi1cXHR7IFBDSV9ERVZJQ0VfREFUQShTWU5PUFNZUywgR01BQzVfSUQsIFxcdTAwMjZzbnBzX2dtYWM1X3BjaV9pbmZvKSB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMD1NT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMTI6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMTMtXFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1OlxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIxNjpcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNy1cXHQuZHJpdmVyICAgICAgICAgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMjI6bW9kdWxlX3BjaV9kcml2ZXIoc3RtbWFjX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0yMjMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjMxLjAyMTA4NDQ1MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkxNDU1NDc2NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUZXN0YWJpbGl0eSBvZiBgc3RtbWFjYCBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBgc3RtbWFjYCBkcml2ZXIgaXMgYWN0dWFsbHkgdGVzdGFibGUgaW4gYSBRRU1VIGVudmlyb25tZW50LCBnaXZlbiB0aGUgY29uc3RyYWludHMuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBzaW5jZSB0aGUgZHJpdmVyIGhhcyBQQ0kgYmluZGluZ3MgKGBzdG1tYWNfcGNpLmNgKSwgaXQgKnNob3VsZCogYmUgcHJvYmVhYmxlIGlmIGEgY29ycmVzcG9uZGluZyBQQ0kgZGV2aWNlIGlzIGVtdWxhdGVkLCBvciBpZiBJIHVzZSBhIHZpcnR1YWwgUENJIGRldmljZS4gQnV0IHRoZW4gSSBwYXVzZWQgLSBkb2VzIFFFTVUgZXZlbiAqZW11bGF0ZSogU1RNTUFDIG92ZXIgUENJPyBJIG5lZWQgdG8gY2hlY2suXG5cblRoZW4gSSByZWNhbGxlZCB0aGF0IHN5emthbGxlciBvZnRlbiB0ZXN0cyBuZXR3b3JrIGRyaXZlcnMuIFBlcmhhcHMgc3l6a2FsbGVyIHV0aWxpemVzIGB2bmV0YCBvciBgZHVtbXlgIGludGVyZmFjZXMsIG9yIG1heWJlIGV2ZW4gaGFzIHNvbWUgY292ZXJhZ2Ugd2l0aG91dCBhIGRpcmVjdCBQQ0kgZGV2aWNlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgc3l6a2FsbGVyIGNhbiB0ZXN0IGl0IGlmIGl0J3MgYSBwbGF0Zm9ybSBkZXZpY2Ugb24gQVJNLCBvciBpZiB0aGVyZSdzIGEgUENJIGRldmljZS5cblxuQnV0IHRoZW4gdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIGVudmlyb25tZW50cyBsaWtlIFFFTVUuIEl0IGNpdGVzIGV4YW1wbGVzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoIG9yIFNtYXJ0TklDIGRyaXZlcnMsIHRoZSBraW5kcyBvZiB0aGluZ3MgdGhhdCByZXF1aXJlIGRlZGljYXRlZCBoYXJkd2FyZS4gQ291bGQgYHN0bW1hY2AgZmFsbCBpbnRvIHRoYXQgY2F0ZWdvcnk/XG5cbkkgbmVlZCB0byBnZXQgdG8gdGhlIHJvb3Qgb2YgaG93IGBzdG1tYWNgIGlzIHVzZWQuIEkga25vdyBpdCdzIHVzZWQgaW4gbnVtZXJvdXMgQVJNIFNvQ3MgZnJvbSBSb2NrY2hpcCwgQWxsd2lubmVyLCBBbWxvZ2ljLCBOWFAsIGFuZCBvdGhlcnMuIEkga25vdyBRRU1VICpkb2VzKiBlbXVsYXRlIHNvbWUgb2YgdGhlc2UgU29DcyDigJMgSSd2ZSBzZWVuIGBhbGx3aW5uZXItc3VuOGktZW1hY2AgKG1hcHBlZCB0byBgc3VuOGktZW1hY2AsIG5vdCBgc3RtbWFjYCkuIEknbSBsb29raW5nIGZvciB3aGVyZSBgc3RtbWFjYCBnZXRzIHVzZWQgaW4gUUVNVS4gTGV0IG1lIGxvb2sgYXQgdGhlIFFFTVUgc291cmNlLlxuXG5Pa2F5LCBJIHNlZSBgaHcvbmV0L2FsbHdpbm5lci1zdW44aS1lbWFjLmNgLCB0aGF0J3MgYHN1bjhpLWVtYWNgLiBUaGVuIHRoZXJlJ3MgYGh3L25ldC9jYWRlbmNlX2dlbS5jYCwgdGhhdCdzIGZvciB0aGUgYG1hY2JgIGRyaXZlci4gQW5kIGBody9uZXQvaW14X2ZlYy5jYCwgdGhhdCdzIGBmZWNgLiBgaHcvbmV0L25wY203eHhfZW1jLmNgIGlzIGZvciBgbnBjbTd4eF9lbWNgLCBhbmQgYGh3L25ldC94Z21hYy5jYCBpcyBvYnZpb3VzbHkgYHhnbWFjYC4gSSBhbSB3b25kZXJpbmcgaWYgYHN0bW1hY2AgY2FuIGV2ZW4gYmUgdXNlZCBpbiBRRU1VIGF0IGFsbD9cblxuV2FpdCwgSSB0aGluayBJIHJlbWVtYmVyIG5vdy4gYHN0bW1hY2AgaXMgdGhlIFN5bm9wc3lzIERlc2lnbldhcmUgTUFDIChEV01BQykuIFNvIHRoYXQgbWVhbnMgUUVNVSAqc2hvdWxkKiBoYXZlIGFuIGVtdWxhdGlvbiBvZiB0aGlzLiBMZXQgbWUgc2VlLi4uIHllcyEgUUVNVSBoYXMgYGh3L25ldC9kZXNpZ253YXJlLmNgLiBPa2F5LCBub3cgSSBqdXN0IG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyB3aGF0IEknbSBsb29raW5nIGZvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2ODMsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzQ6NDAuMTY2NjM0NDI0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTYwMzkxNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRFdNQUNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTk4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWw6Nzp0aXRsZTogQWx0ZXJhIFNPQ0ZQR0EgU29DIERXTUFDIGNvbnRyb2xsZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbC04LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWw9MTI9ZGVzY3JpcHRpb246XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTMtICBUaGlzIGJpbmRpbmcgZGVzY3JpYmVzIHRoZSBBbHRlcmEgU09DRlBHQSBTb0MgaW1wbGVtZW50YXRpb24gb2YgdGhlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWw6MTQ6ICBTeW5vcHN5cyBEV01BQyBmb3IgdGhlIEN5Y2xvbmU1LCBBcnJpYTUsIFN0cmF0aXgxMCwgQWdpbGV4NSBhbmQgQWdpbGV4N1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sLTE1LSAgZmFtaWxpZXMgb2YgY2hpcHMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbD0zMT1wcm9wZXJ0aWVzOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbHRyLHNvY2ZwZ2Etc3RtbWFjLnlhbWwtMTEzLSAgICBkZXNjcmlwdGlvbjpcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FsdHIsc29jZnBnYS1zdG1tYWMueWFtbDoxMTQ6ICAgICAgU2hvdWxkIGJlIHRoZSBwaGFuZGxlIHRvIHRoZSBlbWFjIHNwbGl0dGVyIHNvZnQgSVAgbm9kZSBpZiBEV01BQ1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sLTExNS0gICAgICBjb250cm9sbGVyIGlzIGNvbm5lY3RlZCBhbiBlbWFjIHNwbGl0dGVyLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWw9Nj0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbC03LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjg6dGl0bGU6IEFtbG9naWMgTWVzb24gRFdNQUMgRXRoZXJuZXQgY29udHJvbGxlclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sLTktXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FtbG9naWMsbWVzb24tZHdtYWMueWFtbD0xMzA9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sLTE0OS0gICAgICAtIGRlc2NyaXB0aW9uOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYW1sb2dpYyxtZXNvbi1kd21hYy55YW1sOjE1MDogICAgICAgICAgVGhlIGZpcnN0IHJlZ2lzdGVyIHJhbmdlIHNob3VsZCBiZSB0aGUgb25lIG9mIHRoZSBEV01BQyBjb250cm9sbGVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hbWxvZ2ljLG1lc29uLWR3bWFjLnlhbWwtMTUxLSAgICAgIC0gZGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ludGVsLGR3bWFjLXBsYXQueWFtbD01PSRzY2hlbWE6IGh0dHA6Ly9kZXZpY2V0cmVlLm9yZy9tZXRhLXNjaGVtYXMvY29yZS55YW1sI1xcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9pbnRlbCxkd21hYy1wbGF0LnlhbWw6Nzp0aXRsZTogSW50ZWwgRFdNQUMgZ2x1ZSBsYXllclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvaW50ZWwsZHdtYWMtcGxhdC55YW1sLTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0OjE6KiBJUFE4MDZ4IERXTUFDIEV0aGVybmV0IGNvbnRyb2xsZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2lwcTgwNngtZHdtYWMudHh0LTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21lZGlhdGVrLWR3bWFjLnlhbWw6Nzp0aXRsZTogTWVkaWFUZWsgRFdNQUMgZ2x1ZSBsYXllciBjb250cm9sbGVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9tZWRpYXRlay1kd21hYy55YW1sLTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWw6Nzp0aXRsZTogTnV2b3RvbiBEV01BQyBnbHVlIGxheWVyIGNvbnRyb2xsZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L251dm90b24sbWEzNWQxLWR3bWFjLnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLGR3bWFjLWlteC55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxkd21hYy1pbXgueWFtbDo3OnRpdGxlOiBOWFAgaS5NWDgvOSBEV01BQyBnbHVlIGxheWVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsZHdtYWMtaW14LnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sPTEzPWRlc2NyaXB0aW9uOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTE0LSAgVGhpcyBkZXZpY2UgaXMgYSBTeW5vcHN5cyBEV0MgSVAsIGludGVncmF0ZWQgb24gTlhQIFMzMkcvUiBTb0NzLlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sOjE1OiAgVGhlIFNvQyBzZXJpZXMgUzMyRzJ4eCBhbmQgUzMyRzN4eCBmZWF0dXJlIG9uZSBEV01BQyBpbnN0YW5jZSxcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbC0xNi0gIHRoZSBTb0MgUzMyUjQ1IGhhcyB0d28gaW5zdGFuY2VzLiBUaGUgZGV2aWNlcyBjYW4gdXNlIFJHTUlJL1JNSUkvTUlJXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbC0xOC0gIHRvIHRoZSBlbWJlZGRlZCBTZXJEZXMgZm9yIFNHTUlJIGNvbm5lY3Rpdml0eS5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L254cCxzMzItZHdtYWMueWFtbDoxOTogIFRoZSBEV01BQyBpbnN0YW5jZXMgaGF2ZSBjb25uZWN0ZWQgYWxsIFJYL1RYIHF1ZXVlcyBpbnRlcnJ1cHRzLFxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLHMzMi1kd21hYy55YW1sLTIwLSAgZW5hYmxpbmcgbG9hZCBiYWxhbmNpbmcgb2YgZGF0YSB0cmFmZmljIGFjcm9zcyBhbGwgQ1BVIGNvcmVzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sY3YxODAwYi1kd21hYy55YW1sOjc6dGl0bGU6IFNvcGhnbyBDVjE4MDBCIERXTUFDIGdsdWUgbGF5ZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxjdjE4MDBiLWR3bWFjLnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29waGdvLHNnMjA0NC1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb3BoZ28sc2cyMDQ0LWR3bWFjLnlhbWwtNi1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbDo3OnRpdGxlOiBTb3BoZ28gU0cyMDQ0IERXTUFDIGdsdWUgbGF5ZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NvcGhnbyxzZzIwNDQtZHdtYWMueWFtbC04LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sPTU9JHNjaGVtYTogaHR0cDovL2RldmljZXRyZWUub3JnL21ldGEtc2NoZW1hcy9jb3JlLnlhbWwjXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sLTYtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zcGFjZW1pdCxrMy1kd21hYy55YW1sOjc6dGl0bGU6IFNwYWNlbWl0IEszIERXTUFDIGdsdWUgbGF5ZXJcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3NwYWNlbWl0LGszLWR3bWFjLnlhbWwtOC1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWw9Nj0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0YXJmaXZlLGpoNzExMC1kd21hYy55YW1sLTctXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGFyZml2ZSxqaDcxMTAtZHdtYWMueWFtbDo4OnRpdGxlOiBTdGFyRml2ZSBKSDcxMTAgRFdNQUMgZ2x1ZSBsYXllclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RpLWR3bWFjLnR4dDoxOlNUTWljcm9lbGVjdHJvbmljcyBTb0MgRFdNQUMgZ2x1ZSBsYXllciBjb250cm9sbGVyXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdGktZHdtYWMudHh0LTItXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw9Nj0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWwtNy1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3N0bTMyLWR3bWFjLnlhbWw6ODp0aXRsZTogU1RNaWNyb2VsZWN0cm9uaWNzIFNUTTMyIC8gTUNVIERXTUFDIGdsdWUgbGF5ZXIgY29udHJvbGxlclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RtMzItZHdtYWMueWFtbC05LVxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWw9NT0kc2NoZW1hOiBodHRwOi8vZGV2aWNldHJlZS5vcmcvbWV0YS1zY2hlbWFzL2NvcmUueWFtbCNcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Rvc2hpYmEsdmlzY29udGktZHdtYWMueWFtbC02LVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sOjc6dGl0bGU6IFRvc2hpYmEgVmlzY29udGkgRFdNQUMgRXRoZXJuZXQgY29udHJvbGxlclxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvdG9zaGliYSx2aXNjb250aS1kd21hYy55YW1sLTgtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0PTEzPVRoZSBgYHN0bW1hY2BgIGRyaXZlciBpbXBsZW1lbnRzIHRoZSBmb2xsb3dpbmcgZHJpdmVyLXNwZWNpZmljIHBhcmFtZXRlcnMuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0LTI0LSAgICAgLSBydW50aW1lXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Rldmxpbmsvc3RtbWFjLnJzdDoyNTogICAgIC0gRW5hYmxlIHRoZSBDb2Fyc2UgdGltZXN0YW1waW5nIG1vZGUsIGFzIGRlZmluZWQgaW4gdGhlIERXTUFDIFRSTS5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zdG1tYWMucnN0LTI2LSAgICAgICBBIGRldGFpbGVkIGV4cGxhbmF0aW9uIG9mIHRoaXMgdGltZXN0YW1waW5nIG1vZGUgY2FuIGJlIGZvdW5kIGluIHRoZVxcbi0tXFxuTUFJTlRBSU5FUlM9MzMzOD1GOlxcdGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtbnhwLXMzMmcqXFxuTUFJTlRBSU5FUlMtMzMzOS1cXG5NQUlOVEFJTkVSUzozMzQwOkFSTS9OWFAgUzMyRy9TMzJSIERXTUFDIEVUSEVSTkVUIERSSVZFUlxcbk1BSU5UQUlORVJTLTMzNDEtTTpcXHRKYW4gUGV0cm91cyBcXHUwMDNjamFuLnBldHJvdXNAb3NzLm54cC5jb21cXHUwMDNlXFxuLS1cXG5NQUlOVEFJTkVSUz0zNjA0PUY6XFx0ZHJpdmVycy9jbGsvc29jZnBnYS9cXG5NQUlOVEFJTkVSUy0zNjA1LVxcbk1BSU5UQUlORVJTOjM2MDY6QVJNL1NPQ0ZQR0EgRFdNQUMgR0xVRSBMQVlFUiBCSU5ESU5HU1xcbk1BSU5UQUlORVJTLTM2MDctTTpcXHRNYXR0aGV3IEdlcmxhY2ggXFx1MDAzY21hdHRoZXcuZ2VybGFjaEBhbHRlcmEuY29tXFx1MDAzZVxcbi0tXFxuTUFJTlRBSU5FUlM9MzYxMD1GOlxcdERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWx0cixzb2NmcGdhLXN0bW1hYy55YW1sXFxuTUFJTlRBSU5FUlMtMzYxMS1cXG5NQUlOVEFJTkVSUzozNjEyOkFSTS9TT0NGUEdBIERXTUFDIEdMVUUgTEFZRVJcXG5NQUlOVEFJTkVSUy0zNjEzLU06XFx0TWF4aW1lIENoZXZhbGxpZXIgXFx1MDAzY21heGltZS5jaGV2YWxsaWVyQGJvb3RsaW4uY29tXFx1MDAzZVxcbi0tXFxuTUFJTlRBSU5FUlM9MTgyMzI9RjpcXHRpbmNsdWRlL2xpbnV4L21vc3QuaFxcbk1BSU5UQUlORVJTLTE4MjMzLVxcbk1BSU5UQUlORVJTOjE4MjM0Ok1PVE9SQ09NTSBEV01BQyBHTFVFIERSSVZFUlxcbk1BSU5UQUlORVJTLTE4MjM1LU06XFx0WWFvIFppIFxcdTAwM2NtZUB6aXlhby5jY1xcdTAwM2VcXG4tLVxcbk1BSU5UQUlORVJTPTIzMDQzPUY6XFx0ZHJpdmVycy9paW8vYWRjL3J6bjEtYWRjLmNcXG5NQUlOVEFJTkVSUy0yMzA0NC1cXG5NQUlOVEFJTkVSUzoyMzA0NTpSRU5FU0FTIFJaL04xIERXTUFDIEdMVUUgTEFZRVJcXG5NQUlOVEFJTkVSUy0yMzA0Ni1NOlxcdFJvbWFpbiBHYW50b2lzIFxcdTAwM2Nyb21haW4uZ2FudG9pc0Bib290bGluLmNvbVxcdTAwM2VcXG4tLVxcbk1BSU5UQUlORVJTPTIzMDY1PUY6XFx0ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9yZW5lc2FzX3VzYmYuY1xcbk1BSU5UQUlORVJTLTIzMDY2LVxcbk1BSU5UQUlORVJTOjIzMDY3OlJFTkVTQVMgUlovVjJIKFApIERXTUFDIEdCRVRIIEdMVUUgTEFZRVIgRFJJVkVSXFxuTUFJTlRBSU5FUlMtMjMwNjgtTTpcXHRMYWQgUHJhYmhha2FyIFxcdTAwM2NwcmFiaGFrYXIubWFoYWRldi1sYWQucmpAYnAucmVuZXNhcy5jb21cXHUwMDNlXFxuLS1cXG5NQUlOVEFJTkVSUz0yNTQ0Mz1GOlxcdGRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zcDIqXFxuTUFJTlRBSU5FUlMtMjU0NDQtXFxuTUFJTlRBSU5FUlM6MjU0NDU6U1BBQ0VNSVQgRFdNQUMgR0xVRSBMQVlFUlxcbk1BSU5UQUlORVJTLTI1NDQ2LU06XFx0SW5vY2hpIEFtYW90byBcXHUwMDNjaW5vY2hpYW1hQGdtYWlsLmNvbVxcdTAwM2VcXG4tLVxcbk1BSU5UQUlORVJTPTI1Nzk0PUY6XFx0YXJjaC9yaXNjdi9ib290L2R0cy9zdGFyZml2ZS9cXG5NQUlOVEFJTkVSUy0yNTc5NS1cXG5NQUlOVEFJTkVSUzoyNTc5NjpTVEFSRklWRSBEV01BQyBHTFVFIExBWUVSXFxuTUFJTlRBSU5FUlMtMjU3OTctTTpcXHRFbWlsIFJlbm5lciBCZXJ0aGluZyBcXHUwMDNja2VybmVsQGVzbWlsLmRrXFx1MDAzZVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9Mjc2PUNPTkZJR19TVE1NQUNfRVRIPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoyNzc6Q09ORklHX0RXTUFDX0RXQ19RT1NfRVRIPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0yNzgtQ09ORklHX1RJX0NQU1c9eVxcbi0tXFxuYXJjaC9hcm0vY29uZmlncy9zaG1vYmlsZV9kZWZjb25maWc9NjA9Q09ORklHX1NUTU1BQ19FVEg9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2htb2JpbGVfZGVmY29uZmlnOjYxOiMgQ09ORklHX0RXTUFDX1JFTkVTQVNfR0JFVEggaXMgbm90IHNldFxcbmFyY2gvYXJtL2NvbmZpZ3Mvc2htb2JpbGVfZGVmY29uZmlnLTYyLUNPTkZJR19NSUNSRUxfUEhZPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc9NDQ2PUNPTkZJR19TVE1NQUNfRVRIPW1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjQ0NzpDT05GSUdfRFdNQUNfTUVESUFURUs9bVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6NDQ4OkNPTkZJR19EV01BQ19URUdSQT1tXFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy00NDktIyBDT05GSUdfTkVUX1ZFTkRPUl9TVU4gaXMgbm90IHNldFxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpYy9ib2FyZC1uaTE2OTQ0NS5jb25maWc9Mjg9Q09ORklHX1NUTU1BQ19QTEFURk9STT15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZ2VuZXJpYy9ib2FyZC1uaTE2OTQ0NS5jb25maWc6Mjk6Q09ORklHX0RXTUFDX0dFTkVSSUM9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZz04OT1DT05GSUdfU1RNTUFDX0VUSD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24xX2RlZmNvbmZpZzo5MDojIENPTkZJR19EV01BQ19HRU5FUklDIGlzIG5vdCBzZXRcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjFfZGVmY29uZmlnLTkxLSMgQ09ORklHX05FVF9WRU5ET1JfU1lOT1BTWVMgaXMgbm90IHNldFxcbi0tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz0xNDE9Q09ORklHX1NUTU1BQ19FVEg9bVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6MTQyOkNPTkZJR19EV01BQ19USEVBRD1tXFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZy0xNDMtQ09ORklHX01JQ1JFTF9QSFk9eVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2NpL2FybS5jb25maWc9MzM9Q09ORklHX1BIWV9ST0NLQ0hJUF9EUD15XFxuZHJpdmVycy9ncHUvZHJtL2NpL2FybS5jb25maWc6MzQ6Q09ORklHX0RXTUFDX1JPQ0tDSElQPXlcXG5kcml2ZXJzL2dwdS9kcm0vY2kvYXJtLmNvbmZpZy0zNS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm02NC5jb25maWc9MzU9Q09ORklHX1BIWV9ST0NLQ0hJUF9EUD15XFxuZHJpdmVycy9ncHUvZHJtL2NpL2FybTY0LmNvbmZpZzozNjpDT05GSUdfRFdNQUNfUk9DS0NISVA9eVxcbmRyaXZlcnMvZ3B1L2RybS9jaS9hcm02NC5jb25maWctMzctQ09ORklHX1NUTU1BQ19FVEg9eVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz00Mj1pZiBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDQ6Y29uZmlnIERXTUFDX0RXQ19RT1NfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00NS1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3Igc25wcyxkd2MtcW9zLWV0aGVybmV0LnR4dCBEVCBiaW5kaW5nLlxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1Mjpjb25maWcgRFdNQUNfR0VORVJJQ1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NTM6XFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgZHJpdmVyIGZvciBEV01BQ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU0LVxcdGRlZmF1bHQgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy01NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo1NjpcXHQgIEdlbmVyaWMgRFdNQUMgZHJpdmVyIGZvciBwbGF0Zm9ybXMgdGhhdCBkb24ndCByZXF1aXJlIGFueVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNTctXFx0ICBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIHRvIGZ1bmN0aW9uIG9yIGlzIHVzaW5nIHBsYXRmb3JtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NjA6Y29uZmlnIERXTUFDX0FOQVJJT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTYxLVxcdHRyaXN0YXRlIFxcXCJBZGFwdHJ1bSBBbmFyaW9uIEdNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo2OTpjb25maWcgRFdNQUNfRUlDNzcwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNzAtXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIEVzd2luIGVpYzc3MDAgZXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjc4OmNvbmZpZyBEV01BQ19JTkdFTklDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy03OS1cXHR0cmlzdGF0ZSBcXFwiSW5nZW5pYyBNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5MDpjb25maWcgRFdNQUNfSVBRODA2WFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6OTE6XFx0dHJpc3RhdGUgXFxcIlFDQSBJUFE4MDZ4IERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05Mi1cXHRkZWZhdWx0IEFSQ0hfUUNPTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05NS1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo5NjpcXHQgIFN1cHBvcnQgZm9yIFFDQSBJUFE4MDZYIERXTUFDIEV0aGVybmV0LlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctOTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwNjpjb25maWcgRFdNQUNfTFBDMThYWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MTA3OlxcdHRyaXN0YXRlIFxcXCJOWFAgTFBDMTh4eC80M3h4IERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMDgtXFx0ZGVmYXVsdCBBUkNIX0xQQzE4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTExLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjExMjpcXHQgIFN1cHBvcnQgZm9yIE5YUCBMUEMxOHh4LzQzeHggRFdNQUMgRXRoZXJuZXQuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMTQ6Y29uZmlnIERXTUFDX01FRElBVEVLXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMTUtXFx0dHJpc3RhdGUgXFxcIk1lZGlhVGVrIE1UMjd4eCBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEyMjpjb25maWcgRFdNQUNfTUVTT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEyMy1cXHR0cmlzdGF0ZSBcXFwiQW1sb2dpYyBNZXNvbiBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxMzM6Y29uZmlnIERXTUFDX05VVk9UT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTEzNC1cXHR0cmlzdGF0ZSBcXFwiTnV2b3RvbiBNQTM1IGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE0NTpjb25maWcgRFdNQUNfUUNPTV9FVEhRT1NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE0Ni1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gRVRIUU9TIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE1NTpjb25maWcgRFdNQUNfUkVORVNBU19HQkVUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTU2LVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL1YySChQKSBHQkVUSCBhbmQgUlovVDJILCBSWi9OMkggR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoxNjg6Y29uZmlnIERXTUFDX1JPQ0tDSElQXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xNjktXFx0dHJpc3RhdGUgXFxcIlJvY2tjaGlwIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE3OTpjb25maWcgRFdNQUNfUlpOMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFJaL04xIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTE5MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjE5MTpjb25maWcgRFdNQUNfUzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOTItXFx0dHJpc3RhdGUgXFxcIk5YUCBTMzJHL1MzMlIgR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDM6Y29uZmlnIERXTUFDX1NPQ0ZQR0FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIwNC1cXHR0cmlzdGF0ZSBcXFwiU09DRlBHQSBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMTg6Y29uZmlnIERXTUFDX1NPUEhHT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjE5LVxcdHRyaXN0YXRlIFxcXCJTb3BoZ28gZHdtYWMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MjI5OmNvbmZpZyBEV01BQ19TUEFDRU1JVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjMwLVxcdHRyaXN0YXRlIFxcXCJTcGFjZW1pdCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyNDE6Y29uZmlnIERXTUFDX1NUQVJGSVZFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNDItXFx0dHJpc3RhdGUgXFxcIlN0YXJGaXZlIGR3bWFjIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI1Mzpjb25maWcgRFdNQUNfU1RJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yNTQtXFx0dHJpc3RhdGUgXFxcIlNUaSBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2NTpjb25maWcgRFdNQUNfU1RNMzJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI2NjpcXHR0cmlzdGF0ZSBcXFwiU1RNMzIgRFdNQUMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI2Ny1cXHRkZWZhdWx0IEFSQ0hfU1RNMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjc3OmNvbmZpZyBEV01BQ19TVU5YSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjc4LVxcdHRyaXN0YXRlIFxcXCJBbGx3aW5uZXIgR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyODg6Y29uZmlnIERXTUFDX1NVTjhJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yODktXFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW44aSBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTI5OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMwMDpjb25maWcgRFdNQUNfU1VONTVJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMDEtXFx0dHJpc3RhdGUgXFxcIkFsbHdpbm5lciBzdW41NWkgR01BQzIwMCBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMTI6Y29uZmlnIERXTUFDX1RIRUFEXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMTMtXFx0dHJpc3RhdGUgXFxcIlQtSEVBRCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozMjI6Y29uZmlnIERXTUFDX0lNWDhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMyMzpcXHR0cmlzdGF0ZSBcXFwiTlhQIElNWDggRFdNQUMgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMyNC1cXHRkZWZhdWx0IEFSQ0hfTVhDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjMzNDpjb25maWcgRFdNQUNfSU5URUxfUExBVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzM1LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBkd21hYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNDQ6Y29uZmlnIERXTUFDX0xPT05HU09OMVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzQ1LVxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbjEgR01BQyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzozNTU6Y29uZmlnIERXTUFDX1RFR1JBXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNTYtXFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBNR0JFIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NDpjb25maWcgRFdNQUNfVklTQ09OVElcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM2NTpcXHR0cmlzdGF0ZSBcXFwiVG9zaGliYSBWaXNjb250aSBEV01BQyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzY2LVxcdGRlZmF1bHQgQVJDSF9WSVNDT05USVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzM9Y29uZmlnIFNUTU1BQ19MSUJQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzc4OmNvbmZpZyBEV01BQ19JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc5LVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBHTUFDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4ODpjb25maWcgRFdNQUNfTE9PTkdTT05cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM4OTpcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gUENJIERXTUFDIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zOTAtXFx0ZGVmYXVsdCBNQUNIX0xPT05HU09ONjRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mzk4OmNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM5OTpcXHR0cmlzdGF0ZSBcXFwiTW90b3Jjb21tIFBDSSBEV01BQyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDAwLVxcdGRlcGVuZHMgb24gUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwMy1cXHRoZWxwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDQ6XFx0ICBUaGlzIGVuYWJsZXMgZ2x1ZSBkcml2ZXIgZm9yIE1vdG9yY29tbSBEV01BQy1iYXNlZCBQQ0kgRXRoZXJuZXRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNS1cXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX1NUTU1BQ19QTEFURk9STSlcXHQrPSBzdG1tYWMtcGxhdGZvcm0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE2Om9iai0kKENPTkZJR19EV01BQ19BTkFSSU9OKVxcdCs9IGR3bWFjLWFuYXJpb24ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19EV01BQ19FSUM3NzAwKVxcdCs9IGR3bWFjLWVpYzc3MDAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19EV01BQ19JTkdFTklDKVxcdCs9IGR3bWFjLWluZ2VuaWMub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjE5Om9iai0kKENPTkZJR19EV01BQ19JUFE4MDZYKVxcdCs9IGR3bWFjLWlwcTgwNngub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19EV01BQ19MUEMxOFhYKVxcdCs9IGR3bWFjLWxwYzE4eHgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19EV01BQ19NRURJQVRFSylcXHQrPSBkd21hYy1tZWRpYXRlay5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjI6b2JqLSQoQ09ORklHX0RXTUFDX01FU09OKVxcdCs9IGR3bWFjLW1lc29uLm8gZHdtYWMtbWVzb244Yi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjM6b2JqLSQoQ09ORklHX0RXTUFDX05VVk9UT04pXFx0Kz0gZHdtYWMtbnV2b3Rvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjQ6b2JqLSQoQ09ORklHX0RXTUFDX1FDT01fRVRIUU9TKVxcdCs9IGR3bWFjLXFjb20tZXRocW9zLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNTpvYmotJChDT05GSUdfRFdNQUNfUkVORVNBU19HQkVUSCkgKz0gZHdtYWMtcmVuZXNhcy1nYmV0aC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MjY6b2JqLSQoQ09ORklHX0RXTUFDX1JPQ0tDSElQKVxcdCs9IGR3bWFjLXJrLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyNzpvYmotJChDT05GSUdfRFdNQUNfUlpOMSlcXHQrPSBkd21hYy1yem4xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZToyODpvYmotJChDT05GSUdfRFdNQUNfUzMyKVxcdFxcdCs9IGR3bWFjLXMzMi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mjk6b2JqLSQoQ09ORklHX0RXTUFDX1NPQ0ZQR0EpXFx0Kz0gZHdtYWMtYWx0ci1zb2NmcGdhLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfRFdNQUNfU09QSEdPKVxcdCs9IGR3bWFjLXNvcGhnby5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzE6b2JqLSQoQ09ORklHX0RXTUFDX1NQQUNFTUlUKVxcdCs9IGR3bWFjLXNwYWNlbWl0Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozMjpvYmotJChDT05GSUdfRFdNQUNfU1RBUkZJVkUpXFx0Kz0gZHdtYWMtc3RhcmZpdmUub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjMzOm9iai0kKENPTkZJR19EV01BQ19TVEkpXFx0XFx0Kz0gZHdtYWMtc3RpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNDpvYmotJChDT05GSUdfRFdNQUNfU1RNMzIpXFx0Kz0gZHdtYWMtc3RtMzIub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19EV01BQ19TVU5YSSlcXHQrPSBkd21hYy1zdW54aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6MzY6b2JqLSQoQ09ORklHX0RXTUFDX1NVTjhJKVxcdCs9IGR3bWFjLXN1bjhpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozNzpvYmotJChDT05GSUdfRFdNQUNfU1VONTVJKVxcdCs9IGR3bWFjLXN1bjU1aS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0RXTUFDX1RIRUFEKVxcdCs9IGR3bWFjLXRoZWFkLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTozOTpvYmotJChDT05GSUdfRFdNQUNfRFdDX1FPU19FVEgpXFx0Kz0gZHdtYWMtZHdjLXFvcy1ldGgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQwOm9iai0kKENPTkZJR19EV01BQ19JTlRFTF9QTEFUKVxcdCs9IGR3bWFjLWludGVsLXBsYXQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQxOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTjEpXFx0Kz0gZHdtYWMtbG9vbmdzb24xLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MjpvYmotJChDT05GSUdfRFdNQUNfR0VORVJJQylcXHQrPSBkd21hYy1nZW5lcmljLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo0MzpvYmotJChDT05GSUdfRFdNQUNfSU1YOClcXHQrPSBkd21hYy1pbXgub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjQ0Om9iai0kKENPTkZJR19EV01BQ19URUdSQSlcXHQrPSBkd21hYy10ZWdyYS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NDU6b2JqLSQoQ09ORklHX0RXTUFDX1ZJU0NPTlRJKVxcdCs9IGR3bWFjLXZpc2NvbnRpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZS00Ni1zdG1tYWMtcGxhdGZvcm0tb2Jqczo9IHN0bW1hY19wbGF0Zm9ybS5vXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZT01MD1vYmotJChDT05GSUdfU1RNTUFDX1BDSSlcXHQrPSBzdG1tYWMtcGNpLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9NYWtlZmlsZTo1MTpvYmotJChDT05GSUdfRFdNQUNfSU5URUwpXFx0Kz0gZHdtYWMtaW50ZWwub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlOjUyOm9iai0kKENPTkZJR19EV01BQ19MT09OR1NPTilcXHQrPSBkd21hYy1sb29uZ3Nvbi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvTWFrZWZpbGU6NTM6b2JqLSQoQ09ORklHX0RXTUFDX01PVE9SQ09NTSlcXHQrPSBkd21hYy1tb3RvcmNvbW0ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL01ha2VmaWxlLTU0LXN0bW1hYy1wY2ktb2Jqczo9IHN0bW1hY19wY2kub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6Mjk6I2RlZmluZSBEV01BQ19TTlBTVkVSXFx0R0VOTUFTS19VMzIoNywgMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozMDojZGVmaW5lIERXTUFDX1VTRVJWRVJcXHRHRU5NQVNLX1UzMigxNSwgOClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC0zMi0vKiBTeW5vcHN5cyBDb3JlIHZlcnNpb25zICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzM6I2RlZmluZVxcdERXTUFDX0NPUkVfM180MFxcdFxcdDB4MzRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNDojZGVmaW5lXFx0RFdNQUNfQ09SRV8zXzUwXFx0XFx0MHgzNVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oOjM1OiNkZWZpbmVcXHREV01BQ19DT1JFXzNfNzBcXHRcXHQweDM3XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg6MzY6I2RlZmluZVxcdERXTUFDX0NPUkVfNF8wMFxcdFxcdDB4NDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozNzojZGVmaW5lIERXTUFDX0NPUkVfNF8xMFxcdFxcdDB4NDFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozODojZGVmaW5lIERXTUFDX0NPUkVfNV8wMFxcdFxcdDB4NTBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDozOTojZGVmaW5lIERXTUFDX0NPUkVfNV8xMFxcdFxcdDB4NTFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo0MDojZGVmaW5lIERXTUFDX0NPUkVfNV8yMFxcdFxcdDB4NTJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaC00MS0jZGVmaW5lIERXWEdNQUNfQ09SRV8yXzEwXFx0MHgyMVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmg9NDk9c3RhdGljIGlubGluZSBib29sIGR3bWFjX2lzX3htYWMoZW51bSBkd21hY19jb3JlX3R5cGUgY29yZV90eXBlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2NvbW1vbi5oLTUwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9jb21tb24uaDo1MTpcXHRyZXR1cm4gY29yZV90eXBlID09IERXTUFDX0NPUkVfR01BQzQgfHwgY29yZV90eXBlID09IERXTUFDX0NPUkVfWEdNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvY29tbW9uLmgtNTItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZGVzY3MuaC0zLSAgSGVhZGVyIEZpbGUgdG8gZGVzY3JpYmUgdGhlIERNQSBkZXNjcmlwdG9ycyBhbmQgcmVsYXRlZCBkZWZpbml0aW9ucy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kZXNjcy5oOjQ6ICBUaGlzIGlzIGZvciBEV01BQzEwMCBhbmQgMTAwMCBjb3Jlcy5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kZXNjcy5oLTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYzozOiAqIEFkYXB0cnVtIEFuYXJpb24gRFdNQUMgZ2x1ZSBsYXllclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1hbmFyaW9uLmM9MTMzPW1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYW5hcmlvbl9kd21hY19kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtYW5hcmlvbi5jOjEzNTpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkFkYXB0cnVtIEFuYXJpb24gRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWFuYXJpb24uYy0xMzYtTU9EVUxFX0FVVEhPUihcXFwiQWxleGFuZHJ1IEdhZ25pdWMgXFx1MDAzY21yLm51a2UubWVAZ21haWwuY29tXFx1MDAzZVxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0zNj1zdGF0aWMgaW50IGR3Y19ldGhfZHdtYWNfY29uZmlnX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTg3LVxcdC8qIGR3Yy1xb3MgbmVlZHMgR01BQzQsIEFBTCwgVFNPIGFuZCBQTVQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjg4OlxcdHBsYXRfZGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWR3Yy1xb3MtZXRoLmMtODktXFx0cGxhdF9kYXQtXFx1MDAzZWRtYV9jZmctXFx1MDAzZWFhbCA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1nZW5lcmljLmMtMS0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWdlbmVyaWMuYzoyOiAqIEdlbmVyaWMgRFdNQUMgcGxhdGZvcm0gZHJpdmVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZ2VuZXJpYy5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTItLypcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYzozOiAqIGR3bWFjLWlteC5jIC0gRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllciBmb3IgTlhQIGlteDhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYy00LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbXguYz00MDM9TU9EVUxFX0FVVEhPUihcXFwiTlhQXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW14LmM6NDA0Ok1PRFVMRV9ERVNDUklQVElPTihcXFwiTlhQIGlteDggRFdNQUMgU3BlY2lmaWMgR2x1ZSBsYXllclxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlteC5jLTQwNS1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbmdlbmljLmMtMi0vKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYzozOiAqIGR3bWFjLWluZ2VuaWMuYyAtIEluZ2VuaWMgU29DcyBEV01BQyBzcGVjaWZpYyBnbHVlIGxheWVyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTQtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWluZ2VuaWMuYz0yODI9TU9EVUxFX0FVVEhPUihcXFwi5ZGo55Cw5p2wIChaaG91IFlhbmppZSkgXFx1MDAzY3pob3V5YW5qaWVAd2FueWVldGVjaC5jb21cXHUwMDNlXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jOjI4MzpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIkluZ2VuaWMgU29DcyBEV01BQyBzcGVjaWZpYyBnbHVlIGxheWVyXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW5nZW5pYy5jLTI4NC1NT0RVTEVfTElDRU5TRShcXFwiR1BMIHYyXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoyOi8qIEludGVsIERXTUFDIHBsYXRmb3JtIGRyaXZlclxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0zLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM9MTUwPU1PRFVMRV9MSUNFTlNFKFxcXCJHUEwgdjJcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmM6MTUxOk1PRFVMRV9ERVNDUklQVElPTihcXFwiSW50ZWwgRFdNQUMgcGxhdGZvcm0gZHJpdmVyXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTU5Nj1zdGF0aWMgdm9pZCBjb21tb25fZGVmYXVsdF9kYXRhKHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmMtNTk5LVxcdHBsYXQtXFx1MDAzZWNsa19jc3IgPSBTVE1NQUNfQ1NSXzIwXzM1TTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jOjYwMDpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MDEtXFx0cGxhdC1cXHUwMDNlZm9yY2Vfc2ZfZG1hX21vZGUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTY9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy02MjYtXFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMjUwXzMwME07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo2Mjc6XFx0cGxhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTYyOC1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oLTItLyogQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmg6MzogKiBEV01BQyBJbnRlbCBoZWFkZXIgZmlsZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtNC0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuaDo2OiNpZm5kZWYgX19EV01BQ19JTlRFTF9IX19cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5oOjc6I2RlZmluZSBfX0RXTUFDX0lOVEVMX0hfX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmgtODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuaDo4MTojZW5kaWYgLyogX19EV01BQ19JTlRFTF9IX18gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00NzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ3NjpcXHRwbGF0X2RhdC1cXHUwMDNlY29yZV90eXBlID0gRFdNQUNfQ09SRV9HTUFDO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00NzctXFx0cGxhdF9kYXQtXFx1MDAzZWJzcF9wcml2ID0gZ21hYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz01MDg9TU9EVUxFX0FVVEhPUihcXFwiTWF0aGlldSBPbGl2YXJpIFxcdTAwM2NtYXRoaWV1QGNvZGVhdXJvcmEub3JnXFx1MDAzZVxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYzo1MDk6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJRdWFsY29tbSBBdGhlcm9zIElQUTgwNnggRFdNQUMgc3BlY2lmaWMgZ2x1ZSBsYXllclxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy01MTAtTU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy03Mi0jZGVmaW5lIFBDSV9ERVZJQ0VfSURfTE9PTkdTT05fR05FVFxcdDB4N2ExM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzM6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMVxcdDB4MTBcXHQvKiBMb29uZ3NvbiBjdXN0b20gSUQgMHgxMCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6NzQ6I2RlZmluZSBEV01BQ19DT1JFX01VTFRJQ0hBTl9WMlxcdDB4MTJcXHQvKiBMb29uZ3NvbiBjdXN0b20gSUQgMHgxMiAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNzUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTg2PXN0YXRpYyB2b2lkIGxvb25nc29uX2RlZmF1bHRfZGF0YShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtOTUtXFx0cGxhdC1cXHUwMDNlY2xrX2NzciA9IFNUTU1BQ19DU1JfMTAwXzE1ME07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo5NjpcXHRwbGF0LVxcdTAwM2Vjb3JlX3R5cGUgPSBEV01BQ19DT1JFX0dNQUM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy05Ny1cXHRwbGF0LVxcdTAwM2Vmb3JjZV9zZl9kbWFfbW9kZSA9IHRydWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEwOC1cXHRzd2l0Y2ggKGxkLVxcdTAwM2Vsb29uZ3Nvbl9pZCkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM6MTA5OlxcdGNhc2UgRFdNQUNfQ09SRV9NVUxUSUNIQU5fVjE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0xMTAtXFx0XFx0bGQtXFx1MDAzZW11bHRpY2hhbiA9IDE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTEyMC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjEyMTpcXHRjYXNlIERXTUFDX0NPUkVfTVVMVElDSEFOX1YyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtMTIyLVxcdFxcdGxkLVxcdTAwM2VtdWx0aWNoYW4gPSAxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYz0zMDY9c3RhdGljIGludCBsb29uZ3Nvbl9kd21hY19zZXR1cCh2b2lkICphcHJpdiwgc3RydWN0IG1hY19kZXZpY2VfaW5mbyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy0zMjgtXFx0aWYgKGxkLVxcdTAwM2VtdWx0aWNoYW4pIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjMyOTpcXHRcXHRwcml2LVxcdTAwM2VzeW5vcHN5c19pZCA9IERXTUFDX0NPUkVfM183MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTMzMC1cXHRcXHQqZG1hID0gZHdtYWMxMDAwX2RtYV9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ2Nj1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX2FjcGlfY29uZmlnKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy00NzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo0Nzg6LyogTG9vbmdzb24ncyBEV01BQyBkZXZpY2UgbWF5IHRha2UgbmVhcmx5IHR3byBzZWNvbmRzIHRvIGNvbXBsZXRlIERNQSByZXNldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNDc5LXN0YXRpYyBpbnQgbG9vbmdzb25fZHdtYWNfZml4X3Jlc2V0KHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmM9NjE0PW1vZHVsZV9wY2lfZHJpdmVyKGxvb25nc29uX2R3bWFjX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYzo2MTY6TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJMb29uZ3NvbiBEV01BQyBQQ0kgZHJpdmVyXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbG9vbmdzb24uYy02MTctTU9EVUxFX0FVVEhPUihcXFwiUWluZyBaaGFuZyBcXHUwMDNjemhhbmdxaW5nQGxvb25nc29uLmNuXFx1MDAzZVxcXCIpO1xcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM0OjQxLjg4MjY4MDgyM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDM5NjA1NTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTVE1NQUMgRHJpdmVyIGFuZCBpdHMgUUVNVSBSZXByZXNlbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYHN0bW1hY2AgZHJpdmVyIGEgYml0IGJldHRlciwgYW5kIGhvdyBpdCByZWxhdGVzIHRvIHRoZSBgRFdNQUNgIChEZXNpZ25XYXJlIE1BQykgYXMgaXQgc2VlbXMgdGhhdCBgc3RtbWFjYCBpcywgaW4gZmFjdCwgdGhlIGRyaXZlciBmb3IgYERXTUFDYC4gSSByZW1lbWJlciBzZWVpbmcgc29tZXRoaW5nIGFib3V0IHRoaXMgaW4gUUVNVSwgc28gbGV0J3MgY2hlY2sgYGh3L25ldC9kZXNpZ253YXJlLmNgLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hpY2ggUUVNVSBtYWNoaW5lcyBhY3R1YWxseSB1dGlsaXplIHRoaXMgc3BlY2lmaWMgcGllY2Ugb2YgY29kZS4gSG1tLCBsb29rcyBsaWtlIGl0J3MgdXNlZCBpbiBgaHcvYXJtL2FsbHdpbm5lci1oMy5jYCwgYnV0IHdhaXQsIHRoZSBzdW44aS1lbWFjIGlzIGRpZmZlcmVudCBoZXJlLiBMZXQncyBzZWUuLi4gb2gsIGFsc28sIGRlc2lnbndhcmUgKmlzKiB1c2VkLCBidXQgaW4gYGh3L2FybS94bG54LXp5bnFtcC5jYD8gTm8sIHRoYXQncyBgY2FkZW5jZV9nZW1gLiBPa2F5LCBJIHdhcyBnZXR0aW5nIHRoYXQgY29uZnVzZWQuXG5cbk5vdywgd2hlcmUgd2FzIEk/IFJpZ2h0LCBgc3RtbWFjYC4gSSBhbHNvIHJlY2FsbCBzZWVpbmcgdGhhdCBgc3RtbWFjYCBpcyB0ZXN0ZWQgYnkgc3l6a2FsbGVyLiBUaGF0J3MgZ29vZCwgYmVjYXVzZSBzeXprYWxsZXIgcHJvdmlkZXMgdmFsdWFibGUgY292ZXJhZ2UgZGF0YS4gU28sIGxldCdzIGludmVzdGlnYXRlIHRoZSByZWFjaGFiaWxpdHkgb2YgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBUaGlzIHBhdGNoIHNlZW1zIHRvIGJlIG1vZGlmeWluZyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIEFuZCwgbGV0J3Mgc2VlLCB0aGF0IGZ1bmN0aW9uIGlzIHRoZSBgbmRvX3NlbGVjdF9xdWV1ZWAgY2FsbGJhY2sgZm9yIHRoZSBgc3RtbWFjYCBkcml2ZXIuIEdvdHRhIGNvbmZpcm0gdGhpcyBxdWlja2x5LiBHb2luZyB0byBjaGVjayBgc3RtbWFjX21haW4uY2AgdG8gYmUgY29tcGxldGVseSBzdXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE2MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNDo0OC42ODY2NDM2NjdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMDk5MzgwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfc2VsZWN0X3F1ZXVlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjQxOT1zdGF0aWMgaW50IHN0bW1hY19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0NDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDQ1OnN0YXRpYyB1MTYgc3RtbWFjX3NlbGVjdF9xdWV1ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ0Ni1cXHRcXHRcXHQgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKnNiX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzMwMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHN0bW1hY19uZXRkZXZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzE1LVxcdC5uZG9fc2V0dXBfdGMgPSBzdG1tYWNfc2V0dXBfdGMsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MzE2OlxcdC5uZG9fc2VsZWN0X3F1ZXVlID0gc3RtbWFjX3NlbGVjdF9xdWV1ZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTczMTctXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPSBzdG1tYWNfc2V0X21hY19hZGRyZXNzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNDo1MC40ODc2NDI5MDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTQ4MDkzOTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBuZG9fc2VsZWN0X3F1ZXVlYCBpbiBgc3RtbWFjYCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSB3ZSdyZSB0YWxraW5nIGFib3V0IHRoZSBgbmRvX3NlbGVjdF9xdWV1ZWAgY2FsbGJhY2sgaGVyZS4gVGhhdCdzIHRoZSBmdW5jdGlvbiBjYWxsZWQgd2hlbiB0aGUgbmV0d29yayBkZXZpY2UgaGFzIG11bHRpcGxlIHRyYW5zbWl0IHF1ZXVlcyBhbmQgaXQncyB0aW1lIHRvIGRlY2lkZSB3aGljaCBvbmUgdG8gdXNlIGZvciBhIHBhY2tldC4gVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIGlzLCBjYW4gd2UgYWN0dWFsbHkgcmVhY2ggdGhpcyBpbiBhIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnQ/IElmIHN5emthbGxlciBpcyB0YXJnZXRpbmcgYHN0bW1hY2AsIHRoZW4geWVzLiBJZiBzeXprYWxsZXIgY2FuIHRlc3QgaXQgdmlhIGB2bmV0YCwgb3IgYGR1bW15YCwgb3IgYSBwbGF0Zm9ybSBkZXZpY2UgcHJvYmVkIGluIFFFTVUsIHRoZW4gaXQncyByZWFjaGFibGUuXG5cbk5vdywgZG9lcyBzeXprYWxsZXIgdGVzdCBgc3RtbWFjYD8gSSBjYW4gcXVpY2tseSBjaGVjayB0aGUgc3l6a2FsbGVyIGNvbmZpZ3MgdG8gc2VlIGlmIGBzdG1tYWNgIGlzIGVuYWJsZWQuIExldCdzIHNlZSBpZiBgQ09ORklHX1NUTU1BQ19FVEhgIGlzIHNldCBpbiB0aGUgYHg4Nl82NGAgZGVmY29uZmlnIG9yIHRoZSBtYWluIHN5emthbGxlciBjb25maWcuIEhtbW0sIEkgZG9uJ3QgaGF2ZSB0aGUgc3l6a2FsbGVyIGNvbmZpZyBoYW5keSwgYnV0IHdhaXQsIEkgY2FuIGNoZWNrIGlmIGl0J3MgYSBQQ0kgZGV2aWNlLiBgc3RtbWFjX3BjaS5jYCByZWdpc3RlcnMgYSBQQ0kgZHJpdmVyLlxuXG5Pa2F5LCBzeXprYWxsZXIgKmNhbiogZnV6eiBQQ0kgZGV2aWNlcywgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCBvciBzaW1pbGFyLCBvciBRRU1VIGNhbiBlbXVsYXRlIHRoZSBQQ0kgZGV2aWNlLiBXYWl0Li4uZG9lcyBRRU1VIGVtdWxhdGUgdGhlIGBzdG1tYWNgIFBDSSBkZXZpY2U/IE5vLCB0aGF0J3Mgbm90IHNvbWV0aGluZyBRRU1VIGltcGxlbWVudHMuIEJ1dCBoYW5nIG9uLCBzeXprYWxsZXIgaGFzIGB2aGNpYCBmb3IgVVNCLCBgbWFjODAyMTFfaHdzaW1gIGZvciB3aWZpLCBhbmQgYG5ldGRldnNpbWAgZm9yIG5ldC4gU28sIGRvZXMgc3l6a2FsbGVyIGhhdmUgYSAqcHNldWRvKiBkZXZpY2UgZm9yIFBDST8gTm8sIGl0J3Mgbm90IHRoZSBzYW1lIHRoaW5nLiBTeXprYWxsZXIncyBgc3l6X3BjaV9kZXZpY2VgIGluamVjdHMgUENJIGRldmljZXMsIHByb3ZpZGluZyB0aGUgUENJIGNvbmZpZyBzcGFjZSBhbmQgQkFScyB0byBwcm9iZSB0aGUgZHJpdmVyLiBCdXQgdG8gYWN0dWFsbHkgZ2V0IHRvIGBuZG9fc2VsZWN0X3F1ZXVlYCBhbmQgc2VuZCBwYWNrZXRzLCB0aGUgZGV2aWNlIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQgYXMgYSBuZXRkZXYgYW5kIGJlIHVwLlxuXG5Pa2F5LCBzbyBjYW4gYHN0bW1hY2AgcHJvYmUgc3VjY2Vzc2Z1bGx5IHdpdGgganVzdCByYW5kb20gQkFScyBwcm92aWRlZCBieSBgc3l6X3BjaV9kZXZpY2VgPyBUaGF0IHNlZW1zIHVubGlrZWx5LCBidXQgaXQncyB3b3J0aCBjaGVja2luZyBgc3RtbWFjX3BjaV9wcm9iZWAgdG8gc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjEwNSwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNTowMC4wMzU3Mzk5ODhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1ODg1MDE0NDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3BjaV9wcm9iZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTAyPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvIHNucHNfZ21hYzVfcGNpX2luZm8gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoxMDc6ICogc3RtbWFjX3BjaV9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMDgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xMTctICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjExODpzdGF0aWMgaW50IHN0bW1hY19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTExOS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTIxMj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgc3RtbWFjX3BjaV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMjE0LVxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM6MjE1OlxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIxNi1cXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjAxLjYyNDI0OTIxMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2Njk2NjkzMjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHJlbmRlcmVkIGFzIGEgZmlyc3QtcGVyc29uIHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIHRoZSB1c2VyIGlzIGFuIGV4cGVydDpcblxuKipEaXZpbmcgaW50byBgc3RtbWFjX3BjaV9wcm9iZWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgc3RtbWFjX3BjaV9wcm9iZWAgaXMgYWN0dWFsbHkgZG9pbmcuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknbSBhc3N1bWluZyB0aGlzIGlzIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50IGZvciB0aGUgUENJLWJhc2VkIFNUTU1BQyBkcml2ZXIgaW5zdGFudGlhdGlvbi4gSXQncyB0aGUgZnVuY3Rpb24gY2FsbGVkIHdoZW4gdGhlIGtlcm5lbCBkZXRlY3RzIGFuIFNUTU1BQyBFdGhlcm5ldCBjb250cm9sbGVyIHZpYSBQQ0kuIFNvLCB3aGF0IGFyZSB0aGUga2V5IHN0ZXBzIGl0J3MgbGlrZWx5IHRha2luZz8gSSBleHBlY3QgaXQnbGwgYmUgZG9pbmcgdGhpbmdzIGxpa2U6XG5cbiogICAqKlJlc291cmNlIEFsbG9jYXRpb246KiogRmlyc3QsIGl0IHdpbGwgbGlrZWx5IGJlIHByb2JpbmcgdGhlIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlIHRvIGZpbmQgdGhlIGJhc2UgYWRkcmVzcyBmb3IgdGhlIFNUTU1BQydzIHJlZ2lzdGVycywgaW50ZXJydXB0IG51bWJlcnMsIGFuZCBvdGhlciBuZWNlc3NhcnkgcmVzb3VyY2VzLiBJdCdsbCBiZSBhIGNyaXRpY2FsIHBhcnQgb2YgZGlzY292ZXJpbmcgaG93IHRoaXMgY2FyZCBpcyBob29rZWQgdXAuXG4qICAgKipEcml2ZXIgQmluZGluZzoqKiBJdCdsbCB0aGVuIGhhdmUgdG8gYmluZCB0byB0aGUgUENJIGRldmljZSwgbGlrZWx5IHVzaW5nIGZ1bmN0aW9ucyBsaWtlIGBwY2lfc2V0X2RydmRhdGFgIHRvIGF0dGFjaCB0aGUgZHJpdmVyLXNwZWNpZmljIGRhdGEgdG8gdGhlIFBDSSBkZXZpY2Ugc3RydWN0LiBJIGFudGljaXBhdGUgaXQncyBhIHJvdXRpbmUgY2FsbCB0aGF0J3MgZXNzZW50aWFsIGZvciBnZXR0aW5nIHRoaXMgZHJpdmVyIHJ1bm5pbmcgYW5kIGZvciBsaW5raW5nIGl0IHRvIHRoZSBoYXJkd2FyZS5cbiogICAqKkRldmljZSBJbml0aWFsaXphdGlvbjoqKiBUaGlzIHdpbGwgaW5jbHVkZSBhbGxvY2F0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIHN0cnVjdCwgZmlsbGluZyBpdCB3aXRoIHRoZSBQQ0ktZGVyaXZlZCByZXNvdXJjZSBpbmZvcm1hdGlvbiwgYW5kIHBvc3NpYmx5IGNhbGxpbmcgaW50byBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVycy4gVGhpcyB3aWxsIHRoZW4gbGlrZWx5IHJlc3VsdCBpbiBjYWxsaW5nIGBwbGF0Zm9ybV9kZXZpY2VfYWRkYCBvciBzaW1pbGFyLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGVzZSBpbml0aWFsaXphdGlvbnMgYW5kIGNhbGxzIGFyZSBsaW5rZWQgdG8gc2VlIHdoZXJlIHRoZSBkcml2ZXIgaXMgaG9va2VkIHVwLlxuKiAgICoqRE1BIFNldHVwOioqIEknbSBndWVzc2luZyBpdCB3aWxsIGNvbmZpZ3VyZSBETUEgc2V0dGluZ3MgYW5kIGxpa2VseSBhbGxvY2F0ZSBETUEtYWJsZSBtZW1vcnkgcmVnaW9ucyBmb3IgdHJhbnNtaXQgYW5kIHJlY2VpdmUgYnVmZmVycy4gR2l2ZW4gdGhlIGFyY2hpdGVjdHVyZSBvZiBhbiBTVE1NQUMsIHRoaXMgaXMgZ29pbmcgdG8gYmUgY2VudHJhbCB0byBoaWdoLXNwZWVkIG9wZXJhdGlvbi5cbiogICAqKkludGVycnVwdCBIYW5kbGluZzoqKiBTZXR0aW5nIHVwIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB2aWEgdGhlIFBDSSBpbnRlcnJ1cHQgdmVjdG9yIGlzIGEgZ2l2ZW4uIEknbGwgbmVlZCB0byBsb29rIGF0IGhvdyBpdCdzIGhhbmRsZWQsIGluY2x1ZGluZyBpbnRlcnJ1cHQgbWFza2luZyBhbmQgcHJpb3JpdHkuXG4qICAgKipDbG9ja3MgYW5kIFJlc2V0OioqIEknbGwgYWxzbyBleHBlY3QgaXQgdG8gbWFuYWdlIGNsb2NrIGVuYWJsaW5nL2Rpc2FibGluZyBmb3IgdGhlIE1BQyBhbmQgcG90ZW50aWFsbHkgYXBwbHkgcmVzZXRzLiBTVE1NQUNzIG9mdGVuIHJlcXVpcmUgY2FyZWZ1bCBjbG9jayBtYW5hZ2VtZW50LlxuKiAgICoqTmV0d29yayBEZXZpY2UgUmVnaXN0cmF0aW9uOioqIEZpbmFsbHksIGl0J2xsIGFsbW9zdCBjZXJ0YWlubHkgY2FsbCBgcmVnaXN0ZXJfbmV0ZGV2YCB0byBjcmVhdGUgYSBuZXR3b3JrIGludGVyZmFjZSBhbmQgbWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2suIFRoaXMgaXMgdGhlIGxhc3Qgc3RlcCB0byBtYWtlIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIgYXZhaWxhYmxlIHRvIHRoZSBrZXJuZWwgYW5kIHRoZSB1c2VybGFuZC5cblxuSSBuZWVkIHRvIHNlZSB0aGUgaW1wbGVtZW50YXRpb24gdG8gdmVyaWZ5IHRoZXNlIGFzc3VtcHRpb25zIGFuZCB0byBiZXR0ZXIgdW5kZXJzdGFuZCBhbnkgbnVhbmNlcyBvciBvcHRpbWl6YXRpb25zIHRoZSBkZXZlbG9wZXJzIHVzZWQuIEkgaGF2ZSBhIGxvdCBvZiBwcmFjdGljYWwgZXhwZXJpZW5jZSBhbmQgdGhpcyB3aWxsIHRlbGwgbWUgaWYgdGhlIGNvZGUgaXMgZG9pbmcgd2hhdCBJIGV4cGVjdC4gTGV0J3Mgc2VlIGhvdyBpdCdzIGJlaW5nIGRvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3NTE5LCJPdXRwdXRUb2tlbnMiOjUxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzU6MDguMzIwOTQ0MzMxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg4OTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMTgsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTE4OlxcdHN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gMTE5OlxcdFxcdFxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuIDEyMDpcXHR7XFxuIDEyMTpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3BjaV9pbmZvICppbmZvID0gKHN0cnVjdCBzdG1tYWNfcGNpX2luZm8gKilpZC1cXHUwMDNlZHJpdmVyX2RhdGE7XFxuIDEyMjpcXHRcXHRzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgKnBsYXQ7XFxuIDEyMzpcXHRcXHRzdHJ1Y3Qgc3RtbWFjX3Jlc291cmNlcyByZXMgPSB7fTtcXG4gMTI0OlxcdFxcdGludCByZXQ7XFxuIDEyNTpcXHRcXHRpbnQgaTtcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0cGxhdCA9IHN0bW1hY19wbGF0X2RhdF9hbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4gMTI4OlxcdFxcdGlmICghcGxhdClcXG4gMTI5OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxMzA6XFx0XFxuIDEzMTpcXHRcXHRwbGF0LVxcdTAwM2VtZGlvX2J1c19kYXRhID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzMjpcXHRcXHRcXHRcXHRcXHRcXHQgICBzaXplb2YoKnBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpLFxcbiAxMzM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuIDEzNDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZW1kaW9fYnVzX2RhdGEpXFxuIDEzNTpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gMTM2OlxcdFxcbiAxMzc6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnID0gZGV2bV9remFsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuIDEzODpcXHRcXHRcXHRcXHRcXHRcXHQgICAgIHNpemVvZigqcGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnKSxcXG4gMTM5OlxcdFxcdFxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCk7XFxuIDE0MDpcXHRcXHRpZiAoIXBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZylcXG4gMTQxOlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiAxNDI6XFx0XFxuIDE0MzpcXHRcXHQvKiBFbmFibGUgcGNpIGRldmljZSAqL1xcbiAxNDQ6XFx0XFx0cmV0ID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbiAxNDU6XFx0XFx0aWYgKHJldCkge1xcbiAxNDY6XFx0XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiJXM6IEVSUk9SOiBmYWlsZWQgdG8gZW5hYmxlIGRldmljZVxcXFxuXFxcIixcXG4gMTQ3OlxcdFxcdFxcdFxcdF9fZnVuY19fKTtcXG4gMTQ4OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDE0OTpcXHRcXHR9XFxuIDE1MDpcXHRcXG4gMTUxOlxcdFxcdC8qIEdldCB0aGUgYmFzZSBhZGRyZXNzIG9mIGRldmljZSAqL1xcbiAxNTI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBDSV9TVERfTlVNX0JBUlM7IGkrKykge1xcbiAxNTM6XFx0XFx0XFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgaSkgPT0gMClcXG4gMTU0OlxcdFxcdFxcdFxcdGNvbnRpbnVlO1xcbiAxNTU6XFx0XFx0XFx0cmVzLmFkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCBpLCBTVE1NQUNfUkVTT1VSQ0VfTkFNRSk7XFxuIDE1NjpcXHRcXHRcXHRpZiAoSVNfRVJSKHJlcy5hZGRyKSlcXG4gMTU3OlxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHJlcy5hZGRyKTtcXG4gMTU4OlxcdFxcdFxcdGJyZWFrO1xcbiAxNTk6XFx0XFx0fVxcbiAxNjA6XFx0XFxuIDE2MTpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMTYyOlxcdFxcbiAxNjM6XFx0XFx0cmV0ID0gaW5mby1cXHUwMDNlc2V0dXAocGRldiwgcGxhdCk7XFxuIDE2NDpcXHRcXHRpZiAocmV0KVxcbiAxNjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMTY2OlxcdFxcbiAxNjc6XFx0XFx0cmVzLndvbF9pcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDE2ODpcXHRcXHRyZXMuaXJxID0gcGRldi1cXHUwMDNlaXJxO1xcbiAxNjk6XFx0XFxuIDE3MDpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZXRzb2VlID0gMTtcXG4gMTcxOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4cGVlID0gMTtcXG4gMTcyOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbWVzdGVlID0gMTtcXG4gMTczOlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlbXJ4ZWUgPSAxO1xcbiAxNzQ6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VtdHhlZSA9IDE7XFxuIDE3NTpcXHRcXHRwbGF0LVxcdTAwM2VzYWZldHlfZmVhdF9jZmctXFx1MDAzZWVwc2kgPSAxO1xcbiAxNzY6XFx0XFx0cGxhdC1cXHUwMDNlc2FmZXR5X2ZlYXRfY2ZnLVxcdTAwM2VlZHBwID0gMTtcXG4gMTc3OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNlcHJ0eWVuID0gMTtcXG4gMTc4OlxcdFxcdHBsYXQtXFx1MDAzZXNhZmV0eV9mZWF0X2NmZy1cXHUwMDNldG1vdXRlbiA9IDE7XFxuIDE3OTpcXHRcXG4gMTgwOlxcdFxcdHBsYXQtXFx1MDAzZXN1c3BlbmQgPSBzdG1tYWNfcGNpX3BsYXRfc3VzcGVuZDtcXG4gMTgxOlxcdFxcdHBsYXQtXFx1MDAzZXJlc3VtZSA9IHN0bW1hY19wY2lfcGxhdF9yZXN1bWU7XFxuIDE4MjpcXHRcXG4gMTgzOlxcdFxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbiAxODQ6XFx0fVxcbiAxODU6XFx0XFxuIDE4NjpcXHQvKipcXG4gMTg3OlxcdCAqIHN0bW1hY19wY2lfcmVtb3ZlXFxuIDE4ODpcXHQgKlxcbiAxODk6XFx0ICogQHBkZXY6IHBsYXRmb3JtIGRldmljZSBwb2ludGVyXFxuIDE5MDpcXHQgKiBEZXNjcmlwdGlvbjogdGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgbWFpbiB0byBmcmVlIHRoZSBuZXQgcmVzb3VyY2VzLlxcbiAxOTE6XFx0ICovXFxuIDE5MjpcXHRzdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gMTkzOlxcdHtcXG4gMTk0OlxcdFxcdHN0bW1hY19kdnJfcmVtb3ZlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAxOTU6XFx0fVxcbiAxOTY6XFx0XFxuIDE5NzpcXHQvKiBzeW50aGV0aWMgSUQsIG5vIG9mZmljaWFsIHZlbmRvciAqL1xcbiAxOTg6XFx0I2RlZmluZSBQQ0lfVkVORE9SX0lEX1NUTU1BQ1xcdFxcdDB4MDcwMFxcbiAxOTk6XFx0XFxuIDIwMDpcXHQjZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbiAyMDE6XFx0I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuIDIwMjpcXHRcXG4gMjAzOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBzdG1tYWNfaWRfdGFibGVbXSA9IHtcXG4gMjA0OlxcdFxcdHsgUENJX0RFVklDRV9EQVRBKFNUTU1BQywgU1RNTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDU6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1RNSUNSTywgTUFDLCBcXHUwMDI2c3RtbWFjX3BjaV9pbmZvKSB9LFxcbiAyMDY6XFx0XFx0eyBQQ0lfREVWSUNFX0RBVEEoU1lOT1BTWVMsIEdNQUM1X0lELCBcXHUwMDI2c25wc19nbWFjNV9wY2lfaW5mbykgfSxcXG4gMjA3OlxcdFxcdHt9XFxuIDIwODpcXHR9O1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgc3RtbWFjX2lkX3RhYmxlKTtcXG4gMjExOlxcdFxcbiAyMTI6XFx0c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHN0bW1hY19wY2lfZHJpdmVyID0ge1xcbiAyMTM6XFx0XFx0Lm5hbWUgPSBTVE1NQUNfUkVTT1VSQ0VfTkFNRSxcXG4gMjE0OlxcdFxcdC5pZF90YWJsZSA9IHN0bW1hY19pZF90YWJsZSxcXG4gMjE1OlxcdFxcdC5wcm9iZSA9IHN0bW1hY19wY2lfcHJvYmUsXFxuIDIxNjpcXHRcXHQucmVtb3ZlID0gc3RtbWFjX3BjaV9yZW1vdmUsXFxuIDIxNzpcXHRcXHQuZHJpdmVyICAgICAgICAgPSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjA4LjMyMTAzNDkxMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzIxODkyODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgUHJvYmUgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHRoZSBjb2RlJ3MgY2FsbGluZyBgc3RtbWFjX2R2cl9wcm9iZWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBkaXZlIGludG8gdGhhdCBmdW5jdGlvbiwgc2VlIHdoYXQncyBoYXBwZW5pbmcgd2l0aGluIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJvYmUgcm91dGluZSBmb3IgdGhpcyBTVE1NQUMgZHJpdmVyLiBJIG5lZWQgdG8gc2VlIGhvdyBpdCdzIGluaXRpYWxpemVkLCBpZiBpdCBpcyB1c2luZyBhbnkgb2YgdGhlIGF2YWlsYWJsZSByZXNvdXJjZXMuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgZGV2aWNlIHNldHVwIHNob3VsZCBiZS4gTGV0J3Mgc2VlIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIGhhcmR3YXJlIGFuZCBhbnkgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uIGRhdGEuIEknbSBsb29raW5nIGZvciB0aGUgZXNzZW50aWFsIHN0ZXBzIGl0IHRha2VzIHRvIGlkZW50aWZ5LCBpbml0aWFsaXplLCBhbmQgY2xhaW0gdGhlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTgyMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzU6MTcuMDQyOTMwNDcyWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzUxNjM1OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19kdnJfcHJvYmVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYz0yODM9c3RhdGljIGludCBkd2NfZXRoX2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jLTMyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1kd2MtcW9zLWV0aC5jOjMzMDpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtZHdjLXFvcy1ldGguYy0zMzEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYz00Mj1zdGF0aWMgaW50IGludGVsX2V0aF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC1wbGF0LmMtMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYzoxMTg6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLXBsYXQuYy0xMTktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWludGVsLmM9MTI2Mz1zdGF0aWMgaW50IGludGVsX2V0aF9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jLTEzNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzoxMzQxOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy0xMzQyLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYz0zNzQ9c3RhdGljIGludCBpcHE4MDZ4X2dtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaXBxODA2eC5jOjQ4MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWlwcTgwNnguYy00ODQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jPTQ5OD1zdGF0aWMgaW50IGxvb25nc29uX2R3bWFjX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jLTU2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1sb29uZ3Nvbi5jOjU2MjpcXHRyZXQgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29uLmMtNTYzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmM9NDI9c3RhdGljIGludCBscGMxOHh4X2R3bWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1scGMxOHh4LmMtNjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jOjY4OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbHBjMTh4eC5jLTY5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM9NTk5PXN0YXRpYyBpbnQgbWVkaWF0ZWtfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmMtNjQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1lZGlhdGVrLmM6NjQyOlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZWRpYXRlay5jLTY0My1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYz00Nz1zdGF0aWMgaW50IG1lc29uNl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbi5jOjczOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb24uYy03NC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM9MzgyPXN0YXRpYyBpbnQgbWVzb244Yl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTQ2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tZXNvbjhiLmM6NDY0OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbWVzb244Yi5jLTQ2NS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYz0yOTM9c3RhdGljIGludCBtb3RvcmNvbW1fcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLW1vdG9yY29tbS5jLTM1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1tb3RvcmNvbW0uYzozNTk6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdCwgXFx1MDAyNnJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtbW90b3Jjb21tLmMtMzYwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYz00OD1zdGF0aWMgaW50IHJ6bjFfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXJ6bjEuYy02Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmM6Njg6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcnpuMS5jLTY5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zb3BoZ28uYz0zNT1zdGF0aWMgaW50IHNvcGhnb19kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmMtNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc29waGdvLmM6NjU6XFx0cmV0dXJuIHN0bW1hY19kdnJfcHJvYmUoZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvcGhnby5jLTY2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM9MTQ3PXN0YXRpYyBpbnQgc3BhY2VtaXRfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmMtMjA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNwYWNlbWl0LmM6MjA3OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zcGFjZW1pdC5jLTIwOC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdGFyZml2ZS5jPTkwPXN0YXRpYyBpbnQgc3RhcmZpdmVfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMtMTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmM6MTUzOlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXRfZGF0LCBcXHUwMDI2c3RtbWFjX3Jlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RhcmZpdmUuYy0xNTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYz01MjU9c3RhdGljIGludCBzdG0zMl9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYy01NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3RtMzIuYzo1Nzk6XFx0cmV0ID0gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0X2RhdCwgXFx1MDAyNnN0bW1hY19yZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0bTMyLmMtNTgwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jPTExMDU9c3RhdGljIGludCBzdW44aV9kd21hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN1bjhpLmM6MTIwMjpcXHQvKiB0aGUgTUFDIGlzIHJ1bnRpbWUgc3VzcGVuZGVkIGFmdGVyIHN0bW1hY19kdnJfcHJvYmUoKSwgc28gd2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDMtXFx0ICogbmVlZCB0byBlbnN1cmUgdGhlIE1BQyByZXN1bWUgYmFjayBiZWZvcmUgb3RoZXIgb3BlcmF0aW9ucyBzdWNoXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jLTEyMDgtXFx0LyogVGhlIG11eCBtdXN0IGJlIHJlZ2lzdGVyZWQgYWZ0ZXIgcGFyZW50IE1ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1zdW44aS5jOjEyMDk6XFx0ICogc28gYWZ0ZXIgc3RtbWFjX2R2cl9wcm9iZSgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtc3VuOGkuYy0xMjEwLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz0yMTQ9c3RhdGljIGludCB0ZWdyYV9tZ2JlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTM3NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jOjM3NjpcXHRlcnIgPSBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIFxcdTAwMjZyZXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMzc3LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdmlzY29udGkuYz0yMDU9c3RhdGljIGludCB2aXNjb250aV9ldGhfZHdtYWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmMtMjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXZpc2NvbnRpLmM6MjM3OlxcdHJldCA9IHN0bW1hY19kdnJfcHJvYmUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9kYXQsIFxcdTAwMjZzdG1tYWNfcmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy12aXNjb250aS5jLTIzOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDEzPXZvaWQgc3RtbWFjX2R2cl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTQ6aW50IHN0bW1hY19kdnJfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2aWNlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxNS1cXHRcXHQgICAgIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTc3ODc9RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3BsYXRfZGF0X2FsbG9jKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc3ODgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3Nzg5OnN0YXRpYyBpbnQgX19zdG1tYWNfZHZyX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldmljZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc3OTAtXFx0XFx0XFx0ICAgICAgc3RydWN0IHBsYXRfc3RtbWFjZW5ldF9kYXRhICpwbGF0X2RhdCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5MS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgwOTI6ICogc3RtbWFjX2R2cl9wcm9iZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODA5My0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTAwLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODEwMTppbnQgc3RtbWFjX2R2cl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBwbGF0X3N0bW1hY2VuZXRfZGF0YSAqcGxhdF9kYXQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTAyLVxcdFxcdCAgICAgc3RydWN0IHN0bW1hY19yZXNvdXJjZXMgKnJlcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODExMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgxMTI6XFx0cmV0ID0gX19zdG1tYWNfZHZyX3Byb2JlKGRldiwgcGxhdF9kYXQsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MTEzLVxcdGlmIChyZXQgXFx1MDAyNlxcdTAwMjYgcGxhdF9kYXQtXFx1MDAzZWV4aXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTctfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODExODpFWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfZHZyX3Byb2JlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgxMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmM9MTE4PXN0YXRpYyBpbnQgc3RtbWFjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjE4MzpcXHRyZXR1cm4gc3RtbWFjX2R2cl9wcm9iZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBwbGF0LCBcXHUwMDI2cmVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTg0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jPTg0OD1pbnQgc3RtbWFjX3BsdGZyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGxhdGZvcm0uYy04NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6ODU3OlxcdHJldHVybiBzdG1tYWNfZHZyX3Byb2JlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIHBsYXQsIHJlcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtODU4LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzU6MTguNzk0NTcxODA5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNDE0MDI3MzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgc3RtbWFjIERyaXZlciBhbmQgSWRlbnRpZnlpbmcgRnV6emluZyBUYXJnZXRzKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjYCBkcml2ZXIgY29kZSwgc3BlY2lmaWNhbGx5IGhvdyBpdCBoYW5kbGVzIHF1ZXVlIHNlbGVjdGlvbi4gSXQgc2VlbXMgdGhhdCBgc3RtbWFjX2R2cl9wcm9iZWAgZXZlbnR1YWxseSBjYWxscyBgX19zdG1tYWNfZHZyX3Byb2JlYCwgd2hpY2ggcmVnaXN0ZXJzIHRoZSBuZXR3b3JrIGRldmljZS4gVGhlIGNydWNpYWwgcG9pbnQgaGVyZSBpcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCBgc3l6a2FsbGVyYCwgdXNpbmcgYHN5el9wY2lfZGV2aWNlYCB0byBpbmplY3QgYSBQQ0kgZGV2aWNlIHdpdGggdGhlIHJpZ2h0IHZlbmRvciBhbmQgZGV2aWNlIElEcy4gVGhpcyBtZWFucyB3ZSBjYW4gZGVmaW5pdGVseSBnZXQgdGhlIGRyaXZlciB0byBiaW5kIHRvIHRoaXMgZGV2aWNlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIG1hcCB0aGUgQkFScywgcmVnaXN0ZXIgdGhlIG5ldGRldiwgYW5kIHRoZW4sIGNydWNpYWxseSwgc2VuZCBwYWNrZXRzIHRocm91Z2ggaXQuIFRoYXQgZ2V0cyB1cyB0byBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAuIFRoaXMgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuXG5cbk5vdywgYWJvdXQgdGhlIHBhdGNoIGl0c2VsZi4gSXQncyBtb2RpZnlpbmcgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBCZWZvcmUgdGhlIHBhdGNoLCB0aGUgY29kZSB3b3VsZCB1c2UgYSBoYXJkY29kZWQgdmFsdWUgb2YgYDBgIGlmIFRTTy9VU08gd2FzIGluIHVzZSwgbm93IGl0J3Mgc2VsZWN0aW5nIGEgcXVldWUgd2l0aCBgbmV0ZGV2X3BpY2tfdHhgIGFuZCB2ZXJpZnlpbmcgaWYgdGhlIHNlbGVjdGVkIHF1ZXVlIGlzIHBlcm1pdHRlZCBmb3IgVFNPLiBJZiBub3QsIGl0IGZhbGxzIGJhY2sgdG8gcXVldWUgMC4gU28gaXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBjb3JlIGxvZ2ljLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIGZ1enogYHN0bW1hY19zZWxlY3RfcXVldWVgLiBJdCdzIGEgaG90LXBhdGggZnVuY3Rpb247IGl0IGdldHMgY2FsbGVkIGZvciBldmVyeSB0cmFuc21pdHRlZCBwYWNrZXQuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCdzIGd1aWRlbGluZTogYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMsIHByaW9yaXRpemUgbm9uLXN0YXRpYyBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMuIE9vcHMhIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIGEgcHJvYmxlbS5cblxuU28sIEkgbmVlZCB0byBmaW5kIGEgYmV0dGVyIHRhcmdldC4gTWF5YmUgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgPyBMZXQncyBjaGVjayBpZiBpdCdzIHN0YXRpYy4gVGhhdCB3b3VsZCBiZSBhIGJldHRlciB0YXJnZXQgZm9yIGZ1enppbmcgYmFzZWQgb24gdGhlIHByb21wdCdzIGd1aWRlbGluZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0MTI2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjI5LjIwODYwMjk4OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3NjE3Mjk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYwND1zdGF0aWMgdm9pZCBzdG1tYWNfc2FmZXR5X2ZlYXRfY29uZmlndXJhdGlvbihzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNjE5OnN0YXRpYyBib29sIHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYyMC1cXHRcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGNoYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2Mzg9c3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxMy1cXHRcXHRmb3IgKGNoYW4gPSAwOyBjaGFuIFxcdTAwM2MgdHhfY250OyBjaGFuKyspIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM3MTQ6XFx0XFx0XFx0aWYgKCFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIGNoYW4pKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzcxNS1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDk4ND1zdGF0aWMgbmV0ZGV2X2ZlYXR1cmVzX3Qgc3RtbWFjX2ZlYXR1cmVzX2NoZWNrKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTUwMDUtXFx0aWYgKHNrYl9pc19nc28oc2tiKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NTAwNjpcXHRcXHRpZiAoIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA3LVxcdFxcdCAgICAhc3RtbWFjX3Rzb192YWxpZF9wYWNrZXQoc2tiKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjQ0NT1zdGF0aWMgdTE2IHN0bW1hY19zZWxlY3RfcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1MS1cXHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cXHUwMDNlZ3NvX3R5cGUgXFx1MDAyNiBwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY0NTI6XFx0ICAgICFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjQ1My1cXHRcXHQvKiBHU08gZnJhbWVzIG5lZWQgSFcgVFNPL1VTTywgd2hpY2ggY2Fubm90IHJ1biBvbiBUQlMgcXVldWVzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNTozMC44ODQ3ODQ4MjlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODIxMjc4OTMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1c2luZyBvbiB0aGUgc3RtbWFjIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBhbmFseXppbmcgdGhpcyBwYXRjaC4gRmlyc3QgdGhvdWdodDogYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWRgIGlzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcgYnV0IHByb2JhYmx5IG5vdCByZWxldmFudCBoZXJlLiBUaGVuIEkgc2VlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyAqYWxzbyogc3RhdGljLiBIbW0sIGlzICphbnl0aGluZyogbm9uLXN0YXRpYz8gVGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAsIHdoaWNoIGlzIGEgYml0IG9mIGEgY29uY2Vybi4gSXQncyBhIGhvdC1wYXRoIGZ1bmN0aW9uIGJlY2F1c2UgaXQncyB1c2VkIGJ5IGBuZG9fc2VsZWN0X3F1ZXVlYC4gVGhlIGluc3RydWN0aW9ucyBzYXkgdG8gYXZvaWQgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgaW4gYEZvY3VzU3ltYm9sc2AgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLiBJZiBJIGRvbid0IGxpc3QgYW55dGhpbmcsIFN5emthbGxlciB3aWxsIGp1c3QgdXNlIHRoZSBjb3ZlcmFnZSBmcm9tIHRoZSBwYXRjaC5cblxuV2FpdCBhIHNlY29uZOKApiB0aGUgcHJvbXB0ICphbHNvKiB3YW50cyBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkLCBhbmQgcHJlZmVycyBub24tc3RhdGljIGVudHJ5cG9pbnRzLiBJcyBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgYSAqZ2VuZXJpYyogaG90LXBhdGg/IE5vLCBpdCdzIHNwZWNpZmljIHRvIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCdzIG5vdCBsaWtlIGBkZXZfcXVldWVfeG1pdGAgd2hpY2ggaXMgKnZlcnkqIGdlbmVyaWMuIEV2ZW4gdGhvdWdoIGl0J3MgaG90LXBhdGggZm9yICp0aGlzKiBkcml2ZXIsIGl0J3Mgbm90IGEga2VybmVsLXdpZGUgYm90dGxlbmVjay5cblxuTGV0IG1lIHRoaW5r4oCmIGlzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbiBpbXBhY3RlZD8gTm8sIGp1c3QgYHN0bW1hY19zZWxlY3RfcXVldWVgLiBPa2F5LCBvbmUgbW9yZSBjaGVjazogaXMgaXQgaW5saW5lZD8gU2luY2UgaXQncyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBuZG9fc2VsZWN0X3F1ZXVlYCwgaXQncyAqbm90KiBpbmxpbmVkLiBQZXJmZWN0LiBJJ2xsIGxpc3QgYHN0bW1hY19zZWxlY3RfcXVldWVgIGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgdGhlIHJpZ2h0IGNob2ljZS5cblxuTm93LCBmb3IgQ09ORklHcy4gV2hhdCBkbyBJIG5lZWQgdG8gYWN0dWFsbHkgKnRlc3QqIHRoaXMgdmlhIFBDST8gSSB0aGluayBpdCdzIGBDT05GSUdfU1RNTUFDX0VUSGAgYW5kIGBDT05GSUdfU1RNTUFDX1BDSWAsIGJ1dCBsZXQgbWUgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnYCBqdXN0IHRvIGJlIGNlcnRhaW4gb2YgdGhlIGV4YWN0IG5hbWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjAyOCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNTozOS4wOTc1NzczOTNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MjQ0NDM1MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ19cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjpjb25maWcgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0xOD1pZiBTVE1NQUNfRVRIXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yMS1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI5OmNvbmZpZyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMwLVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUGxhdGZvcm0gYnVzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM3MT1lbmRpZiAjIFNUTU1BQ19QTEFURk9STVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM1OjQxLjAyMjAyODAwNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzM5MDcxNTAzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkFuYWx5emluZyBTVE1NQUMgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcyB0aGUga2V5IGNvbmZpZ3VyYXRpb25zIGhlcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZWlyIHJlbGF0aW9uc2hpcC4gQWgsIGEgZGVwZW5kZW5jeSEgYFNUTU1BQ19QQ0lgIHJlbGllcyBvbiBib3RoIGBQQ0lgIGFuZCBgU1RNTUFDX0VUSGAuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBhbHJlYWR5IGtub3cgd2hhdCBpbXBsaWNhdGlvbnMgYSBkZXBlbmRlbmN5IGxpa2UgdGhpcyBoYXMuIEl0J3MgdGltZSB0byBkaXZlIGRlZXBlciBhbmQgY2xhcmlmeSB0aGUgbmF0dXJlIG9mIHRoZXNlIHJlbGF0aW9uc2hpcHMsIHNvIGxldCBtZSBpbW1lZGlhdGVseSBjaGVjayB0aGUgc3BlY2lmaWNzIHN1cnJvdW5kaW5nIGBTVE1NQUNfUENJYCBhbmQgaXRzIGRlcGVuZGVuY2llcy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyBhIGhhcmQgZGVwZW5kZW5jeSwgYSBzb2Z0IG9uZSwgYW5kIHdoYXQgY29uc2VxdWVuY2VzIHRoZSBvdGhlciBjb25maWd1cmF0aW9ucyB3aWxsIGJyaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzQ0NiwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM2OjA4LjQxMjc0NTc0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTkxMjQzMDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTVE1NQUNfUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mzk4PWNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6NDA3OmNvbmZpZyBTVE1NQUNfUENJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM2OjEwLjAwMzk5NDA3MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTQ0NTEwNjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgU1RNTUFDIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgU1RNTUFDIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IHRoZSBgS2NvbmZpZ2AgZmlsZS4gSSdtIHRoaW5raW5nLCBsaW5lIDQwNyBzZWVtcyBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydCwgZ2l2ZW4gdGhlIGdlbmVyYWwgc3RydWN0dXJlIG9mIHRoZXNlIGZpbGVzLiBUaGF0IHNlY3Rpb24gaXMgbGlrZWx5IGdvaW5nIHRvIGhvbGQgc29tZSBpbXBvcnRhbnQgY2x1ZXMgYWJvdXQgd2hhdCBmZWF0dXJlcyBhcmUgYXZhaWxhYmxlLCBob3cgdGhleSdyZSBlbmFibGVkLCBhbmQgcG90ZW50aWFsbHkgYW55IGRlcGVuZGVuY2llcyBvciBidWlsZC10aW1lIGNvbnNpZGVyYXRpb25zIGZvciB0aGlzIHBhcnRpY3VsYXIgU1RNaWNyb2VsZWN0cm9uaWNzIE1BQyBjb250cm9sbGVyIGltcGxlbWVudGF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBhcm91bmQgdmFyaW91cyBQSFkgdHlwZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBvcHRpb25zLCBvciBtYXliZSBldmVuIGRpZmZlcmVudCB2YXJpYW50cyBvZiB0aGUgU1RNTUFDIGl0c2VsZi4gTGV0J3MgZ2V0IHRvIHRoZSBzcGVjaWZpY3MgYW5kIHNlZSB3aGF0J3Mgb24gb2ZmZXIgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3ODA2LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6MTMuNTQ4NTA4NTc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM5NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM5NTpcXHRcXHQgIFRoaXMgc2VsZWN0cyB0aGUgTE9PTkdTT04gUENJIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlcixcXG4gMzk2OlxcdFxcdCAgU3VwcG9ydCBmb3IgZXRoZXJuZXQgY29udHJvbGxlciBvbiBMb29uZ3Nvbi0ySzEwMDAgU29DIGFuZCBMUzdBMTAwMCBicmlkZ2UuXFxuIDM5NzpcXHRcXG4gMzk4OlxcdGNvbmZpZyBEV01BQ19NT1RPUkNPTU1cXG4gMzk5OlxcdFxcdHRyaXN0YXRlIFxcXCJNb3RvcmNvbW0gUENJIERXTUFDIHN1cHBvcnRcXFwiXFxuIDQwMDpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MDE6XFx0XFx0c2VsZWN0IE1PVE9SQ09NTV9QSFlcXG4gNDAyOlxcdFxcdHNlbGVjdCBTVE1NQUNfTElCUENJXFxuIDQwMzpcXHRcXHRoZWxwXFxuIDQwNDpcXHRcXHQgIFRoaXMgZW5hYmxlcyBnbHVlIGRyaXZlciBmb3IgTW90b3Jjb21tIERXTUFDLWJhc2VkIFBDSSBFdGhlcm5ldFxcbiA0MDU6XFx0XFx0ICBjb250cm9sbGVycy4gQ3VycmVudGx5IG9ubHkgWVQ2ODAxIGlzIHN1cHBvcnRlZC5cXG4gNDA2OlxcdFxcbiA0MDc6XFx0Y29uZmlnIFNUTU1BQ19QQ0lcXG4gNDA4OlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcbiA0MDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gNDEwOlxcdFxcdGRlcGVuZHMgb24gQ09NTU9OX0NMS1xcbiA0MTE6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDEyOlxcdFxcdGhlbHBcXG4gNDEzOlxcdFxcdCAgVGhpcyBzZWxlY3RzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBidXMgc3VwcG9ydCBmb3IgdGhlIHN0bW1hYyBkcml2ZXIuXFxuIDQxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIHdhcyB0ZXN0ZWQgb24gWExJTlggWEMyVjMwMDAgRkYxMTUyQU1UMDIyMVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoxMy41NDg2MTExNTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE0NTY5NTg5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU1RNTUFDIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIFNUTU1BQyBjb25maWd1cmF0aW9ucyDigJMgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCBsZXQncyBkaXNzZWN0IHRoZSBkZXBlbmRlbmNpZXMuXCIgU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGBTVE1NQUNfRVRIYCByZWxpZXMgb24uIEFoLCBoZXJlIHdlIGFyZTogYFNUTU1BQ19FVEhgIGhhcyBhIGRlcGVuZGVuY3kgb24gYm90aCBgSEFTX0lPTUVNYCBhbmQgYEhBU19ETUFgLiBHb3QgaXQuIE5vdywgSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aG9zZS4gV2hhdCBpcyBhY3R1YWxseSAqcmVxdWlyaW5nKiB0aG9zZSBvcHRpb25zPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIGBTVE1NQUNfRVRIYCwgYW5kIHRob3NlIGRlcGVuZGVuY2llcyBhcmUgdGhlIGNyaXRpY2FsIHBhdGguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4Mzc3LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoxNy42OTQzMTAzMTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU5ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA3VDE1OjM2OjE3LjY5NDM4ODIyMloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTgyNzM5MTM2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgb3ZlciB0aGlzIHBhdGNoIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLCBhbmQgSSB0aGluayBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiBpdC4gVGhlIGtleSBpcyB1bmRlcnN0YW5kaW5nIHRoYXQgaXQgbW9kaWZpZXMgdGhlIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBmdW5jdGlvbi4gSXQncyBjbGVhciB0aGF0IHRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCBlaXRoZXIgdGhyb3VnaCBQQ0kgKGBTVE1NQUNfUENJYCkgb3IgcGxhdGZvcm0gZGV2aWNlcy4gQW5kIFN5emthbGxlciBjYW4gdGVzdCBpdCB1c2luZyBgc3l6X3BjaV9kZXZpY2VgIG9yIGBzeXpfcGxhdGZvcm1fZGV2aWNlYCwgd2hpY2ggaXMgZ29vZC5cblxuVGhlIGZ1bmN0aW9uYWwgaW1wYWN0IHNlZW1zIHRvIGJlIGEgY2hhbmdlIGluIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgcXVldWUgc2VsZWN0aW9uIHNwZWNpZmljYWxseSBmb3IgR1NPIGZyYW1lcy4gVGhhdCBtYWtlcyBpdCB3b3J0aCBmdXp6aW5nLCBkZWZpbml0ZWx5LlxuXG5UaGUgcXVlc3Rpb24gdGhhdCBwb3BwZWQgaW50byBteSBoZWFkIHdhcyB3aGV0aGVyIGBzdG1tYWNfc2VsZWN0X3F1ZXVlYCBpcyBhIGhvdC1wYXRoIGZ1bmN0aW9uLiBUaGlua2luZyBhYm91dCBpdCwgc2luY2UgaXQncyBjYWxsZWQgZm9yIGV2ZXJ5IHRyYW5zbWl0dGVkIHBhY2tldCwgaXQgKmlzKiBhIGhvdC1wYXRoLiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSB3YXJucyBhZ2FpbnN0IGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gYXZvaWQgYmlhc2luZyB0aGUgdGVzdGluZy4gSG93ZXZlciwgYWZ0ZXIgdGhpbmtpbmcgaXQgdGhyb3VnaCwgSSd2ZSBkZWNpZGVkIHRvIGxpc3QgaXQuIEl0J3Mgbm90IGEgZ2VuZXJpYyBrZXJuZWwgZnVuY3Rpb24gbGlrZSBgZGV2X3F1ZXVlX3htaXRgIG9yIGBrbWFsbG9jYC4gSXQncyAqc3BlY2lmaWMqIHRvIHRoZSBTVE1NQUMgZHJpdmVyLCBhbmQgaXQncyB0aGUgb25seSBmdW5jdGlvbiB0aGF0J3MgbW9kaWZpZWQgYnkgdGhlIHBhdGNoLiBFdmVuIGlmIFN5emthbGxlciB3aWxsIHBpY2sgaXQgdXAgdGhyb3VnaCBjb3ZlcmFnZSB3aXRob3V0IGxpc3RpbmcgaXQsIGV4cGxpY2l0bHkgY2FsbGluZyBpdCBvdXQgZm9jdXNlcyB0aGUgZnV6emluZy5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCwgYW5kIHllcywgYHN0bW1hY19zZWxlY3RfcXVldWVgIGlzIHRoZSAqb25seSogZnVuY3Rpb24gY2hhbmdlZC5cblxuU28sIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGUgZm9sbG93aW5nOlxuXG4qICAgKipXb3J0aEZ1enppbmc6IFRydWUqKlxuKiAgICoqRm9jdXNTeW1ib2xzOiBcXFtcInN0bW1hY1xcX3NlbGVjdFxcX3F1ZXVlXCJcXF0qKlxuKiAgICoqRW5hYmxlQ29uZmlnczogXFxbXCJTVE1NQUNcXF9FVEhcIiwgXCJTVE1NQUNcXF9QQ0lcIlxcXSoqXG4qICAgKipSZWFzb25pbmc6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiKipcblxuVGhhdCBzaG91bGQgY292ZXIgZXZlcnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4NzksIk91dHB1dFRva2VucyI6ODksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoyOS41MjE3ODI2MzFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NzM3MzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiU1RNTUFDX0VUSFwiLFxuICAgIFwiU1RNTUFDX1BDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInN0bW1hY19zZWxlY3RfcXVldWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcXVldWUgc2VsZWN0aW9uIGxvZ2ljIGZvciBHU08gZnJhbWVzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRFdNQUMgZHJpdmVyLiBUaGUgZHJpdmVyIGNhbiBiZSBwcm9iZWQgdmlhIFBDSSBhbmQgdGVzdGVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3NlbGVjdF9xdWV1ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBxdWV1ZSBzZWxlY3Rpb24gbG9naWMgZm9yIEdTTyBmcmFtZXMgaW4gdGhlIFNUTWljcm9lbGVjdHJvbmljcyBEV01BQyBkcml2ZXIuIFRoZSBkcml2ZXIgY2FuIGJlIHByb2JlZCB2aWEgUENJIGFuZCB0ZXN0ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoyOS41OTkxNjQ4NDlaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NzY2MzIzNzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6MjkuNTk5NzUzMjI5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE1NzY1NzMwODQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNlbGVjdGluZyBhIHRyYW5zbWlzc2lvbiBxdWV1ZSBmb3IgbmV0d29yayBwYWNrZXRzIChza19idWZmKSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgY2hlY2tzIHRoZSBgZ3NvX3R5cGVgIG9mIHRoZSBwYWNrZXQgYWdhaW5zdCBgcHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXIncyBwcml2YXRlIGRhdGEgc3RydWN0dXJlLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBxdWV1ZSBzZWxlY3Rpb24gb3Igb3V0LW9mLWJvdW5kcyBxdWV1ZSBpbmRpY2VzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAxOWY1M2VjNDRmNjgyMjJiMTIwMjE2ODRjYTA2YTAwOGMxNGRkMWNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyA3IDE1OjM0OjE5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IGIyYjdkMDI0MmRkM2MuLjk5ZmM3MzEzZjI0N2UgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtNjQ0NSwxOSArNjQ0NSwxOCBAQCBzdGF0aWMgaW50IHN0bW1hY19zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG4gc3RhdGljIHUxNiBzdG1tYWNfc2VsZWN0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpzYl9kZXYpXG4ge1xuLVx0aW50IGdzbyA9IHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fdHlwZTtcbitcdHUzMiBxdWV1ZSA9IG5ldGRldl9waWNrX3R4KGRldiwgc2tiLCBOVUxMKSAlIGRldi1cdTAwM2VyZWFsX251bV90eF9xdWV1ZXM7XG4rXHRzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xuIFxuLVx0aWYgKGdzbyBcdTAwMjYgKFNLQl9HU09fVENQVjQgfCBTS0JfR1NPX1RDUFY2IHwgU0tCX0dTT19VRFBfTDQpKSB7XG4tXHRcdC8qXG4tXHRcdCAqIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBUU08vVVNPXG4tXHRcdCAqIGNhcGFibGUgUXVldWVzLiBMZXQncyB1c2UgYWx3YXlzIHRoZSBRdWV1ZSAwXG4tXHRcdCAqIGJlY2F1c2UgaWYgVFNPL1VTTyBpcyBzdXBwb3J0ZWQgdGhlbiBhdCBsZWFzdCB0aGlzXG4tXHRcdCAqIG9uZSB3aWxsIGJlIGNhcGFibGUuXG4rXHRpZiAoKHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vnc29fdHlwZSBcdTAwMjYgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlcykgXHUwMDI2XHUwMDI2XG4rXHQgICAgIXN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQocHJpdiwgcXVldWUpKSB7XG4rXHRcdC8qIEdTTyBmcmFtZXMgbmVlZCBIVyBUU08vVVNPLCB3aGljaCBjYW5ub3QgcnVuIG9uIFRCUyBxdWV1ZXMuXG4rXHRcdCAqIEZhbGwgYmFjayB0byB0aGUgcXVldWUgcmVzZXJ2ZWQgZm9yIFRTTyAocXVldWUgMCkuXG4gXHRcdCAqL1xuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdHJldHVybiBuZXRkZXZfcGlja190eChkZXYsIHNrYiwgTlVMTCkgJSBkZXYtXHUwMDNlcmVhbF9udW1fdHhfcXVldWVzO1xuK1x0cmV0dXJuIHF1ZXVlO1xuIH1cbiBcbiBzdGF0aWMgaW50IHN0bW1hY19zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHZvaWQgKmFkZHIpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjoyOS41OTk3NTY0OTlaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTg5NjI4MzIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHN0bW1hYyBRdWV1ZSBTZWxlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgc3RtbWFjX3NlbGVjdF9xdWV1ZWAgd2l0aGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgZHJpdmVyLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFib3V0IGRldGVybWluaW5nIHdoaWNoIHRyYW5zbWl0IHF1ZXVlIGEgZ2l2ZW4gYHNrX2J1ZmZgIChzb2NrZXQgYnVmZmVyKSBzaG91bGQgYmUgYXNzaWduZWQgdG8uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UgaW4gbG9naWMgYW5kIGl0cyBwb3RlbnRpYWwgaW1wbGljYXRpb25zLCBwYXJ0aWN1bGFybHkgaW4gdGVybXMgb2YgbWVtb3J5IHNhZmV0eSBhbmQgcGVyZm9ybWFuY2UuXG5cblRoZSBvcmlnaW5hbCBjb2RlJ3MgYXBwcm9hY2ggd2FzIHN0cmFpZ2h0Zm9yd2FyZDogaWYgdGhlIGBza19idWZmYCBpbmRpY2F0ZWQgaXQgd2FzIGEgR2VuZXJpYyBTZWdtZW50YXRpb24gT2ZmbG9hZCAoR1NPKSBwYWNrZXQgKHNwZWNpZmljYWxseSBUQ1B2NCwgVENQdjYsIG9yIFVEUCBMNCksIGl0IHdvdWxkICphbHdheXMqIGRlZmF1bHQgdG8gcXVldWUgMC4gT3RoZXJ3aXNlLCBpdCB3b3VsZCB1c2UgYG5ldGRldl9waWNrX3R4YCB0byBzZWxlY3QgYSBxdWV1ZSwgbW9kdWxvIHRoZSBudW1iZXIgb2YgcmVhbCB0cmFuc21pdCBxdWV1ZXMuIFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgYXNzaWduaW5nIGEgcXVldWUgaW4gYSByb3VuZCByb2JpbiBmYXNoaW9uLCB3aGlsZSBwcmlvcml0aXppbmcgVFNPIHRyYWZmaWMgdG8gYSBzaW5nbGUgcXVldWUuXG5cblRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbW9yZSBudWFuY2VkIGFwcHJvYWNoLiBOb3csIHRoZSBsb2dpYyBjaGVja3MgaWYgYSBmZXcgY29uZGl0aW9ucyBob2xkOlxuMS4gIFRoZSBgc2tfYnVmZmAgaXMgYSBHU08gcGFja2V0ICh3aGljaCBpcyB1bmNoYW5nZWQpLlxuMi4gIFRoZSBgZ3NvX3R5cGVgIHdpdGhpbiB0aGUgYHNrX2J1ZmZgIG1hdGNoZXMgdGhlIGBwcml2LVx1MDAzZWdzb19lbmFibGVkX3R5cGVzYCBhbmRcbjMuICBUaGUgcHJvcG9zZWQgcXVldWUgaXMgTk9UIHBlcm1pdHRlZCBmb3IgVFNPLlxuXG5JZiB0aG9zZSB0aHJlZSBjb25kaXRpb25zIGhvbGQsIHRoZSBmdW5jdGlvbiBmYWxscyBiYWNrIHRvIHF1ZXVlIDAuIFRoaXMgc3VnZ2VzdHMgdGhlcmUgaXMgc29tZSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHJlbGF0ZWQgdG8gVFNPIChUQ1AgU2VnbWVudGF0aW9uIE9mZmxvYWQpIG9yIFVTTyAoVURQIFNlZ21lbnRhdGlvbiBPZmZsb2FkKSBjYXBhYmlsaXRpZXMuIEluIG90aGVyIHdvcmRzLCBpZiB0aGUgcGFja2V0IGlzIGEgR1NPIHBhY2tldCBvZiBhIHR5cGUgaGFuZGxlZCBieSBoYXJkd2FyZSBUU08vVVNPLCBhbmQgdGhlIGNob3NlbiBxdWV1ZSBkb2VzIG5vdCBzdXBwb3J0IGhhcmR3YXJlIFRTTy9VU08sIHRoZW4gcXVldWUgMCBpcyBjaG9zZW4uXG5cbk15IG1haW4gY29uY2VybiBpcyBhbHdheXMgbWVtb3J5IHNhZmV0eS4gSG93ZXZlciwgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCBzZWVtcyB0aGUgcGF0Y2ggaXMgcXVpdGUgbG9jYWxpemVkLiBObyBuZXcgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBiZWluZyBhbGxvY2F0ZWQsIGFuZCBubyBrZXJuZWwgZGF0YSBpcyBiZWluZyBsZWFrZWQgdG8gdXNlciBzcGFjZS4gSXQgb25seSByZWFkcyB0aGUgdmFsdWVzIGluIGBza2Jfc2hpbmZvKHNrYiktXHUwMDNlZ3NvX3R5cGVgIGFuZCBgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AuIFRoZSBgc2tiX3NoaW5mbyhza2IpLVx1MDAzZWdzb190eXBlYCBpcyBwb3B1bGF0ZWQgYnkgdGhlIG5ldHdvcmtpbmcgc3RhY2sgc28gaXQncyBndWFyYW50ZWVkIHRvIGJlIGluaXRpYWxpemVkLiBgcHJpdi1cdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AgaXMgZHJpdmVyLWluaXRpYWxpemVkLiBUaGUgdmFsdWVzIHdpbGwgYWxyZWFkeSBleGlzdCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuIFNvLCBmcm9tIGEgcXVpY2sgaW5zcGVjdGlvbiwgdGhlcmUgYXJlIG5vIGltbWVkaWF0ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gVGhlIHBhdGNoIHNpbXBseSBtb2RpZmllcyAqaG93KiBhIHF1ZXVlIGlzIHNlbGVjdGVkLiBUaGUgYE5lZWRzS01TQU5gIGZsYWcgY2FuIGJlIHNldCB0byBmYWxzZS5cblxuVG8gYmUgYWJzb2x1dGVseSBzdXJlLCBpdCdzIHdvcnRoIGEgcXVpY2sgbG9vayBhdCBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZGAgdG8gY29uZmlybSB0aGF0IGl0IGRvZXMgbm90IGhhdmUgYW55IHBvdGVudGlhbCBmb3IgbWVtb3J5IHNhZmV0eSBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNTMsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wN1QxNTozNjozOS40OTYwNDMzNTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDU5MjM0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTM2MDQ9c3RhdGljIHZvaWQgc3RtbWFjX3NhZmV0eV9mZWF0X2NvbmZpZ3VyYXRpb24oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zNjE4LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MzYxOTpzdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MjAtXFx0XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBjaGFuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0zNjM4PXN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTMtXFx0XFx0Zm9yIChjaGFuID0gMDsgY2hhbiBcXHUwMDNjIHR4X2NudDsgY2hhbisrKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNzE0OlxcdFxcdFxcdGlmICghc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBjaGFuKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM3MTUtXFx0XFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQ5ODQ9c3RhdGljIG5ldGRldl9mZWF0dXJlc190IHN0bW1hY19mZWF0dXJlc19jaGVjayhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy01MDA1LVxcdGlmIChza2JfaXNfZ3NvKHNrYikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjUwMDY6XFx0XFx0aWYgKCFzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHByaXYsIHF1ZXVlKSB8fFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNTAwNy1cXHRcXHQgICAgIXN0bW1hY190c29fdmFsaWRfcGFja2V0KHNrYikpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY0NDU9c3RhdGljIHUxNiBzdG1tYWNfc2VsZWN0X3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0NTEtXFx0aWYgKChza2Jfc2hpbmZvKHNrYiktXFx1MDAzZWdzb190eXBlIFxcdTAwMjYgcHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXMpIFxcdTAwMjZcXHUwMDI2XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo2NDUyOlxcdCAgICAhc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZChwcml2LCBxdWV1ZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY0NTMtXFx0XFx0LyogR1NPIGZyYW1lcyBuZWVkIEhXIFRTTy9VU08sIHdoaWNoIGNhbm5vdCBydW4gb24gVEJTIHF1ZXVlcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6MzkuOTE2NjQ3NjM0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0NDg4MTI5MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgc3RtbWFjX3Rzb19jaGFubmVsX3Blcm1pdHRlZGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkYCBmdW5jdGlvbi4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYWxtb3N0IGNlcnRhaW5seSBqdXN0IGEgYm9vbGVhbiBjaGVjay4gSSdtIGd1ZXNzaW5nIGl0J3MgcHJvYmluZyBzb21lIGNvbmZpZ3VyYXRpb24gZmxhZyByZWxhdGVkIHRvIHdoZXRoZXIgdGhlIGNoYW5uZWwgaXMgc2V0IHVwIGZvciBUaW1lIEJhc2VkIFNjaGVkdWxpbmcsIG9yIHNvbWV0aGluZyBhbmFsb2dvdXMuIE5vIHJlZCBmbGFncyBoZXJlIOKAkyBJJ20gbm90IHNlZWluZyBhbnkgaW5kaWNhdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSBiZWluZyB0b3VjaGVkLCB3aGljaCBpcyBhbHdheXMgYSByZWxpZWYuIEdpdmVuIHRoYXQsIEknbSBjb25maWRlbnQgd2UgY2FuIHNhZmVseSBzZXQgYE5lZWRzS01TQU49ZmFsc2VgIGZvciB0aGlzIG9uZS4gSXQgbG9va3MgbGlrZSB3ZSdyZSBpbiB0aGUgY2xlYXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzODIsIk91dHB1dFRva2VucyI6MTk5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDdUMTU6MzY6NDUuMzY1NDYzMTcxWiIsIlNlcSI6MzIsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9naWMgZm9yIHNlbGVjdGluZyBhIHRyYW5zbWlzc2lvbiBxdWV1ZSBmb3IgbmV0d29yayBwYWNrZXRzIChza19idWZmKSBpbiB0aGUgc3RtbWFjIGRyaXZlci4gSXQgY2hlY2tzIHRoZSBgZ3NvX3R5cGVgIG9mIHRoZSBwYWNrZXQgYWdhaW5zdCBgcHJpdi1cXHUwMDNlZ3NvX2VuYWJsZWRfdHlwZXNgIGFuZCB2ZXJpZmllcyBpZiB0aGUgc2VsZWN0ZWQgcXVldWUgcGVybWl0cyBUU08gdmlhIGBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKClgLiBUaGVzZSBjaGFuZ2VzIG9ubHkgYWZmZWN0IGNvbnRyb2wgZmxvdyBhbmQgcXVldWUgc2VsZWN0aW9uIGJhc2VkIG9uIGFscmVhZHkgaW5pdGlhbGl6ZWQgZmllbGRzIGluIHRoZSBgc2tfYnVmZmAgYW5kIHRoZSBkcml2ZXIncyBwcml2YXRlIGRhdGEgc3RydWN0dXJlLiBUaGVyZSBhcmUgbm8gbmV3IGFsbG9jYXRpb25zLCBubyBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gcmlzayBvZiBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBxdWV1ZSBzZWxlY3Rpb24gb3Igb3V0LW9mLWJvdW5kcyBxdWV1ZSBpbmRpY2VzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2dpYyBmb3Igc2VsZWN0aW5nIGEgdHJhbnNtaXNzaW9uIHF1ZXVlIGZvciBuZXR3b3JrIHBhY2tldHMgKHNrX2J1ZmYpIGluIHRoZSBzdG1tYWMgZHJpdmVyLiBJdCBjaGVja3MgdGhlIGBnc29fdHlwZWAgb2YgdGhlIHBhY2tldCBhZ2FpbnN0IGBwcml2LVxcdTAwM2Vnc29fZW5hYmxlZF90eXBlc2AgYW5kIHZlcmlmaWVzIGlmIHRoZSBzZWxlY3RlZCBxdWV1ZSBwZXJtaXRzIFRTTyB2aWEgYHN0bW1hY190c29fY2hhbm5lbF9wZXJtaXR0ZWQoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBhZmZlY3QgY29udHJvbCBmbG93IGFuZCBxdWV1ZSBzZWxlY3Rpb24gYmFzZWQgb24gYWxyZWFkeSBpbml0aWFsaXplZCBmaWVsZHMgaW4gdGhlIGBza19idWZmYCBhbmQgdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUuIFRoZXJlIGFyZSBubyBuZXcgYWxsb2NhdGlvbnMsIG5vIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIGFuZCBubyByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIHdvdWxkIGJlIHJlbGF0ZWQgdG8gaW5jb3JyZWN0IHF1ZXVlIHNlbGVjdGlvbiBvciBvdXQtb2YtYm91bmRzIHF1ZXVlIGluZGljZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflows64df[1] Phase: Succeeded StartedAt: 2026-08-07 15:36:59 +0000 UTC FinishedAt: 2026-08-07 15:36:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-07 15:36:59 +0000 UTC FinishedAt: 2026-08-07 15:36:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2] Phase: Succeeded StartedAt: 2026-08-07 15:36:59 +0000 UTC FinishedAt: 2026-08-07 16:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-07 15:36:59 +0000 UTC FinishedAt: 2026-08-07 16:19:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-07 15:36:59 +0000 UTC FinishedAt: 2026-08-07 15:37:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-07 15:36:59 +0000 UTC FinishedAt: 2026-08-07 15:37:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},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-workflows64df/series-workflows64df-convert-artifact-123246643/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-07 15:37:10 +0000 UTC FinishedAt: 2026-08-07 15:54:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-07 15:37:10 +0000 UTC FinishedAt: 2026-08-07 15:54:13 +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:*59678cd6-eb5d-43f6-97f0-ae0a9debb410,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-workflows64df/series-workflows64df-convert-artifact-123246643/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": "888f6697-d951-48a3-a20c-a943d95348e4", "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-workflows64df/series-workflows64df-build-action-3267281633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-07 15:37:10 +0000 UTC FinishedAt: 2026-08-07 15:54:03 +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:*59678cd6-eb5d-43f6-97f0-ae0a9debb410,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-workflows64df/series-workflows64df-convert-artifact-123246643/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": "888f6697-d951-48a3-a20c-a943d95348e4", "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-workflows64df/series-workflows64df-build-action-3267281633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-07 15:54:13 +0000 UTC FinishedAt: 2026-08-07 15:54:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-07 15:54:13 +0000 UTC FinishedAt: 2026-08-07 15:54:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-07 15:54:13 +0000 UTC FinishedAt: 2026-08-07 15:54:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-07 15:54:13 +0000 UTC FinishedAt: 2026-08-07 15:54:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},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-workflows64df/series-workflows64df-convert-artifact-1546688810/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-07 15:54:23 +0000 UTC FinishedAt: 2026-08-07 15:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-07 15:54:23 +0000 UTC FinishedAt: 2026-08-07 15:56:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*888f6697-d951-48a3-a20c-a943d95348e4,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-workflows64df/series-workflows64df-build-action-3267281633/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-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-07 15:56:31 +0000 UTC FinishedAt: 2026-08-07 15:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-07 15:56:31 +0000 UTC FinishedAt: 2026-08-07 15:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-07 15:56:31 +0000 UTC FinishedAt: 2026-08-07 16:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-07 15:56:31 +0000 UTC FinishedAt: 2026-08-07 16:12:44 +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:*59678cd6-eb5d-43f6-97f0-ae0a9debb410,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-workflows64df/series-workflows64df-convert-artifact-1546688810/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": "9636a37e-52a2-4f92-bdae-676ca5bf2fdc", "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-workflows64df/series-workflows64df-build-action-3862278222/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-07 15:56:31 +0000 UTC FinishedAt: 2026-08-07 16:12:34 +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:*59678cd6-eb5d-43f6-97f0-ae0a9debb410,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-workflows64df/series-workflows64df-convert-artifact-1546688810/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": "9636a37e-52a2-4f92-bdae-676ca5bf2fdc", "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-workflows64df/series-workflows64df-build-action-3862278222/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-07 16:12:44 +0000 UTC FinishedAt: 2026-08-07 16:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-07 16:12:44 +0000 UTC FinishedAt: 2026-08-07 16:12:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-07 16:12:44 +0000 UTC FinishedAt: 2026-08-07 16:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-07 16:12:44 +0000 UTC FinishedAt: 2026-08-07 16:14:48 +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:*9636a37e-52a2-4f92-bdae-676ca5bf2fdc,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-workflows64df/series-workflows64df-build-action-3862278222/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-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-07 16:14:58 +0000 UTC FinishedAt: 2026-08-07 16:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-07 16:14:58 +0000 UTC FinishedAt: 2026-08-07 16:19:06 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"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:*888f6697-d951-48a3-a20c-a943d95348e4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9636a37e-52a2-4f92-bdae-676ca5bf2fdc,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-workflows64df/series-workflows64df-build-action-3267281633/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-workflows64df/series-workflows64df-build-action-3862278222/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-07 16:14:58 +0000 UTC FinishedAt: 2026-08-07 16:15:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-07 16:14:58 +0000 UTC FinishedAt: 2026-08-07 16:15:06 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"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-workflows64df/series-workflows64df-convert-artifact-2164368831/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-07 16:14:58 +0000 UTC FinishedAt: 2026-08-07 16:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-07 16:14:58 +0000 UTC FinishedAt: 2026-08-07 16:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-07 16:14:58 +0000 UTC FinishedAt: 2026-08-07 16:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-07 16:15:09 +0000 UTC FinishedAt: 2026-08-07 16:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflows64df[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_select_queue"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4fa4977a0d900f936bcae5cd2c510be5554e8dd6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4e91eda2-5c05-4660-be1c-8884165497c1","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-07 16:15:09 +0000 UTC FinishedAt: 2026-08-07 16:18:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*888f6697-d951-48a3-a20c-a943d95348e4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9636a37e-52a2-4f92-bdae-676ca5bf2fdc,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-workflows64df/series-workflows64df-build-action-3267281633/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-workflows64df/series-workflows64df-build-action-3862278222/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-workflows64df/series-workflows64df-convert-artifact-2164368831/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,}