Name: series-workflowrg48j Phase: Succeeded StartedAt: 2026-08-03 09:36:03 +0000 UTC FinishedAt: 2026-08-03 11:20:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[0] Phase: Succeeded StartedAt: 2026-08-03 09:36:03 +0000 UTC FinishedAt: 2026-08-03 09:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 09:36:03 +0000 UTC FinishedAt: 2026-08-03 09:40:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_NETLINK", "CAN_CALC_BITTIMING", "CAN_DUMMY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_NETLINK", "CAN_CALC_BITTIMING", "CAN_DUMMY" ], "series_id": "872b5477-2c95-42ad-b713-e5c4129e2a8a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "can_calc_bittiming", "can_get_bittiming", "can_changelink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTiYjMzQ7LAogICAgJiMzNDtDQU5fREVWJiMzNDssCiAgICAmIzM0O0NBTl9ORVRMSU5LJiMzNDssCiAgICAmIzM0O0NBTl9DQUxDX0JJVFRJTUlORyYjMzQ7LAogICAgJiMzNDtDQU5fRFVNTVkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjYW5fY2FsY19iaXR0aW1pbmcmIzM0OywKICAgICYjMzQ7Y2FuX2dldF9iaXR0aW1pbmcmIzM0OywKICAgICYjMzQ7Y2FuX2NoYW5nZWxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgMzItYml0IHdyYXAgdG8gemVybyBkaXZpc2lvbiBlcnJvciBpbiBDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvbiBmb3IgbGFyZ2UgdXNlcnNwYWNlIGJpdHJhdGVzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIHdoZW4gY29uZmlndXJpbmcgQ0FOIGRldmljZXMuIEZ1enppbmcgdGhpcyBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgbWF0aCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgZWRnZSBjYXNlcyB3aXRob3V0IHJlZ3Jlc3Npb25zLiBUaGUgYENBTl9EVU1NWWAgdmlydHVhbCBkZXZpY2UgaXMgaW5jbHVkZWQgdG8gYWxsb3cgdGVzdGluZyB0aGlzIGhhcmR3YXJlLWluZGVwZW5kZW50IGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjFjMTQwMmU4NzNiZTRmODExOTM2OGNjNWNlNmU2Yzk5NzFiYzA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTozODozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcbmluZGV4IDQyNDk4ZTlkM2YzOGQuLjI3ODliOTlhYjZhODMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY1xuQEAgLTExOSw4ICYjNDM7MTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxuIFx0ICAgICB0c2VnIFx1MDAzZT0gKGJ0Yy1cdTAwM2V0c2VnMV9taW4gJiM0MzsgYnRjLVx1MDAzZXRzZWcyX21pbikgKiAyOyB0c2VnLS0pIHtcbiBcdFx0dHNlZ2FsbCA9IENBTl9TWU5DX1NFRyAmIzQzOyB0c2VnIC8gMjtcbiBcbi1cdFx0LyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxJiM0Mzt0c2VnMikgKi9cbi1cdFx0YnJwID0gcHJpdi1cdTAwM2VjbG9jay5mcmVxIC8gKHRzZWdhbGwgKiBidC1cdTAwM2ViaXRyYXRlKSAmIzQzOyB0c2VnICUgMjtcbiYjNDM7XHRcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSYjNDM7dHNlZzIpLlxuJiM0MztcdFx0ICogQSAzMiBiaXQgdHNlZ2FsbCAqIGJ0LVx1MDAzZWJpdHJhdGUgY2FuIHdyYXAgdG8gemVybyBmb3IgbGFyZ2VcbiYjNDM7XHRcdCAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGJycCA9IGRpdjY0X3U2NChwcml2LVx1MDAzZWNsb2NrLmZyZXEsXG4mIzQzO1x0XHRcdFx0bXVsX3UzMl91MzIodHNlZ2FsbCwgYnQtXHUwMDNlYml0cmF0ZSkpICYjNDM7IHRzZWcgJSAyO1xuIFxuIFx0XHQvKiBjaG9vc2UgYnJwIHN0ZXAgd2hpY2ggaXMgcG9zc2libGUgaW4gc3lzdGVtICovXG4gXHRcdGJycCA9IChicnAgLyBidGMtXHUwMDNlYnJwX2luYykgKiBidGMtXHUwMDNlYnJwX2luYztcbkBAIC0xMjgsNyAmIzQzOzEzMiw3IEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRiaXRyYXRlID0gcHJpdi1cdTAwM2VjbG9jay5mcmVxIC8gKGJycCAqIHRzZWdhbGwpO1xuLVx0XHRiaXRyYXRlX2Vycm9yID0gYWJzKGJ0LVx1MDAzZWJpdHJhdGUgLSBiaXRyYXRlKTtcbiYjNDM7XHRcdGJpdHJhdGVfZXJyb3IgPSBhYnNfZGlmZihidC1cdTAwM2ViaXRyYXRlLCBiaXRyYXRlKTtcbiBcbiBcdFx0LyogdHNlZyBicnAgYml0ZXJyb3IgKi9cbiBcdFx0aWYgKGJpdHJhdGVfZXJyb3IgXHUwMDNlIGJlc3RfYml0cmF0ZV9lcnJvcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX05FVExJTksmIzM0OywKICAgICYjMzQ7Q0FOX0NBTENfQklUVElNSU5HJiMzNDssCiAgICAmIzM0O0NBTl9EVU1NWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVmMWMxNDAyZTg3M2JlNGY4MTE5MzY4Y2M1Y2U2ZTZjOTk3MWJjMDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM4OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jIGIvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jCmluZGV4IDQyNDk4ZTlkM2YzOGQuLjI3ODliOTlhYjZhODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMKQEAgLTExOSw4ICYjNDM7MTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LAogCSAgICAgdHNlZyAmZ3Q7PSAoYnRjLSZndDt0c2VnMV9taW4gJiM0MzsgYnRjLSZndDt0c2VnMl9taW4pICogMjsgdHNlZy0tKSB7CiAJCXRzZWdhbGwgPSBDQU5fU1lOQ19TRUcgJiM0MzsgdHNlZyAvIDI7CiAKLQkJLyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxJiM0Mzt0c2VnMikgKi8KLQkJYnJwID0gcHJpdi0mZ3Q7Y2xvY2suZnJlcSAvICh0c2VnYWxsICogYnQtJmd0O2JpdHJhdGUpICYjNDM7IHRzZWcgJSAyOwomIzQzOwkJLyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxJiM0Mzt0c2VnMikuCiYjNDM7CQkgKiBBIDMyIGJpdCB0c2VnYWxsICogYnQtJmd0O2JpdHJhdGUgY2FuIHdyYXAgdG8gemVybyBmb3IgbGFyZ2UKJiM0MzsJCSAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuCiYjNDM7CQkgKi8KJiM0MzsJCWJycCA9IGRpdjY0X3U2NChwcml2LSZndDtjbG9jay5mcmVxLAomIzQzOwkJCQltdWxfdTMyX3UzMih0c2VnYWxsLCBidC0mZ3Q7Yml0cmF0ZSkpICYjNDM7IHRzZWcgJSAyOwogCiAJCS8qIGNob29zZSBicnAgc3RlcCB3aGljaCBpcyBwb3NzaWJsZSBpbiBzeXN0ZW0gKi8KIAkJYnJwID0gKGJycCAvIGJ0Yy0mZ3Q7YnJwX2luYykgKiBidGMtJmd0O2JycF9pbmM7CkBAIC0xMjgsNyAmIzQzOzEzMiw3IEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LAogCQkJY29udGludWU7CiAKIAkJYml0cmF0ZSA9IHByaXYtJmd0O2Nsb2NrLmZyZXEgLyAoYnJwICogdHNlZ2FsbCk7Ci0JCWJpdHJhdGVfZXJyb3IgPSBhYnMoYnQtJmd0O2JpdHJhdGUgLSBiaXRyYXRlKTsKJiM0MzsJCWJpdHJhdGVfZXJyb3IgPSBhYnNfZGlmZihidC0mZ3Q7Yml0cmF0ZSwgYml0cmF0ZSk7CiAKIAkJLyogdHNlZyBicnAgYml0ZXJyb3IgKi8KIAkJaWYgKGJpdHJhdGVfZXJyb3IgJmd0OyBiZXN0X2JpdHJhdGVfZXJyb3IpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ0FOIEJpdCBUaW1pbmcgQ2FsY3VsYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgZnVuY3Rpb24uIEZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBzZWVtcyBsaWtlIHRoZSBnb2FsIGlzIHRvIGltcHJvdmUgdGhlIGhhbmRsaW5nIG9mIGhpZ2ggYml0cmF0ZXMuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyBgYnJwYCBieSBzd2l0Y2hpbmcgdG8gNjQtYml0IG1hdGguIEFsc28sIHRoZXJlJiMzOTtzIGEgY2hhbmdlIGZyb20gYSBkaXJlY3Qgc3VidHJhY3Rpb24gd2l0aCBgYWJzKClgIHRvIGBhYnNfZGlmZigpYC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGV5IG1hZGUgdGhhdCBzcGVjaWZpYyBjaGFuZ2UuCgpSaWdodCwgYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXRzZWxmIGlzIGNyaXRpY2FsLiBJdCYjMzk7cyB0aGUgY29yZSBDQU4gc3Vic3lzdGVtIGZ1bmN0aW9uIHRoYXQgZmlndXJlcyBvdXQgdGhlIGJpdCB0aW1pbmcgcGFyYW1ldGVycywgd2hpY2ggaXMgaG93IHRoZSBDQU4gY29udHJvbGxlciBzeW5jaHJvbml6ZXMuIEkga25vdyBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rIHdoZW4gc29tZW9uZSBjb25maWd1cmVzIGEgQ0FOIGRldmljZS4gU28sIHRoaXMgY2hhbmdlIGNvdWxkIGRpcmVjdGx5IGltcGFjdCBob3cgdXNlcnNwYWNlIHRvb2xzIGludGVyYWN0IHdpdGggQ0FOIGhhcmR3YXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhpZ2hlciBzcGVlZHMuIFRoZSBpbXBsaWNhdGlvbnMgb2YgZ2V0dGluZyB0aGlzIGNhbGN1bGF0aW9uIHdyb25nIGFyZSBwcmV0dHkgc2VyaW91czsgY29tbXVuaWNhdGlvbiBmYWlsdXJlcyB3b3VsZCBiZSB0aGUgb2J2aW91cyBzeW1wdG9tLgoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgQ0FOIGFuZCBDQU5fREVWIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY29udGV4dCB0aGVyZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIENBTiBmZWF0dXJlcyBhcmUgY29uZmlndXJlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhpcyBwYXRjaC4gQW55IGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jaWVzPyBBbnkgcG90ZW50aWFsIGNvbmZsaWN0cz8gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgZGl2aW5nIGludG8gdGhlIGNvZGUgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM9MTM0PWludCBjYW5fZ2V0X2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9iaXR0aW1pbmcuYy0xNDUtXHRpZiAoIWJ0LVx1MDAzZXRxIFx1MDAyNlx1MDAyNiBidC1cdTAwM2ViaXRyYXRlIFx1MDAyNlx1MDAyNiBidGMpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jOjE0NjpcdFx0cmV0dXJuIGNhbl9jYWxjX2JpdHRpbWluZyhkZXYsIGJ0LCBidGMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTE0Ny1cdGlmIChidC1cdTAwM2V0cSBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZWJpdHJhdGUgXHUwMDI2XHUwMDI2IGJ0Yylcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmM9NTM9Y2FuX3VwZGF0ZV9zYW1wbGVfcG9pbnQoY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yyxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMtOTItXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmM6OTM6aW50IGNhbl9jYWxjX2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMtOTQtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCAqYnRjLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIENBTl9ERVYqKgoKT2theSwgdGltZSB0byBnZXQgc3RhcnRlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gZm9yIGBDQU5fREVWYC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcywgaXRzIGRlZmF1bHQgc2V0dGluZywgYW5kIGFueSBjb25kaXRpb25hbCBidWlsZCBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyB0aGUgZmlyc3QsIG1vc3QgZnVuZGFtZW50YWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBDQU4gZGV2aWNlIHN1cHBvcnQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJhc2Ugc2V0dGluZ3MgYmVmb3JlIEkgZ28gZGl2aW5nIGRlZXBlciB0byBtb3JlIG51YW5jZWQgc2V0dGluZ3MuIEtub3dpbmcgaG93IGl0JiMzOTtzIGRlZmluZWQgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBmcmFtZXdvcmsgYW5kIGhvdyBkaWZmZXJlbnQgY29tcG9uZW50cyBpbnRlcmFjdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX0RFViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWctMi1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjM6bWVudWNvbmZpZyBDQU5fREVWXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7Q0FOIERldmljZSBEcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgQ0FOIGRyaXZlcnM6CgoqKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzIGluIHRoZSBDQU4gU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZGVwZW5kZW50IG9uIHdoYXQgaW4gdGhlIENBTiBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AuIFRoaXMgZmlsZSwgYXMgSSByZWNhbGwsIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciB2YXJpb3VzIENBTiBkZXZpY2Ugb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnN0cmFpbnRzIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMgb3IgcmVjb21tZW5kYXRpb25zLiBJdCYjMzk7cyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byBlYWNoIG90aGVyIGluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGZvciBlbnN1cmluZyBhbnkgbW9kaWZpY2F0aW9ucyBJIG1ha2UgYXJlIHNvdW5kIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGJ1aWxkIG9yIHJ1bnRpbWUgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIENBTl9ERVZcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O0NBTiBEZXZpY2UgRHJpdmVyc1wmIzM0O1xuICAgNTpcdFx0ZGVmYXVsdCB5XG4gICA2Olx0XHRkZXBlbmRzIG9uIENBTlxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBpcyBzZXJpYWwgY29tbXVuaWNhdGlvbnMgcHJvdG9jb2wgdXAgdG9cbiAgIDk6XHRcdCAgMU1iaXQvcyBmb3IgaXRzIG9yaWdpbmFsIHJlbGVhc2UgKG5vdyBrbm93biBhcyBDbGFzc2ljYWwgQ0FOKSBhbmQgdXBcbiAgMTA6XHRcdCAgdG8gOE1iaXQvcyBmb3IgdGhlIG1vcmUgcmVjZW50IENBTiB3aXRoIEZsZXhpYmxlIERhdGEtUmF0ZVxuICAxMTpcdFx0ICAoQ0FOLUZEKS4gVGhlIENBTiBidXMgd2FzIG9yaWdpbmFsbHkgbWFpbmx5IGZvciBhdXRvbW90aXZlLCBidXQgaXMgbm93XG4gIDEyOlx0XHQgIHdpZGVseSB1c2VkIGluIG1hcmluZSAoTk1FQTIwMDApLCBpbmR1c3RyaWFsLCBhbmQgbWVkaWNhbFxuICAxMzpcdFx0ICBhcHBsaWNhdGlvbnMuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIENBTiBuZXR3b3JrIHByb3RvY29sIGZhbWlseVxuICAxNDpcdFx0ICBQRl9DQU4gaXMgY29udGFpbmVkIGluIFx1MDAzY0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4ucnN0XHUwMDNlLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBDQU4oLUZEKSBkZXZpY2UgZHJpdmVycyBpbmNsdWRpbmcgdGhlXG4gIDE3Olx0XHQgIHZpcnR1YWwgb25lcy4gSWYgeW91IG93biBzdWNoIGRldmljZXMgb3IgcGxhbiB0byB1c2UgdGhlIHZpcnR1YWwgQ0FOXG4gIDE4Olx0XHQgIGludGVyZmFjZXMgdG8gZGV2ZWxvcCBhcHBsaWNhdGlvbnMsIHNheSBZIGhlcmUuXG4gIDE5Olx0XG4gIDIwOlx0XHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDMyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGVwZW5kZW5jeSBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgQ0FOX0RFVmAgb3B0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIGl0IHJlbGllcyBvbiBgQ0FOYC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBgQ0FOX0RFVmAgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgbGFyZ2VyIENBTiBzdWJzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG5ldC9jYW4vS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBDQU4gYXJlIGRlZmluZWQuIEl0JiMzOTtzIHRoZSBwbGFjZSB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlIGJ1aWxkIGFuZCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIExldCBtZSBwdWxsIHRoYXQgdXAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQgYWJvdXQgdGhlIGBDQU5gIG9wdGlvbiYjMzk7cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVmYXVsdHMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgaW4gaW50ZXJwcmV0aW5nIHRoZSBvdmVyYWxsIHNldHVwLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IG9yIGEgbWVudSBzdHJ1Y3R1cmUgdGhhdCBtYWtlcyBpdCBjcnlzdGFsIGNsZWFyIGhvdyBgQ0FOYCBpbmZsdWVuY2VzIGBDQU5fREVWYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jYW4vS2NvbmZpZy01LVxubmV0L2Nhbi9LY29uZmlnOjY6bWVudWNvbmZpZyBDQU5cbm5ldC9jYW4vS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7Q0FOIGJ1cyBzdWJzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9jYW4vS2NvbmZpZz0yMj1pZiBDQU5cbm5ldC9jYW4vS2NvbmZpZy0yMy1cbm5ldC9jYW4vS2NvbmZpZzoyNDpjb25maWcgQ0FOX1JBV1xubmV0L2Nhbi9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7UmF3IENBTiBQcm90b2NvbCAocmF3IGFjY2VzcyB3aXRoIENBTi1JRCBmaWx0ZXJpbmcpXCYjMzQ7XG4tLVxubmV0L2Nhbi9LY29uZmlnLTMzLVxubmV0L2Nhbi9LY29uZmlnOjM0OmNvbmZpZyBDQU5fQkNNXG5uZXQvY2FuL0tjb25maWctMzUtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNhc3QgTWFuYWdlciBDQU4gUHJvdG9jb2wgKHdpdGggY29udGVudCBmaWx0ZXJpbmcpXCYjMzQ7XG4tLVxubmV0L2Nhbi9LY29uZmlnLTQ1LVxubmV0L2Nhbi9LY29uZmlnOjQ2OmNvbmZpZyBDQU5fR1dcbm5ldC9jYW4vS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0NBTiBHYXRld2F5L1JvdXRlciAod2l0aCBuZXRsaW5rIGNvbmZpZ3VyYXRpb24pXCYjMzQ7XG4tLVxubmV0L2Nhbi9LY29uZmlnPTU3PXNvdXJjZSBcJiMzNDtuZXQvY2FuL2oxOTM5L0tjb25maWdcJiMzNDtcbm5ldC9jYW4vS2NvbmZpZy01OC1cbm5ldC9jYW4vS2NvbmZpZzo1OTpjb25maWcgQ0FOX0lTT1RQXG5uZXQvY2FuL0tjb25maWctNjAtXHR0cmlzdGF0ZSBcJiMzNDtJU08gMTU3NjUtMiBDQU4gdHJhbnNwb3J0IHByb3RvY29sXCYjMzQ7XG4tLVxubmV0L2Nhbi9qMTkzOS9LY29uZmlnLTUtXG5uZXQvY2FuL2oxOTM5L0tjb25maWc6Njpjb25maWcgQ0FOX0oxOTM5XG5uZXQvY2FuL2oxOTM5L0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1NBRSBKMTkzOVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjgxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGFja2xpbmcgdGhpcyBwYXJ0aWN1bGFyIHRhc2s6CgoqKkV4YW1pbmluZyBDQU4gRGVwZW5kZW5jaWVzIGluIEtjb25maWcqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBDb250cm9sbGVyIEFyZWEgTmV0d29yaywgb3IgQ0FOLiBNeSBpbnN0aW5jdCwgYW5kIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhhdCB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gcGxhY2UgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBDQU4gZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3Mgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgbGlrZWx5IGRlZmluZWQg4oCTIHRoZSBvdGhlciBmZWF0dXJlcyBvciBjb21wb25lbnRzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBDQU4gc3VwcG9ydCBjYW4gZXZlbiBiZSBjb25zaWRlcmVkLiBUaGlzIEtjb25maWcgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgQm9vbGVhbiBvcHRpb25zIGZvciBlbmFibGluZyB2YXJpb3VzIGFzcGVjdHMgb2YgQ0FOLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSByZWFkIHRocm91Z2ggaXQgYW5kIGlkZW50aWZ5IHdoaWNoIG9wdGlvbnMgcmVxdWlyZSB3aGF0LCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIENBTiBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBuZXR3b3JrIGxheWVyIGNvcmUgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIENBTlxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7Q0FOIGJ1cyBzdWJzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIGlzIGEgc2xvdyAodXAgdG8gMU1iaXQvcykgc2VyaWFsXG4gIDExOlx0XHQgIGNvbW11bmljYXRpb25zIHByb3RvY29sLiBEZXZlbG9wbWVudCBvZiB0aGUgQ0FOIGJ1cyBzdGFydGVkIGluXG4gIDEyOlx0XHQgIDE5ODMgYXQgUm9iZXJ0IEJvc2NoIEdtYkgsIGFuZCB0aGUgcHJvdG9jb2wgd2FzIG9mZmljaWFsbHlcbiAgMTM6XHRcdCAgcmVsZWFzZWQgaW4gMTk4Ni4gVGhlIENBTiBidXMgd2FzIG9yaWdpbmFsbHkgbWFpbmx5IGZvciBhdXRvbW90aXZlLFxuICAxNDpcdFx0ICBidXQgaXMgbm93IHdpZGVseSB1c2VkIGluIG1hcmluZSAoTk1FQTIwMDApLCBpbmR1c3RyaWFsLCBhbmQgbWVkaWNhbFxuICAxNTpcdFx0ICBhcHBsaWNhdGlvbnMuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIENBTiBuZXR3b3JrIHByb3RvY29sIGZhbWlseVxuICAxNjpcdFx0ICBQRl9DQU4gaXMgY29udGFpbmVkIGluIFx1MDAzY0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4ucnN0XHUwMDNlLlxuICAxNzpcdFxuICAxODpcdFx0ICBJZiB5b3Ugd2FudCBDQU4gc3VwcG9ydCB5b3Ugc2hvdWxkIHNheSBZIGhlcmUgYW5kIGFsc28gdG8gdGhlXG4gIDE5Olx0XHQgIHNwZWNpZmljIGRyaXZlciBmb3IgeW91ciBjb250cm9sbGVyKHMpIHVuZGVyIHRoZSBOZXR3b3JrIGRldmljZVxuICAyMDpcdFx0ICBzdXBwb3J0IHNlY3Rpb24uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIENBTiBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgQ0FOIGNvbmZpZ3VyYXRpb25zLCBhbmQgaXQgc2VlbXMgbGlrZSBgQ0FOYCBhbmQgYENBTl9ERVZgIGFyZSB0aGUga2V5IHBsYXllcnMuIEJ1dCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgc2V0dXAsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBhIHZpcnR1YWwgQ0FOIGRldmljZSwgc29tZXRoaW5nIGxpa2UgYENBTl9WQ0FOYCBvciBgQ0FOX1ZYQ0FOYC4gSXQgd291bGQgYmUgaWRlYWwgZm9yIGEgcXVpY2sgdGVzdC4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGFuZCBzZWUgd2hhdCB2aXJ0dWFsIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyB0aGV5JiMzOTtyZSBpbXBsZW1lbnRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBrZXJuZWwgaGFzIHRvIG9mZmVyIGluIHRoaXMgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENBTl9WQ0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0yMz1pZiBDQU5fREVWXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjI1OmNvbmZpZyBDQU5fVkNBTlxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIExvY2FsIENBTiBJbnRlcmZhY2UgKHZjYW4pXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBgQ0FOX1ZDQU5gIGZlYXR1cmUgdXNlcyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgZnVuY3Rpb24uIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiwgSSBrbm93IGhvdyB0byB0cmFjayB0aGlzIGRvd24gZWZmaWNpZW50bHkuCgpGaXJzdCwgSSYjMzk7bGwgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyBjYWxsZWQgYnkgYGNhbl9nZXRfYml0dGltaW5nYC4gT2theSwgdGhhdCYjMzk7cyBzdGVwIG9uZS4gTm93LCB3aGVyZSBpcyBgY2FuX2dldF9iaXR0aW1pbmdgIHVzZWQ/IEFoLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBieSBgY2FuX2NoYW5nZWxpbmtgLiBUaGF0JiMzOTtzIGluIGBkcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIGl0JiMzOTtzIHRoZSBuZXR3b3JrLWxldmVsIGNvbmZpZ3VyYXRpb24uCgpTbyB0aGUgY2FsbCBzdGFjayBpczogYGNhbl9jYWxjX2JpdHRpbWluZ2AgLSZndDsgYGNhbl9nZXRfYml0dGltaW5nYCAtJmd0OyBgY2FuX2NoYW5nZWxpbmtgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM9MTE2PWNhbl92YWxpZGF0ZV9iaXRyYXRlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nICpidCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTEzMy1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM6MTM0OmludCBjYW5fZ2V0X2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTEzNS1cdFx0ICAgICAgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yyxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz00MzY9c3RhdGljIGludCBjYW5fZGJ0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTQ3NC1cdG1lbWNweShcdTAwMjZkYnQsIG5sYV9kYXRhKGRhdGFfYml0dGltaW5nKSwgc2l6ZW9mKGRidCkpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6NDc1Olx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZkYnQsIGRidF9wYXJhbXMtXHUwMDNlZGF0YV9iaXR0aW1pbmdfY29uc3QsXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy00NzYtXHRcdFx0XHRkYnRfcGFyYW1zLVx1MDAzZWRhdGFfYml0cmF0ZV9jb25zdCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz01OTQ9c3RhdGljIGludCBjYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTYyNC1cdFx0bWVtY3B5KFx1MDAyNmJ0LCBubGFfZGF0YShkYXRhW0lGTEFfQ0FOX0JJVFRJTUlOR10pLCBzaXplb2YoYnQpKTtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjYyNTpcdFx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZidCxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTYyNi1cdFx0XHRcdFx0cHJpdi1cdTAwM2ViaXR0aW1pbmdfY29uc3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyOTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGBjYW5fY2hhbmdlbGlua2AgYW5kIGB2Y2FuYCBTdXBwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYGNhbl9jaGFuZ2VsaW5rYC4gSSBrbm93IHRoYXQmIzM5O3MgYSBjcnVjaWFsIHBhcnQgb2YgbmV0bGluaywgYnV0IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiBgdmNhbmAsIHRoZSB2aXJ0dWFsIENBTiBpbnRlcmZhY2UsIGFjdHVhbGx5IGltcGxlbWVudHMgaXQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMgb2YgdGhlIHZpcnR1YWwgaW50ZXJmYWNlLiBUaGUgYmVzdCB3YXkgdG8gY2hlY2sgdGhpcyBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9jYW4vdmNhbi5jYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJldmVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92Y2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTAxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlZjYW4gSW1wbGVtZW50YXRpb24gRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHZpcnR1YWwgQ0FOIGludGVyZmFjZSwgYHZjYW5gLCBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIHdvdWxkIGxvZ2ljYWxseSByZXNpZGUuIFRoZSBwbGFjZSB0byBzdGFydCBkaXZpbmcgZGVlcGVyIGlzIGRlZmluaXRlbHkgd2l0aCB0aGUgYHJ0bmxfbGlua19vcHNgIHN0cnVjdHVyZS4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCBmb3IgYSB2aXJ0dWFsIGRldmljZSwgYXMgaXQgZGVmaW5lcyB0aGUgbmV0bGluayBvcGVyYXRpb25zIGEgZHJpdmVyIHByb3ZpZGVzIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgbGluay4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyBgdmNhbmAgcG9wdWxhdGVzIGFuZCB1dGlsaXplcyB0aGlzIHN0cnVjdHVyZSB0byBmdWxseSBncmFzcCBpdHMgYmVoYXZpb3Igd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBuZXR3b3JraW5nIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRubF9saW5rX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92Y2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTg5LVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTkxLVx0LmtpbmQgPSBEUlZfTkFNRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IERpdmluZyBpbnRvIGB2Y2FuX2xpbmtfb3BzYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHNpbXBsZTogdGltZSB0byBkaXNzZWN0IGB2Y2FuX2xpbmtfb3BzYC4gTm8gcHJlYW1ibGUsIGp1c3Qgc3RyYWlnaHQgdG8gdGhlIHBvaW50LiBJJiMzOTttIGFzc3VtaW5nLCBnaXZlbiBteSBsZXZlbCBvZiBleHBlcnRpc2UsIHRoYXQgSSYjMzk7bSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlIGJyb2FkZXIgQ0FOIG5ldHdvcmtpbmcgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgcHVycG9zZSBvZiB0aGVzZSBvcGVyYXRpb25zLiBUaGlzIHN1Z2dlc3RzIGFuIGludmVzdGlnYXRpb24sIGVpdGhlciB0byB1bmRlcnN0YW5kIGl0cyBvcGVyYXRpb24sIGRlYnVnIGl0IG9yIHRvIG1vZGlmeSBpdC4gSSYjMzk7bSBnb2luZyBpbiB3aXRoIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIHJlYWR5IHRvIGdldCB0byB0aGUgY29yZSBtZWNoYW5pY3MuIFRoZXJlJiMzOTtzIG5vIG5lZWQgZm9yIGludHJvZHVjdG9yeSBleHBsYW5hdGlvbnMgaGVyZSwganVzdCB0aGUgY29kZS4gSSYjMzk7bSBwcmVwYXJlZCB0byBmb2xsb3cgZnVuY3Rpb24gY2FsbHMsIGV4cGxvcmUgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdW5yYXZlbCBhbnkgY29tcGxleGl0aWVzIHRoZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBob2xkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92Y2FuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFxuIDE4MTpcdFx0Lyogc2V0IGZsYWdzIGFjY29yZGluZyB0byBkcml2ZXIgY2FwYWJpbGl0aWVzICovXG4gMTgyOlx0XHRpZiAoZWNobylcbiAxODM6XHRcdFx0ZGV2LVx1MDAzZWZsYWdzIHw9IElGRl9FQ0hPO1xuIDE4NDpcdFxuIDE4NTpcdFx0ZGV2LVx1MDAzZW5ldGRldl9vcHNcdFx0PSBcdTAwMjZ2Y2FuX25ldGRldl9vcHM7XG4gMTg2Olx0XHRkZXYtXHUwMDNlZXRodG9vbF9vcHNcdD0gXHUwMDI2dmNhbl9ldGh0b29sX29wcztcbiAxODc6XHRcdGRldi1cdTAwM2VuZWVkc19mcmVlX25ldGRldlx0PSB0cnVlO1xuIDE4ODpcdH1cbiAxODk6XHRcbiAxOTA6XHRzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdmNhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuIDE5MTpcdFx0LmtpbmQgPSBEUlZfTkFNRSxcbiAxOTI6XHRcdC5wcml2X3NpemUgPSBzaXplb2Yoc3RydWN0IGNhbl9tbF9wcml2KSxcbiAxOTM6XHRcdC5zZXR1cCA9IHZjYW5fc2V0dXAsXG4gMTk0Olx0fTtcbiAxOTU6XHRcbiAxOTY6XHRzdGF0aWMgX19pbml0IGludCB2Y2FuX2luaXRfbW9kdWxlKHZvaWQpXG4gMTk3Olx0e1xuIDE5ODpcdFx0cHJfaW5mbyhcJiMzNDtWaXJ0dWFsIENBTiBpbnRlcmZhY2UgZHJpdmVyXFxuXCYjMzQ7KTtcbiAxOTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBjYW5fY2hhbmdlbGlua2AgYW5kIGB2Y2FuYCoqCgpIbW0sIGl0IHNlZW1zIGxpa2UgYHZjYW5gLCB3aGljaCBJJiMzOTttIHByZXR0eSBmYW1pbGlhciB3aXRoLCBkb2VzbiYjMzk7dCBhY3R1YWxseSBsZXZlcmFnZSB0aGUgYGNhbl9jaGFuZ2VsaW5rYCBmdW5jdGlvbmFsaXR5LiBUaGF0JiMzOTtzIGEgYml0IHVuZXhwZWN0ZWQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHNvbWUgY29kZSBhbmQgbm90aWNlZCBpdHMgYWJzZW5jZSwgYW5kIGl0IHBpcXVlZCBteSBjdXJpb3NpdHkuCgpMZXQgbWUgc2VlLi4uIHJpZ2h0LCAqb2YgY291cnNlKi4gSSBzZWVtIHRvIHJlY2FsbCBub3cgdGhhdCBgY2FuX2NoYW5nZWxpbmtgIGlzIGRlZmluZWQgYW5kIHJlZ2lzdGVyZWQgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmNgLiBUaGF0IGZpbGUgbWFrZXMgdGhlIGxpbms7IGl0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBuZXRsaW5rIGludGVyZmFjZSBmb3IgQ0FOIGRldmljZXMuIFNvLCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHBhcnRpYWxseSBjb3JyZWN0IC0gaXQmIzM5O3MgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIC0gaXQmIzM5O3MganVzdCBub3QgdXRpbGl6ZWQgd2hlcmUgSSB0aG91Z2h0IGl0IHdvdWxkIGJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgdmNhbmAgYWN0dWFsbHkgaGFuZGxlcyBsaW5rIGNoYW5nZXMgYW5kIGlmIGl0IGRvZXMgc28gdGhyb3VnaCBhbm90aGVyIG1lY2hhbmlzbS4gUGVyaGFwcyB0aGVyZSYjMzk7cyBhbiBpbnRlcm5hbCBhcHByb2FjaCwgb3IgaXQgdXNlcyBhIHJlbGF0ZWQgbmV0bGluayBmdW5jdGlvbiB0byBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGB2Y2FuYCBkcml2ZXIgaXRzZWxmIHRvIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTUyND1zdGF0aWMgaW50IGNhbl9wd21fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTU5My1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjU5NDpzdGF0aWMgaW50IGNhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy01OTUtXHRcdFx0ICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTA5MD1zdHJ1Y3QgcnRubF9saW5rX29wcyBjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDk3LVx0Lm5ld2xpbmtcdD0gY2FuX25ld2xpbmssXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzoxMDk4Olx0LmNoYW5nZWxpbmtcdD0gY2FuX2NoYW5nZWxpbmssXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDk5LVx0LmRlbGxpbmtcdD0gY2FuX2RlbGxpbmssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDaGVja2luZyBmb3IgRXhwb3J0ZWQgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBgY2FuX2xpbmtfb3BzYC4uLiBJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IGlmIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBvYmplY3QgaXMgYWN0dWFsbHkgZXhwb3NlZCBmb3IgdXNlIG91dHNpZGUgb2YgaXRzIGltbWVkaWF0ZSBzY29wZS4gSXMgaXQgc29tZXRoaW5nIEkgY2FuIGRpcmVjdGx5IGNhbGwgb3IgYWNjZXNzIGZyb20gZWxzZXdoZXJlLCBvciBpcyBpdCBoaWRkZW4sIHByaXZhdGUsIG9yIG9ubHkgbWVhbnQgZm9yIGludGVybmFsIHVzZSB3aXRoaW4gYSBtb2R1bGU/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGxldmVyYWdlIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBpbiBteSBjdXJyZW50IHRhc2suIFRpbWUgdG8gdmVyaWZ5IGl0cyBleHBvcnQgc3RhdHVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fbGlua19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM9NjExPWludCByZWdpc3Rlcl9jYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0NC1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjQ1Olx0ZGV2LVx1MDAzZXJ0bmxfbGlua19vcHMgPSBcdTAwMjZjYW5fbGlua19vcHM7XG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0Ni1cdG5ldGlmX2NhcnJpZXJfb2ZmKGRldik7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz02NjI9c3RydWN0IGNhbl9wcml2ICpzYWZlX2NhbmRldl9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY2My17XG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjY2NDpcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBBUlBIUkRfQ0FOIHx8IGRldi1cdTAwM2VydG5sX2xpbmtfb3BzICE9IFx1MDAyNmNhbl9saW5rX29wcylcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmMtNjY1LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz0xMDg2PXN0YXRpYyB2b2lkIGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtMTA4OS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjEwOTA6c3RydWN0IHJ0bmxfbGlua19vcHMgY2FuX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDkxLVx0LmtpbmRcdFx0PSBcJiMzNDtjYW5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTEwNj1pbnQgY2FuX25ldGxpbmtfcmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMDcte1xuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6MTEwODpcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2Y2FuX2xpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMDktfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTExMTE9dm9pZCBjYW5fbmV0bGlua191bnJlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMTEyLXtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjExMTM6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZjYW5fbGlua19vcHMpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtMTExNC19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTg5LVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTkxLVx0LmtpbmQgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jPTE5Nj1zdGF0aWMgX19pbml0IGludCB2Y2FuX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0yMDItXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jOjIwMzpcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2dmNhbl9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTIwNC19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0yMDY9c3RhdGljIF9fZXhpdCB2b2lkIHZjYW5fY2xlYW51cF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMjA3LXtcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmM6MjA4Olx0cnRubF9saW5rX3VucmVnaXN0ZXIoXHUwMDI2dmNhbl9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTIwOS19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MTgxPXN0YXRpYyB2b2lkIHZ4Y2FuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAwLS8qIGZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHJ0bmxfY3JlYXRlX2xpbmsoKSAqL1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MjAxOnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcztcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIwMi1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTIwMz1zdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMzYtXHRwZWVyID0gcnRubF9jcmVhdGVfbGluayhwZWVyX25ldCwgaWZuYW1lLCBuYW1lX2Fzc2lnbl90eXBlLFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MjM3Olx0XHRcdFx0XHUwMDI2dnhjYW5fbGlua19vcHMsIHRicCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIzOC1cdGlmIChJU19FUlIocGVlcikpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzA4PXN0YXRpYyBzdHJ1Y3QgbmV0ICp2eGNhbl9nZXRfbGlua19uZXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMTUtXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMTY6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzID0ge1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzE3LVx0LmtpbmRcdFx0PSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0zMjg9c3RhdGljIF9faW5pdCBpbnQgdnhjYW5faW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzMS1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMzMjpcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2dnhjYW5fbGlua19vcHMpO1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzMzLX1cbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0zMzU9c3RhdGljIF9fZXhpdCB2b2lkIHZ4Y2FuX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzNi17XG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMzc6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZ2eGNhbl9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTI5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgYXJlYSBvZiBleHBlcnRpc2U6CgoqKkNBTiBEZXZpY2UgUmVnaXN0cmF0aW9uIGFuZCBPcGVyYXRpb24gVGhvdWdodHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIGBjYW5fbGlua19vcHNgIHN0cnVjdHVyZSBpcyB0aGUga2V5IHRvIG9wZXJhdGlvbnMgb24gQ0FOIGRldmljZXMsIGFuZCBzcGVjaWZpY2FsbHksIGl0JiMzOTtzIHVzZWQgd2l0aCBkZXZpY2VzIHRoYXQgYXJlIGJyb3VnaHQgaW50byB0aGUgc3lzdGVtIHZpYSBgcmVnaXN0ZXJfY2FuZGV2YC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBCdXQgaGVyZSYjMzk7cyB0aGUga2lja2VyOiB2aXJ0dWFsIENBTiBkZXZpY2VzLCBsaWtlIGB2Y2FuYCBhbmQgYHZ4Y2FuYCwgdGhleSBvcGVyYXRlIGEgYml0IGRpZmZlcmVudGx5LiBUaGV5IGhhdmUgdGhlaXIgb3duIGBydG5sX2xpbmtfb3BzYCBzdHJ1Y3R1cmVzLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHNwcmluZ3MgdG8gbWluZCBpcywgZG8gYHZjYW5gIG9yIGB2eGNhbmAgKmFjdHVhbGx5KiB1c2UgYHJlZ2lzdGVyX2NhbmRldmA/IE9yIGRvIHRoZXkgaGF2ZSB0aGVpciBvd24gaW5kZXBlbmRlbnQgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIHRvIHNlZSB3aGF0IHRoZXkgdXNlLiBJdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbiBiZWNhdXNlIGl0IGRpY3RhdGVzIGhvdyB0aGVzZSB2aXJ0dWFsIGludGVyZmFjZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBicm9hZGVyIENBTiBzdWJzeXN0ZW0sIGFuZCB3aGV0aGVyIHRoZXkgZnVsbHkgYWxpZ24gd2l0aCB0aGUgc3RhbmRhcmQgcGh5c2ljYWwgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX2NhbmRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmM9MTA0Nj1zdGF0aWMgaW50IGF0OTFfY2FuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMtMTEzNi1cbmRyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jOjExMzc6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jLTExMzgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM9OTI5PXN0YXRpYyBpbnQgYnhjYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDE2LVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM6MTAxNzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jLTEwMTgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM9MTAzND1zdGF0aWMgdm9pZCBieGNhbl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDM4LVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM6MTAzOTpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmMtMTA0MC1cdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZWNsayk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYz0xMzY3PWludCByZWdpc3Rlcl9jX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jLTEzNzktXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jOjEzODA6XHRyZXR1cm4gcmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jLTEzODEtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmM9MTM4ND12b2lkIHVucmVnaXN0ZXJfY19jYW5fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jLTEzODUte1xuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYzoxMzg2Olx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM4Ny19XG4tLVxuZHJpdmVycy9uZXQvY2FuL2NhbjMyNy5jPTEwMDY9c3RhdGljIGludCBjYW4zMjdfbGRpc2Nfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDQyLVx0LyogTGV0ICYjMzk7ZXIgcmlwICovXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmM6MTA0MzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihlbG0tXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDQ0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYz0xMDYxPXN0YXRpYyB2b2lkIGNhbjMyN19sZGlzY19jbG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDY1LVx0LyogdW5yZWdpc3Rlcl9uZXRkZXYoKSBjYWxscyAubmRvX3N0b3AoKSBzbyB3ZSBkb24mIzM5O3QgaGF2ZSB0by4gKi9cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYzoxMDY2Olx0dW5yZWdpc3Rlcl9jYW5kZXYoZWxtLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmMtMTA2Ny1cbi0tXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYz04NDM9aW50IHJlZ2lzdGVyX2NjNzcwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODY5LVxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM6ODcwOlx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODcxLX1cbi0tXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYz04NzQ9dm9pZCB1bnJlZ2lzdGVyX2NjNzcwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODc2LVx0c2V0X3Jlc2V0X21vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9jYzc3MC9jYzc3MC5jOjg3NzpcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYy04NzgtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmM9MTM0Nj1pbnQgY3R1Y2FuX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkciwgaW50IGlycSwgdW5zaWduZWQgaW50IG50eGJ1ZnMsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYy0xNDM0LVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYzoxNDM1Olx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYy0xNDM2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYz0yMTc9c3RhdGljIHZvaWQgY3R1Y2FuX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTIzOS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYzoyNDA6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGxhdGZvcm0uYz04OT1zdGF0aWMgdm9pZCBjdHVjYW5fcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTUtXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGxhdGZvcm0uYzo5NjpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTctXHRwbV9ydW50aW1lX2Rpc2FibGUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM9NTk5PWNhbl9iaXR0aW1pbmdfY29uc3RfdmFsaWQoY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yylcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTYxMC0vKiBSZWdpc3RlciB0aGUgQ0FOIG5ldHdvcmsgZGV2aWNlICovXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjYxMTppbnQgcmVnaXN0ZXJfY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTYxMi17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NDktfVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NTA6RVhQT1JUX1NZTUJPTF9HUEwocmVnaXN0ZXJfY2FuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmMtNjUxLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTItLyogVW5yZWdpc3RlciB0aGUgQ0FOIG5ldHdvcmsgZGV2aWNlICovXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjY1Mzp2b2lkIHVucmVnaXN0ZXJfY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1NC17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTYtfVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NTc6RVhQT1JUX1NZTUJPTF9HUEwodW5yZWdpc3Rlcl9jYW5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jPTIzMj1zdGF0aWMgaW50IF9faW5pdCBkdW1teV9jYW5faW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNTktXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjYwOlx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNjEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jPTI3Mj1zdGF0aWMgdm9pZCBfX2V4aXQgZHVtbXlfY2FuX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjc2LVx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O2R1bW15LWNhbiBieWUgYnllXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNzc6XHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3OC1cdGZyZWVfY2FuZGV2KGRldik7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM9MzI3PXN0YXRpYyB2b2lkIHBjaTQwMl91bnJlZ2lzdGVyX2NvcmUoc3RydWN0IGFjY19jb3JlICpjb3JlKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTMyOS1cdG5ldGRldl9pbmZvKGNvcmUtXHUwMDNlbmV0ZGV2LCBcJiMzNDt1bnJlZ2lzdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jOjMzMDpcdHVucmVnaXN0ZXJfY2FuZGV2KGNvcmUtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTMzMS1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYz0zMzY9c3RhdGljIGludCBwY2k0MDJfaW5pdF9jb3JlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy0zODktXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYzozOTA6XHRcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmMtMzkxLVx0XHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM9MTg3Mj1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZsZXhjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYy0xOTE5LVxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM6MTkyMDpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmMtMTkyMS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM9MTkzOT1zdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX2ZsZXhjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jLTE5NDAte1xuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM6MTk0MTpcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYy0xOTQyLX1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYz0xNTY5PXN0YXRpYyBpbnQgZ3JjYW5fc2V0dXBfbmV0ZGV2KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE2MjQtXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYzoxNjI1Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNjI2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYz0xNjk5PXN0YXRpYyB2b2lkIGdyY2FuX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNzAzLVxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM6MTcwNDpcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7IC8qIFdpbGwgaW4gdHVybiBjYWxsIGdyY2FuX2Nsb3NlICovXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNzA1LVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmM9OTUzPXN0YXRpYyBpbnQgaWZpX2NhbmZkX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMTktXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jOjEwMjA6XHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMjEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYz0xMDM2PXN0YXRpYyB2b2lkIGlmaV9jYW5mZF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmMtMTAzOS1cbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmM6MTA0MDpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYy0xMDQxLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYz0xODg5PXN0YXRpYyBpbnQgaWNhbjNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jLTIwMDEtXHQvKiByZWdpc3RlciB3aXRoIHRoZSBMaW51eCBDQU4gbGF5ZXIgKi9cbmRyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmM6MjAwMjpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmMtMjAwMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz0xMDI3PXN0YXRpYyBpbnQga3Zhc2VyX3BjaWVmZF9yZWdfY2FuZGV2KHN0cnVjdCBrdmFzZXJfcGNpZWZkICpwY2llKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwMzEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwY2llLVx1MDAzZW5yX2NoYW5uZWxzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6MTAzMjpcdFx0aW50IHJldCA9IHJlZ2lzdGVyX2NhbmRldihwY2llLVx1MDAzZWNhbltpXS1cdTAwM2VjYW4uZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwMzMtXG4tLVxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtMTAzOC1cdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpOyBqJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jOjEwMzk6XHRcdFx0XHR1bnJlZ2lzdGVyX2NhbmRldihwY2llLVx1MDAzZWNhbltqXS1cdTAwM2VjYW4uZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwNDAtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz0xODczPXN0YXRpYyB2b2lkIGt2YXNlcl9wY2llZmRfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTE4ODAtXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYzoxODgxOlx0XHR1bnJlZ2lzdGVyX2NhbmRldihjYW4tXHUwMDNlY2FuLmRldik7XG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYy0xODgyLVx0XHR0aW1lcl9kZWxldGUoXHUwMDI2Y2FuLVx1MDAzZWJlY19wb2xsX3RpbWVyKTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYz0yMzI5PXN0YXRpYyBpbnQgcmVnaXN0ZXJfbV9jYW5fZGV2KHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2Rldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYy0yMzM5LVxuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmM6MjM0MDpcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jLTIzNDEtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jPTI1ODk9dm9pZCBtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldilcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jLTI1OTAte1xuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmM6MjU5MTpcdHVucmVnaXN0ZXJfY2FuZGV2KGNkZXYtXHUwMDNlbmV0KTtcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jLTI1OTItXHRpZiAoY2Rldi1cdTAwM2Vpc19wZXJpcGhlcmFsKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jPTYxNj1pbnQgcmVnaXN0ZXJfbXNjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1zY2FuX2Nsa3NyYylcbi0tXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NTEtXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYzo2NTI6XHRyZXR1cm4gcmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NTMtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jPTY1NT12b2lkIHVucmVnaXN0ZXJfbXNjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NjAtXHRjbHJiaXRzOChcdTAwMjZyZWdzLVx1MDAzZWNhbmN0bDEsIE1TQ0FOX0NBTkUpO1xuZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmM6NjYxOlx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY2Mi19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jPTU3Mz1zdGF0aWMgaW50IHBjaWVmZF9jYW5fcHJvYmUoc3RydWN0IHBjaWVmZF9ib2FyZCAqcGNpZWZkKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02NjgtXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM6NjY5Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jLTY3MC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM9Njk0PXN0YXRpYyB2b2lkIHBjaWVmZF9jYW5fcmVtb3ZlKHN0cnVjdCBwY2llZmRfY2FuICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02OTYtXHQvKiB1bnJlZ2lzdGVyIChjbG9zZSkgdGhlIGNhbiBkZXZpY2UgdG8gZ28gYmFjayB0byBSU1QgbW9kZSBmaXJzdCAqL1xuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jOjY5NzpcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNldWNhbi5uZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02OTgtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYz03NDc9c3RhdGljIGludCByY2FyX2Nhbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODExLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYzo4MTI6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2Nhbi5jLTgxMy1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM6ODE0Olx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7cmVnaXN0ZXJfY2FuZGV2KCkgZmFpbGVkICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODE1LVx0XHRnb3RvIGZhaWxfcnBtO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM9ODMwPXN0YXRpYyB2b2lkIHJjYXJfY2FuX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM0LVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYzo4MzU6XHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM2LVx0cG1fcnVudGltZV9kaXNhYmxlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM9MTg2Mz1zdGF0aWMgaW50IHJjYXJfY2FuZmRfY2hhbm5lbF9wcm9iZShzdHJ1Y3QgcmNhcl9jYW5mZF9nbG9iYWwgKmdwcml2LCB1MzIgY2gsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5NzItXHRncHJpdi1cdTAwM2VjaFtwcml2LVx1MDAzZWNoYW5uZWxdID0gcHJpdjtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYzoxOTczOlx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5NzQtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM6MTk3NTpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3JlZ2lzdGVyX2NhbmRldigpIGZhaWxlZDogJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKGVycikpO1xuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5NzYtXHRcdGdvdG8gZmFpbF9jYW5kZXY7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jPTE5ODg9c3RhdGljIHZvaWQgcmNhcl9jYW5mZF9jaGFubmVsX3JlbW92ZShzdHJ1Y3QgcmNhcl9jYW5mZF9nbG9iYWwgKmdwcml2LCB1MzIgY2gpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5OTItXHRpZiAocHJpdikge1xuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jOjE5OTM6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmMtMTk5NC1cdFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jPTgwMz1zdGF0aWMgaW50IHJrY2FuZmRfcmVnaXN0ZXIoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgxNS1cbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM6ODE2Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYy04MTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM9ODM0PXN0YXRpYyBpbmxpbmUgdm9pZCBya2NhbmZkX3VucmVnaXN0ZXIoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgzNy1cbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM6ODM4Olx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgzOS1cdHBtX3J1bnRpbWVfZGlzYWJsZShuZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYz02ODY9aW50IHJlZ2lzdGVyX3NqYTEwMDBkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMtNjk3LVxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jOjY5ODpcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYy02OTktfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYz03MDI9dm9pZCB1bnJlZ2lzdGVyX3NqYTEwMDBkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMtNzA0LVx0c2V0X3Jlc2V0X21vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYzo3MDU6XHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jLTcwNi19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYz04MTc9c3RhdGljIGludCBzbGNhbl9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04NTYtXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jOjg1NzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04NTgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYz04NzY9c3RhdGljIHZvaWQgc2xjYW5fY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcbi0tXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jLTg3OS1cbmRyaXZlcnMvbmV0L2Nhbi9zbGNhbi9zbGNhbi1jb3JlLmM6ODgwOlx0dW5yZWdpc3Rlcl9jYW5kZXYoc2wtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zbGNhbi9zbGNhbi1jb3JlLmMtODgxLVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jPTY2Mz1zdGF0aWMgaW50IHNvZnRpbmdfbmV0ZGV2X3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMtNjY2LVxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM6NjY3Olx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYy02NjgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM9Njc4PXN0YXRpYyB2b2lkIHNvZnRpbmdfbmV0ZGV2X2NsZWFudXAoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYy02ODAtXHRzeXNmc19yZW1vdmVfZ3JvdXAoXHUwMDI2bmV0ZGV2LVx1MDAzZWRldi5rb2JqLCBcdTAwMjZuZXRkZXZfc3lzZnNfZ3JvdXApO1xuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM6NjgxOlx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jLTY4Mi1cdGZyZWVfY2FuZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYz04Mjg9c3RhdGljIGludCBoaTMxMTBfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05MzUtXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jOjkzNjpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXQpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05MzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvaGkzMTF4LmM9OTU4PXN0YXRpYyB2b2lkIGhpMzExMF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05NjItXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jOjk2MzpcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldCk7XG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jLTk2NC1cbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYz0xMzMxPXN0YXRpYyBpbnQgbWNwMjUxeF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDQzLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ0NDpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXQpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ0NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDUyLVx0XHRkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIHJldCwgXCYjMzQ7Q2Fubm90IHNldCB1cCBncGlvc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYzoxNDUzOlx0XHRnb3RvIG91dF91bnJlZ2lzdGVyX2NhbmRldjtcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0NTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ1OC1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NTk6b3V0X3VucmVnaXN0ZXJfY2FuZGV2OlxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ2MDpcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldCk7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDYxLVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jPTE0NzY9c3RhdGljIHZvaWQgbWNwMjUxeF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ4MC1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0ODE6XHR1bnJlZ2lzdGVyX2NhbmRldihuZXQpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ4Mi1cbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jPTIwODM9c3RhdGljIGludCBtY3AyNTF4ZmRfcmVnaXN0ZXIoc3RydWN0IG1jcDI1MXhmZF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjEyNy1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjEyODpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjEyOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTMzLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjEzNDpcdFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxMzUtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTQxLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE0MjpcdFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNDMtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTQ3LVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMTQ4Om91dF91bnJlZ2lzdGVyX2NhbmRldjpcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE0OTpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTUwLW91dF9ydW50aW1lX2Rpc2FibGU6XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYz0yMTYyPXN0YXRpYyBpbmxpbmUgdm9pZCBtY3AyNTF4ZmRfdW5yZWdpc3RlcihzdHJ1Y3QgbWNwMjUxeGZkX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTY1LVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMTY2Olx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNjctXG4tLVxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jPTgyMD1zdGF0aWMgaW50IHN1bjRpY2FuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTg5Ni1cbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYzo4OTc6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYy04OTgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYz04NDY9c3RhdGljIGludCB0aV9oZWNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYy05NDAtXG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jOjk0MTpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTQyLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYzo5NDM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3JlZ2lzdGVyX2NhbmRldigpIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jLTk0NC1cdFx0Z290byBwcm9iZV9leGl0X29mZmxvYWQ7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYz05NjQ9c3RhdGljIHZvaWQgdGlfaGVjY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jLTk2OC1cbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmM6OTY5Olx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jLTk3MC1cdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZWNsayk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmM9MTAzMz1zdGF0aWMgaW50IGVtc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMtMTA5NS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZW1zX3VzYi5jOjEwOTY6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZW1zX3VzYi5jLTEwOTctXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9lc2RfdXNiLmM9MTIwNj1zdGF0aWMgaW50IGVzZF91c2JfcHJvYmVfb25lX25ldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYi5jLTEyNzMtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYzoxMjc0Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYy0xMjc1LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmM9MjA4OT1zdGF0aWMgaW50IGVzNTh4X2luaXRfbmV0ZGV2KHN0cnVjdCBlczU4eF9kZXZpY2UgKmVzNTh4X2RldiwgaW50IGNoYW5uZWxfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMjExMi1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmM6MjExMzpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYy0yMTE0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jPTIxMzQ9c3RhdGljIHZvaWQgZXM1OHhfZnJlZV9uZXRkZXZzKHN0cnVjdCBlczU4eF9kZXZpY2UgKmVzNTh4X2Rldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTIxNDItXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjIxNDM6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTIxNDQtXHRcdGRldmxpbmtfcG9ydF91bnJlZ2lzdGVyKFx1MDAyNmVzNTh4X3ByaXYobmV0ZGV2KS1cdTAwM2VkZXZsaW5rX3BvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmM9MTE0ND1zdGF0aWMgaW50IGY4MTYwNF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5jLTEyMDgtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5jOjEyMDk6XHRcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9mODE2MDQuYy0xMjEwLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYz0xMzE3PXN0YXRpYyBzdHJ1Y3QgZ3NfY2FuICpnc19tYWtlX2NhbmRldih1bnNpZ25lZCBpbnQgY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE0OTItXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jOjE0OTM6XHRyYyA9IHJlZ2lzdGVyX2NhbmRldihkZXYtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMtMTQ5NC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmM9MTUxMD1zdGF0aWMgdm9pZCBnc19kZXN0cm95X2NhbmRldihzdHJ1Y3QgZ3NfY2FuICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE1MTEte1xuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYzoxNTEyOlx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2LVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE1MTMtXHRjYW5fcnhfb2ZmbG9hZF9kZWwoXHUwMDI2ZGV2LVx1MDAzZW9mZmxvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYz04MDQ9c3RhdGljIHZvaWQga3Zhc2VyX3VzYl9yZW1vdmVfaW50ZXJmYWNlcyhzdHJ1Y3Qga3Zhc2VyX3VzYiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy04MTQtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6ODE1Olx0XHR1bnJlZ2lzdGVyX2NhbmRldihwcml2LVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtODE2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYz04MzM9c3RhdGljIGludCBrdmFzZXJfdXNiX2luaXRfb25lKHN0cnVjdCBrdmFzZXJfdXNiICpkZXYsIGludCBjaGFubmVsKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy05MTAtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6OTExOlx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtOTEyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYz04MDc9c3RhdGljIGludCBtY2JhX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODU5LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg2MDpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg2MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODc3LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg3ODpcdFx0Z290byBjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2O1xuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg3OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODg0LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg4NTpjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2OlxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg4NjpcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy04ODctXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jPTg5NT1zdGF0aWMgdm9pZCBtY2JhX3VzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy05MDItXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6OTAzOlx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTkwNC1cdG1jYmFfdXJiX3VubGluayhwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYz03MjE9c3RhdGljIGludCBuY3Q2Njk0X2NhbmZkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmMtNzg2LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmM6Nzg3Olx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy03ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jPTgwND1zdGF0aWMgdm9pZCBuY3Q2Njk0X2NhbmZkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jLTgxMS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jOjgxMjpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmMtODEzLVx0Y2FuX3J4X29mZmxvYWRfZGVsKFx1MDAyNnByaXYtXHUwMDNlb2ZmbG9hZCk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM9OTExPXN0YXRpYyBpbnQgcGVha191c2JfY3JlYXRlX2Rldihjb25zdCBzdHJ1Y3QgcGVha191c2JfYWRhcHRlciAqcGVha191c2JfYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05ODEtXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo5ODI6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTk4My1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05OTctXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo5OTg6XHRcdFx0Z290byBsYmxfdW5yZWdpc3Rlcl9jYW5kZXY7XG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmMtMTAxOS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jOjEwMjA6bGJsX3VucmVnaXN0ZXJfY2FuZGV2OlxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTAyMTpcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDIyLVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTEwMzY9c3RhdGljIHZvaWQgcGVha191c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDQ5LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTA1MDpcdFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTEwNTEtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmM9MTMwMT1zdGF0aWMgaW50IHVjYW5fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmMtMTUyMS1cdC8qIHJlZ2lzdGVyIHRoZSBkZXZpY2UgKi9cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jOjE1MjI6XHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1MjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jPTE1NDg9c3RhdGljIHZvaWQgdWNhbl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1NTQtXHRpZiAodXApIHtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jOjE1NTU6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KHVwLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYy0xNTU2LVx0XHRmcmVlX2NhbmRldih1cC1cdTAwM2VuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYz05MDE9c3RhdGljIGludCB1c2JfOGRldl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTYyLVxuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jOjk2MzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jLTk2NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTcyLVx0XHRuZXRkZXZfZXJyKG5ldGRldiwgXCYjMzQ7Y2FuJiMzOTt0IGdldCBmaXJtd2FyZSB2ZXJzaW9uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYzo5NzM6XHRcdGdvdG8gY2xlYW51cF91bnJlZ2lzdGVyX2NhbmRldjtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05NzQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05ODItXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmM6OTgzOmNsZWFudXBfdW5yZWdpc3Rlcl9jYW5kZXY6XG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTg0LVx0dW5yZWdpc3Rlcl9uZXRkZXYocHJpdi1cdTAwM2VuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM9NDI2PXN0YXRpYyBpbnQgcmVnaXN0ZXJfdmlydGlvX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdmlydGlvX2Nhbi5jLTQzMC1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM6NDMxOlx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3ZpcnRpb19jYW4uYy00MzItfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM9ODIzPXN0YXRpYyB2b2lkIHZpcnRpb19jYW5fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmMtODI3LVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjQ3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgZHVtbXlfY2FuYCBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgYGR1bW15X2NhbmAgaXMgdXNpbmcgYHJlZ2lzdGVyX2NhbmRldmAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkga25vdyBgZHVtbXlfY2FuYCBpcyBhIHZpcnR1YWwgQ0FOIGRldmljZSwgc28gSSYjMzk7bSBhIGJpdCBzdXJwcmlzZWQgaXQmIzM5O3MgZW1wbG95aW5nIGEgZnVuY3Rpb24gbGlrZSBgcmVnaXN0ZXJfY2FuZGV2YCwgd2hpY2ggSSB0eXBpY2FsbHkgYXNzb2NpYXRlIHdpdGggcGh5c2ljYWwgQ0FOIGNvbnRyb2xsZXJzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdDsgbXkgaW5zdGluY3QgaXMgdGhhdCB0aGVyZSYjMzk7cyBhIGdvb2QgcmVhc29uIGZvciBpdC4gVG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgY2xldmVyIGFic3RyYWN0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEVU1NWV9DQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0OTIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ0FOIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgYGR1bW15X2NhbmAgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgQ0FOIG5ldHdvcmtpbmcgZHJpdmVyIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGZpbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkb2N1bWVudGVkIHRoZXJlLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIGFmdGVyIGFsbCwgdG8gZGVmaW5lIGJ1aWxkLXRpbWUgc2V0dGluZ3Mgd2l0aGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMgb2YgdGhlIGtlcm5lbC4gVGhpcyBmaWxlIGhvbGRzIHRoZSBrZXkgdG8gaG93IHRoaXMgZHJpdmVyIGlzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJlZCBmb3IgYSBzcGVjaWZpYyBrZXJuZWwgYnVpbGQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkdW1teV9jYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEKVx0JiM0Mzs9IGN0dWNhbmZkL1xuZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19DQU5fRFVNTVkpXHRcdCYjNDM7PSBkdW1teV9jYW4ub1xuZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19DQU5fRkxFWENBTilcdCYjNDM7PSBmbGV4Y2FuL1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxOTpzdHJ1Y3QgZHVtbXlfY2FuIHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMC1cdHN0cnVjdCBjYW5fcHJpdiBjYW47XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIzLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0OnN0YXRpYyBzdHJ1Y3QgZHVtbXlfY2FuICpkdW1teV9jYW47XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjUtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0IGR1bW15X2Nhbl9iaXR0aW1pbmdfY29uc3QgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6Mjc6XHQubmFtZSA9IFwmIzM0O2R1bW15X2NhbiBDQ1wmIzM0OyxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yOC1cdC50c2VnMV9taW4gPSAyLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0zNy1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgZHVtbXlfY2FuX2ZkX2RhdGFiaXR0aW1pbmdfY29uc3QgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6Mzk6XHQubmFtZSA9IFwmIzM0O2R1bW15X2NhbiBGRFwmIzM0OyxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy00MC1cdC50c2VnMV9taW4gPSAyLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy00OS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl90ZGNfY29uc3QgZHVtbXlfY2FuX2ZkX3RkY19jb25zdCA9IHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy01MS1cdC50ZGN2X21pbiA9IDAsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTU4LVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCBkdW1teV9jYW5feGxfZGF0YWJpdHRpbWluZ19jb25zdCA9IHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo2MDpcdC5uYW1lID0gXCYjMzQ7ZHVtbXlfY2FuIFhMXCYjMzQ7LFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTYxLVx0LnRzZWcxX21pbiA9IDIsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTcwLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjcxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FuX3RkY19jb25zdCBkdW1teV9jYW5feGxfdGRjX2NvbnN0ID0ge1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTcyLVx0LnRkY3ZfbWluID0gMCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtNzktXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6ODA6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fcHdtX2NvbnN0IGR1bW15X2Nhbl9wd21fY29uc3QgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtODEtXHQucHdtc19taW4gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy04OC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo4OTpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfYml0dGltaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtOTAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwMS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMDI6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X3RkYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX3RkYyAqdGRjKVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwMy17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMDk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X3B3bShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX3B3bSAqcHdtLFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTExMC1cdFx0XHRcdHN0cnVjdCBjYW5fYml0dGltaW5nICpkYnQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTExNi1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMTc6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X2N0cmxtb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTE4LXtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMTk6XHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMjAtXHRzdHJ1Y3QgY2FuX3ByaXYgKmNhbl9wcml2ID0gXHUwMDI2cHJpdi1cdTAwM2VjYW47XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEzOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMzk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZ19pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTQwLXtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNDE6XHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNDItXHRzdHJ1Y3QgY2FuX3ByaXYgKmNhbl9wcml2ID0gXHUwMDI2cHJpdi1cdTAwM2VjYW47XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE0OC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNDk6XHRkdW1teV9jYW5fcHJpbnRfY3RybG1vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNTAtXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTUyLVx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O0NsYXNzaWNhbCBDQU4gbm9taW5hbCBiaXR0aW1pbmc6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNTM6XHRkdW1teV9jYW5fcHJpbnRfYml0dGltaW5nKGRldiwgXHUwMDI2Y2FuX3ByaXYtXHUwMDNlYml0dGltaW5nKTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNTQtXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU3LVx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7Q0FOIEZEIGRhdGFiaXR0aW1pbmc6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNTg6XHRcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZjYW5fcHJpdi1cdTAwM2VmZC5kYXRhX2JpdHRpbWluZyk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU5LVx0XHRpZiAoY2FuX2ZkX3RkY19pc19lbmFibGVkKGNhbl9wcml2KSkge1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE2MC1cdFx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFx0Q0FOIEZEIFREQzpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE2MTpcdFx0XHRkdW1teV9jYW5fcHJpbnRfdGRjKGRldiwgXHUwMDI2Y2FuX3ByaXYtXHUwMDNlZmQudGRjKTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNjItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTY3LVx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7Q0FOIFhMIGRhdGFiaXR0aW1pbmc6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNjg6XHRcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZjYW5fcHJpdi1cdTAwM2V4bC5kYXRhX2JpdHRpbWluZyk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTY5LVx0XHRpZiAoY2FuX3hsX3RkY19pc19lbmFibGVkKGNhbl9wcml2KSkge1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE3MC1cdFx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFx0Q0FOIFhMIFREQzpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE3MTpcdFx0XHRkdW1teV9jYW5fcHJpbnRfdGRjKGRldiwgXHUwMDI2Y2FuX3ByaXYtXHUwMDNleGwudGRjKTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNzItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTc0LVx0XHRcdG5ldGRldl9kYmcoZGV2LCBcJiMzNDtcXHRDQU4gWEwgUFdNOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTc1Olx0XHRcdGR1bW15X2Nhbl9wcmludF9wd20oZGV2LCBcdTAwMjZjYW5fcHJpdi1cdTAwM2V4bC5wd20sXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTc2LVx0XHRcdFx0XHQgICAgXHUwMDI2Y2FuX3ByaXYtXHUwMDNleGwuZGF0YV9iaXR0aW1pbmcpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xODEtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTgyOnN0YXRpYyBpbnQgZHVtbXlfY2FuX25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTgzLXtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTg2LVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE4NzpcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmdfaW5mbyhkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4OC1cdG5ldGRldl9kYmcoZGV2LCBcJiMzNDtlcnJvci1zaWduYWxsaW5nIGlzICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xOTktXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjAwOnN0YXRpYyBpbnQgZHVtbXlfY2FuX25ldGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIwOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMDk6c3RhdGljIG5ldGRldl90eF90IGR1bW15X2Nhbl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjEwLVx0XHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMjEtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZHVtbXlfY2FuX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjIzOlx0Lm5kb19vcGVuID0gZHVtbXlfY2FuX25ldGRldl9vcGVuLFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyNDpcdC5uZG9fc3RvcCA9IGR1bW15X2Nhbl9uZXRkZXZfY2xvc2UsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjI1Olx0Lm5kb19zdGFydF94bWl0ID0gZHVtbXlfY2FuX3N0YXJ0X3htaXQsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjI2LX07XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjI3LVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyODpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGR1bW15X2Nhbl9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMjktXHQuZ2V0X3RzX2luZm8gPSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMzEtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjMyOnN0YXRpYyBpbnQgX19pbml0IGR1bW15X2Nhbl9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjMzLXtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMzQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIzNTpcdHN0cnVjdCBkdW1teV9jYW4gKnByaXY7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjM2LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjQxLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0MjpcdGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2ZHVtbXlfY2FuX25ldGRldl9vcHM7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjQzOlx0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2ZHVtbXlfY2FuX2V0aHRvb2xfb3BzO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0NC1cdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfRUNITzsgLyogZW5hYmxlIGVjaG8gaGFuZGxpbmcgKi9cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNDUtXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNDY6XHRwcml2LVx1MDAzZWNhbi5iaXR0aW1pbmdfY29uc3QgPSBcdTAwMjZkdW1teV9jYW5fYml0dGltaW5nX2NvbnN0O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0Ny1cdHByaXYtXHUwMDNlY2FuLmJpdHJhdGVfbWF4ID0gMjAgKiBNRUdBIC8qIEJQUyAqLztcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNDgtXHRwcml2LVx1MDAzZWNhbi5jbG9jay5mcmVxID0gMTYwICogTUVHQSAvKiBIeiAqLztcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNDk6XHRwcml2LVx1MDAzZWNhbi5mZC5kYXRhX2JpdHRpbWluZ19jb25zdCA9IFx1MDAyNmR1bW15X2Nhbl9mZF9kYXRhYml0dGltaW5nX2NvbnN0O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MDpcdHByaXYtXHUwMDNlY2FuLmZkLnRkY19jb25zdCA9IFx1MDAyNmR1bW15X2Nhbl9mZF90ZGNfY29uc3Q7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjUxOlx0cHJpdi1cdTAwM2VjYW4ueGwuZGF0YV9iaXR0aW1pbmdfY29uc3QgPSBcdTAwMjZkdW1teV9jYW5feGxfZGF0YWJpdHRpbWluZ19jb25zdDtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNTI6XHRwcml2LVx1MDAzZWNhbi54bC50ZGNfY29uc3QgPSBcdTAwMjZkdW1teV9jYW5feGxfdGRjX2NvbnN0O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MzpcdHByaXYtXHUwMDNlY2FuLnhsLnB3bV9jb25zdCA9IFx1MDAyNmR1bW15X2Nhbl9wd21fY29uc3Q7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjU0LVx0cHJpdi1cdTAwM2VjYW4uY3RybG1vZGVfc3VwcG9ydGVkID0gQ0FOX0NUUkxNT0RFX0xJU1RFTk9OTFkgfFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNjUtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY2Olx0ZHVtbXlfY2FuID0gcHJpdjtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNjctXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7ZHVtbXktY2FuIHJlYWR5XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjcxLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3MjpzdGF0aWMgdm9pZCBfX2V4aXQgZHVtbXlfY2FuX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNzMte1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3NDpcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkdW1teV9jYW4tXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3NS1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjgwLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI4MTptb2R1bGVfaW5pdChkdW1teV9jYW5faW5pdCk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjgyOm1vZHVsZV9leGl0KGR1bW15X2Nhbl9leGl0KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTU1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIER1bW15IENBTiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYENPTkZJR19DQU5fRFVNTVlgLi4uIHRoYXQgc2NyZWFtcyAmIzM0O2R1bW15X2NhbiYjMzQ7IHRvIG1lLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgQ0FOLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGlzIGFjY3VyYXRlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSByZXZlYWxzIGFib3V0IHRoaXMgYENBTl9EVU1NWWAgc2V0dGluZy4gSG9wZWZ1bGx5LCB0aGUgY29tbWVudHMgYXJlIGNsZWFyIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX0RVTU1ZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0xMDY9Y29uZmlnIENBTl9DQU4zMjdcbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzoxMjQ6Y29uZmlnIENBTl9EVU1NWVxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMTI1LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgQ0FOXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDU4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIGJpdCB0aW1pbmcgaW4gdGhlIENBTiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ0FOX0RVTU1ZYCBpcyBrZXkgaGVyZSBiZWNhdXNlIGl0JiMzOTtzIGEgdmlydHVhbCBDQU4gZGV2aWNlIGNyZWF0ZWQgdXNpbmcgYHJlZ2lzdGVyX2NhbmRldmAuIFRoaXMgbWVhbnMgaXQgKnNob3VsZCogdXRpbGl6ZSBgY2FuX2xpbmtfb3BzYCBhbmQsIHRoZXJlZm9yZSwgc3VwcG9ydCBgY2FuX2NoYW5nZWxpbmtgLiBKdXN0IHRvIGNvbmZpcm0sIGByZWdpc3Rlcl9jYW5kZXZgIGRvZXMgaW5kZWVkIHNldCBgZGV2LSZndDtydG5sX2xpbmtfb3BzID0gJmFtcDtjYW5fbGlua19vcHM7YCwgYW5kIGBjYW5fbGlua19vcHNgIGRvZXMsIGluIGZhY3QsIGhhdmUgYC5jaGFuZ2VsaW5rID0gY2FuX2NoYW5nZWxpbmtgLiBDb25zZXF1ZW50bHksIGBjYW5fY2hhbmdlbGlua2AgY2FsbHMgYGNhbl9nZXRfYml0dGltaW5nYCwgd2hpY2ggaW4gdHVybiBjYWxscyB0aGUgdGFyZ2V0IGZ1bmN0aW9uLCBgY2FuX2NhbGNfYml0dGltaW5nYC4gU28sIHdlICphcmUqIGFibGUgdG8gcmVhY2ggYGNhbl9jYWxjX2JpdHRpbWluZ2AgdGhyb3VnaCBuZXRsaW5rIGZvciB0aGlzIHZpcnR1YWwgYGR1bW15X2NhbmAgZGV2aWNlLgoKTm93LCBsZXQmIzM5O3MgZm9jdXMgb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXRzZWxmLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhpcyBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jYC4gVGhlIGNvZGUgc25pcHBldCBoZXJlOgoKYGBgYwoJCS8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSYjNDM7dHNlZzIpLgoJCSAqIEEgMzIgYml0IHRzZWdhbGwgKiBidC0mZ3Q7Yml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZQoJCSAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuCgkJICovCgkJYnJwID0gZGl2NjRfdTY0KHByaXYtJmd0O2Nsb2NrLmZyZXEsCgkJCQltdWxfdTMyX3UzMih0c2VnYWxsLCBidC0mZ3Q7Yml0cmF0ZSkpICYjNDM7IHRzZWcgJSAyOwpgYGAKCnNob3dzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWltZWQgYXQgcHJldmVudGluZyBkaXZpc2lvbi1ieS16ZXJvIG9yIGluY29ycmVjdCBjYWxjdWxhdGlvbnMgd2hlbiBkZWFsaW5nIHdpdGggbGFyZ2UgYml0cmF0ZXMuIFRoaXMgaXMgYSBjbGFzc2ljIGludGVnZXIgb3ZlcmZsb3cvdW5kZXJmbG93IGNvbmNlcm4uIEl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmssIHdoaWNoIG1lYW5zIGl0IG5lZWRzIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUsIHRoZW4sIGFyZSB0aGUgZnVuY3Rpb25zIGBjYW5fY2FsY19iaXR0aW1pbmdgLCBgY2FuX2dldF9iaXR0aW1pbmdgLCBhbmQgYGNhbl9jaGFuZ2VsaW5rYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBDQU5gLCBgQ0FOX0RFVmAsIGBDQU5fRFVNTVlgLCBgQ0FOX1ZDQU5gLCBhbmQgYENBTl9WWENBTmAgYXJlIGFsbCByZWxldmFudC4KCkhvbGQgb24uIExldCBtZSBjaXJjbGUgYmFjayB0byBgQ0FOX0RVTU1ZYC4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBjb25maWcgYmVjYXVzZSwgYXMgd2UgZXN0YWJsaXNoZWQsIGl0IHVzZXMgYHJlZ2lzdGVyX2NhbmRldmAuIFdoYXQgYWJvdXQgYHZjYW5gIGFuZCBgdnhjYW5gPyBUaG9zZSBkb24mIzM5O3QgY2FsbCBgcmVnaXN0ZXJfY2FuZGV2YCwgc28gdGhleSBkb24mIzM5O3Qgc2VlbSB0byB1c2UgYGNhbl9saW5rX29wc2AuIEFoLCBJIHNlZSEgYHZjYW5gIGFuZCBgdnhjYW5gIGFyZSB2aXJ0dWFsIENBTiBkZXZpY2VzLCBidXQgdGhleSBkb24mIzM5O3QgaGF2ZSAqYml0IHRpbWluZyogaW4gdGhlIHNhbWUgc2Vuc2UgYXMgcGh5c2ljYWwgQ0FOIGRldmljZXMuIEJpdCB0aW1pbmcgaXMgbW9yZSByZWxldmFudCBmb3Igc2ltdWxhdGVkIHBoeXNpY2FsIGRldmljZXMgbGlrZSB0aGUgYGR1bW15X2NhbmAuIFRodXMsIGBDQU5fRFVNTVlgIGlzLCBpbmRlZWQsIHRoZSBjb3JyZWN0IGNvbmZpZyB0byBlbmFibGUuCgpGaW5hbGx5LCBqdXN0IHRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMsIGxpa2UgYENBTl9ORVRMSU5LYC4gSSYjMzk7bGwgdmVyaWZ5IGlmIGl0JiMzOTtzIG5lY2Vzc2FyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzYwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBDQU4gRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBDQU4tcmVsYXRlZCBpc3N1ZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRob3NlIGtlcm5lbC1sZXZlbCBzZXR0aW5ncyBpcyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvY2FuL2Rldi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIGNsb3NlbHkgYW5hbG9nb3VzIHdpdGhpbiB0aGUgQ0FOIGRyaXZlciBkaXJlY3Rvcnkgc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpjb25maWd1cmFibGUqIGF0IGNvbXBpbGUgdGltZS4gQXJlIHdlIGxvb2tpbmcgYXQgc3BlY2lmaWMgQ0FOIGNvbnRyb2xsZXJzLCBmZWF0dXJlcyBsaWtlIGJpdHJhdGUgYWRqdXN0bWVudHMsIGVycm9yIGhhbmRsaW5nIG1vZGVzLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGludGVyZmFjZSBpdHNlbGY/IFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgdG8gdHJvdWJsZXNob290aW5nIGFuZCBwb3RlbnRpYWxseSBwYXRjaGluZyBhIENBTiBkcml2ZXIuIEl0IGhlbHBzIG1lIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBlbmFibGVkIGFuZCBkaXNhYmxlZCBkdXJpbmcgY29tcGlsYXRpb24uIEl0IHdvdWxkIGJlIG15IGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB3aGF0IEkgYW0gZGVhbGluZyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTM0PWNvbmZpZyBDQU5fVlhDQU5cbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjQ5OmNvbmZpZyBDQU5fTkVUTElOS1xuZHJpdmVycy9uZXQvY2FuL0tjb25maWctNTAtXHRib29sIFwmIzM0O0NBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA4OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgQ0FOX05FVExJTksgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpc3NlY3QgdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBzZWN0aW9uIGNvbmNlcm5pbmcgYENBTl9ORVRMSU5LYC4gSSYjMzk7bSBhbHJlYWR5IHZpc3VhbGl6aW5nIHRoZSBLY29uZmlnIHN5bnRheCBpbiBteSBoZWFkOyB0aGlzIHNob3VsZCBiZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZXhhbWluYXRpb24sIGFsdGhvdWdoIEnigJltIHN1cmUgaXTigJlsbCBkZXBlbmQgb24gaG93IGRlZXAgdGhlIG5lc3RlZCBkZXBlbmRlbmNpZXMgYXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgY3JpdGVyaWEgdHJpZ2dlciB0aGUgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbiBvZiB0aGlzIGZlYXR1cmUgaW4gYSBrZXJuZWwgYnVpbGQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIGBib29sYCBvcHRpb24sIG9yIGlzIHRoZXJlIGEgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gaW52b2x2aW5nIGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JrIHN0YWNrcyBvciBoYXJkd2FyZSBkcml2ZXJzPyBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLWRvY3VtZW50ZWQsIGJlY2F1c2UsIGxldCYjMzk7cyBmYWNlIGl0LCB0ZXJzZSBLY29uZmlnIGRlc2NyaXB0aW9ucyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIHRoaXMgcmVsaWVzIG9uIGEgc3BlY2lmaWMga2VybmVsIHZlcnNpb24gdG9vLiBUaGlzIGlzbiYjMzk7dCB1c3VhbGx5IHRoZSBjYXNlIHdpdGggQ0FOIGRyaXZlcnMsIGJ1dCBvbmUgY2FuIGhvcGUhIEZyb20gdGhlIG5hbWUsIEkmIzM5O2QgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBOZXRsaW5rIGludGVyZmFjZSBmb3IgQ0FOLCBhbmQgaWYgdGhpcyBpcyB0aGUgY2FzZSwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHdlbGwgaXQmIzM5O3MgZGVzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ1Olx0XG4gIDQ2Olx0XHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcbiAgNDc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnhjYW4uXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIENBTl9ORVRMSU5LXG4gIDUwOlx0XHRib29sIFwmIzM0O0NBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFwmIzM0O1xuICA1MTpcdFx0ZGVmYXVsdCB5XG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHQgIEVuYWJsZXMgdGhlIGNvbW1vbiBmcmFtZXdvcmsgZm9yIENBTiBkZXZpY2UgZHJpdmVycy4gVGhpcyBpcyB0aGVcbiAgNTQ6XHRcdCAgc3RhbmRhcmQgbGlicmFyeSBhbmQgcHJvdmlkZXMgZmVhdHVyZXMgZm9yIHRoZSBOZXRsaW5rIGludGVyZmFjZSBzdWNoXG4gIDU1Olx0XHQgIGFzIGJpdHRpbWluZyB2YWxpZGF0aW9uLCBzdXBwb3J0IG9mIENBTiBlcnJvciBzdGF0ZXMsIGRldmljZSByZXN0YXJ0XG4gIDU2Olx0XHQgIGFuZCBvdGhlcnMuXG4gIDU3Olx0XG4gIDU4Olx0XHQgIFRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIHNlbGVjdGVkIGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgYWRkZWQgdG8gdGhlXG4gIDU5Olx0XHQgIGNhbi1kZXYgbW9kdWxlLlxuICA2MDpcdFxuICA2MTpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIGJ5IGFsbCBwbGF0Zm9ybSBhbmQgaGFyZHdhcmUgQ0FOIGRyaXZlcnMuIElmIHlvdVxuICA2MjpcdFx0ICBwbGFuIHRvIHVzZSBzdWNoIGRldmljZXMgb3IgaWYgdW5zdXJlLCBzYXkgWS5cbiAgNjM6XHRcbiAgNjQ6XHRpZiBDQU5fTkVUTElOS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzY2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ0FOIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsb29rcyBsaWtlIGBDQU5fTkVUTElOS2AgaXMgYSBoYXJkIHJlcXVpcmVtZW50LCBhbmQgdGhhbmtmdWxseSBpdCYjMzk7cyBhbHJlYWR5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc2V0IHRvICYjMzk7eSYjMzk7LiBUaGF0JiMzOTtzIG9uZSBsZXNzIHRoaW5nIHRvIHdvcnJ5IGFib3V0LiBOb3csIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBDQU5fQ0FMQ19CSVRUSU1JTkdgIGlzIGFjdHVhbGx5IGEgY29uZmlndXJhYmxlIG9wdGlvbi4gR290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgcHJvcGVybHkgZGVmaW5lZCBpbiB0aGUgY29uZmlnIHNwYWNlLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDQU5fQ0FMQ19CSVRUSU1JTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTY0PWlmIENBTl9ORVRMSU5LXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjY2OmNvbmZpZyBDQU5fQ0FMQ19CSVRUSU1JTkdcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTY3LVx0Ym9vbCBcJiMzNDtDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzk0NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBDQU4gQml0IFRpbWluZyBDYWxjdWxhdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGF0IGBDQU5fQ0FMQ19CSVRUSU1JTkdgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlJiMzOTtyZSBjb250cm9sbGluZyB0aGUgYml0IHRpbWluZyBjYWxjdWxhdGlvbnMgZm9yIENBTiBjb250cm9sbGVycy4gSXQmIzM5O3MgYSBjcml0aWNhbCBhc3BlY3Qgb2YgQ0FOIGNvbW11bmljYXRpb247IGdldCB0aGlzIHdyb25nLCBhbmQgdGhlIGVudGlyZSBidXMgZ29lcyBzb3V0aC4gSSB3YW50IHRvIHNlZSBpZiB3ZSBvZmZlciBmbGV4aWJpbGl0eSBpbiBob3cgdGhlc2UgdGltaW5ncyBhcmUgaGFuZGxlZC4KCkkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgY29uZGl0aW9uYWwgbG9naWMgaGVyZSwgbWF5YmUgZGVwZW5kZW50IG9uIHRoZSBzcGVjaWZpYyBDQU4gY29udHJvbGxlciB0eXBlIHN1cHBvcnRlZCwgc2luY2UgZGlmZmVyZW50IGhhcmR3YXJlIGxpa2VseSBoYXMgZGlmZmVyZW50IHdheXMgb2YgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcywgb3IgbWF5YmUgdGhlcmUmIzM5O3MgYSBzaW1wbGUsIGFuZCBjb25maWd1cmFibGUsIG1hdGhlbWF0aWNhbCBmb3JtdWxhIGluIHBsYXksIGlmIHdlIG5lZWQgdG8gbWFudWFsbHkgdHVuZSBpdC4gSXQmIzM5O3MgYWxzbyBsaWtlbHkgd2UgaGF2ZSBhIGRlZmF1bHQgY2FsY3VsYXRpb24sIGFuZCB0aGUgYENBTl9DQUxDX0JJVFRJTUlOR2AgaXMganVzdCBnaXZpbmcgdGhlIHVzZXIgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGEgcGFydGljdWxhciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQuIEkgbmVlZCB0byBzZWUgaWYgaXQgYWxsb3dzIGZvciBoYW5kLXR1bmVkIHZhbHVlcyBhcyBhbiBleHBlcnQgaW4gQ0FOLCBJIHdhbnQgdG8gY29udHJvbCB0aGUgdGltaW5nIGFzIHByZWNpc2VseSBhcyBwb3NzaWJsZSEKSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBwcm9zIGFuZCBjb25zIG9mIHRoZXNlIGRpZmZlcmVudCBhcHByb2FjaGVzOiBhdXRvbWF0aWMgdmVyc3VzIG1hbnVhbCwgYW5kIGhvdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNsb2NrIGZyZXF1ZW5jaWVzIGFuZCBzYW1wbGUgcG9pbnRzLiBJIGFsc28gbmVlZCB0byBhc3Nlc3Mgd2hldGhlciB3ZSBhcmUgc3VwcG9ydGluZyBkaWZmZXJlbnQgQ0FOIHN0YW5kYXJkcyAoQ0FOIDIuMEEsIENBTiAyLjBCLCBDQU4gRkQsIGV0Yy4pLCBhbmQgaG93IGJpdCB0aW1pbmcgaXMgaGFuZGxlZCBmb3IgZWFjaC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IGdvdGNoYXMgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KVWx0aW1hdGVseSwgSSB3YW50IHRvIGJlIGFibGUgdG8gYWR2aXNlIHRoZSB1c2VyIG9uIHRoZSBtb3N0IGVmZmljaWVudCBhbmQgcmVsaWFibGUgYml0IHRpbWluZyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2NDpcdGlmIENBTl9ORVRMSU5LXG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1xuICA2NzpcdFx0Ym9vbCBcJiMzNDtDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvblwmIzM0O1xuICA2ODpcdFx0ZGVmYXVsdCB5XG4gIDY5Olx0XHRoZWxwXG4gIDcwOlx0XHQgIElmIGVuYWJsZWQsIENBTiBiaXQtdGltaW5nIHBhcmFtZXRlcnMgd2lsbCBiZSBjYWxjdWxhdGVkIGZvciB0aGVcbiAgNzE6XHRcdCAgYml0LXJhdGUgc3BlY2lmaWVkIHZpYSBOZXRsaW5rIGFyZ3VtZW50IFwmIzM0O2JpdHJhdGVcJiMzNDsgd2hlbiB0aGUgZGV2aWNlXG4gIDcyOlx0XHQgIGdldCBzdGFydGVkLiBUaGlzIHdvcmtzIGZpbmUgZm9yIHRoZSBtb3N0IGNvbW1vbiBDQU4gY29udHJvbGxlcnNcbiAgNzM6XHRcdCAgd2l0aCBzdGFuZGFyZCBiaXQtcmF0ZXMgYnV0IG1heSBmYWlsIGZvciBleG90aWMgYml0LXJhdGVzIG9yIENBTlxuICA3NDpcdFx0ICBzb3VyY2UgY2xvY2sgZnJlcXVlbmNpZXMuIERpc2FibGluZyBzYXZlcyBzb21lIHNwYWNlLCBidXQgdGhlbiB0aGVcbiAgNzU6XHRcdCAgYml0LXRpbWluZyBwYXJhbWV0ZXJzIG11c3QgYmUgc3BlY2lmaWVkIGRpcmVjdGx5IHVzaW5nIHRoZSBOZXRsaW5rXG4gIDc2Olx0XHQgIGFyZ3VtZW50cyBcJiMzNDt0cVwmIzM0OywgXCYjMzQ7cHJvcF9zZWdcJiMzNDssIFwmIzM0O3BoYXNlX3NlZzFcJiMzNDssIFwmIzM0O3BoYXNlX3NlZzJcJiMzNDsgYW5kIFwmIzM0O3Nqd1wmIzM0Oy5cbiAgNzc6XHRcbiAgNzg6XHRcdCAgVGhlIGFkZGl0aW9uYWwgZmVhdHVyZXMgc2VsZWN0ZWQgYnkgdGhpcyBvcHRpb24gd2lsbCBiZSBhZGRlZCB0byB0aGVcbiAgNzk6XHRcdCAgY2FuLWRldiBtb2R1bGUuXG4gIDgwOlx0XG4gIDgxOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDgyOlx0XG4gIDgzOlx0Y29uZmlnIENBTl9SWF9PRkZMT0FEXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Njc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgQ0FOIEJ1cyBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBDQU4tcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNlZW1zIGxpa2UgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ0FOX0NBTENfQklUVElNSU5HYCBpcyBlbmFibGVkIHRvby4gR29vZCB0byBrbm93IGl0IGRlZmF1bHRzIHRvICYjMzk7eSYjMzk7LCBidXQgSSBzaG91bGQgc3RpbGwgZG91YmxlLWNoZWNrLgoKRXNzZW50aWFsbHksIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZXNlIGtleSBDQU4gY29uZmlndXJhdGlvbnM6IGBDQU5gLCBgQ0FOX0RFVmAsIGBDQU5fTkVUTElOS2AsIGBDQU5fQ0FMQ19CSVRUSU1JTkdgLCBhbmQgYENBTl9EVU1NWWAuIFRoaXMgc2VlbXMgbGlrZSBhIHByZXR0eSBzdGFuZGFyZCBzZXR1cC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFNvLCBuZXh0LCBJJiMzOTtsbCBmb2N1cyBvbiBgQ0FOX0RVTU1ZYCBhbmQgaW52ZXN0aWdhdGUgYW55IGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVxdWlyZWQgaWYgSSBlbmFibGUgaXQuIEl0IGlzIGEgZ29vZCBwcmFjdGljZSB0byByZXZpZXcgYWxsIGRlcGVuZGVuY2llcywganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjA6XHRcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jYW4zMjcucnN0XG4gMTIxOlx0XG4gMTIyOlx0XHQgIElmIHRoaXMgZHJpdmVyIGlzIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCBjYW4zMjcuXG4gMTIzOlx0XG4gMTI0Olx0Y29uZmlnIENBTl9EVU1NWVxuIDEyNTpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgQ0FOXCYjMzQ7XG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIEEgZHVtbXkgQ0FOIG1vZHVsZSBzdXBwb3J0aW5nIENsYXNzaWNhbCBDQU4sIENBTiBGRCBhbmQgQ0FOIFhMLiBJdFxuIDEyODpcdFx0ICBleHBvc2VzIGJpdHRpbWluZyB2YWx1ZXMgd2hpY2ggY2FuIGJlIGNvbmZpZ3VyZWQgdGhyb3VnaCB0aGUgbmV0bGlua1xuIDEyOTpcdFx0ICBpbnRlcmZhY2UuXG4gMTMwOlx0XG4gMTMxOlx0XHQgIFRoZSBtb2R1bGUgd2lsbCBzaW1wbHkgZWNobyBhbnkgZnJhbWUgc2VudCB0byBpdC4gSWYgZGVidWcgbWVzc2FnZXNcbiAxMzI6XHRcdCAgYXJlIGFjdGl2YXRlZCwgaXQgcHJpbnRzIGFsbCB0aGUgQ0FOIGJpdHRpbWluZyBpbmZvcm1hdGlvbiBpbiB0aGVcbiAxMzM6XHRcdCAga2VybmVsIGxvZy4gQXNpZGUgZnJvbSB0aGF0IGl0IGRvZXMgbm90aGluZy5cbiAxMzQ6XHRcbiAxMzU6XHRcdCAgVGhpcyBpcyBjb252ZW5pZW50IGZvciB0ZXN0aW5nIHRoZSBDQU4gbmV0bGluayBpbnRlcmZhY2UuIE1vc3Qgb2YgdGhlXG4gMTM2Olx0XHQgIHVzZXJzIHdpbGwgbmV2ZXIgbmVlZCB0aGlzLiBJZiB1bnN1cmUsIHNheSBOTy5cbiAxMzc6XHRcbiAxMzg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gMTM5Olx0XHQgIGNhbGxlZCBkdW1teS1jYW4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzIxCgkJCQkJCQlvdXRwdXQ6IDE5MgoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRnV6emluZyBQb3RlbnRpYWw6IGBjYW5fY2FsY19iaXR0aW1pbmdgKioKCk9rYXksIHNvIHRoaXMgY29kZSBibG9jayBpcyBwcmV0dHkgc2VsZi1jb250YWluZWQsIG5vdCByZWx5aW5nIG9uIGFueXRoaW5nIGJleW9uZCB0aGF0IGBpZiBDQU5fREVWYCBjaGVjay4gVGhhdOKAmXMgZ29vZCwgbGVzcyB0byB3b3JyeSBhYm91dCBpbiB0ZXJtcyBvZiBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBjYW5fY2FsY19iaXR0aW1pbmdgIGZ1bmN0aW9uIGFnYWluLCBqdXN0IHRvIGJlIHN1cmUuIExldCBtZSBzZWUgdGhlIHNpZ25hdHVyZS4uLiBZZXAsIHRoZXJlIGl0IGlzOgoKYGBgYwppbnQgY2FuX2NhbGNfYml0dGltaW5nKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fYml0dGltaW5nICpidCwKCQkgICAgICAgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQpgYGAKClJpZ2h0LCBpdCYjMzk7cyBhIG5vbi1zdGF0aWMgQVBJIGVudHJ5cG9pbnQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGlucHV0IHR5cGVzIHNlZW0gcmVhc29uYWJsZSBmb3IgZ2VuZXJhdGluZyBkaXZlcnNlIHRlc3QgY2FzZXMuIEkgY2FuIHNlZSB0aGUgcGFyYW1ldGVycyBhcmUgdGhpbmdzIGxpa2UgdGhlIG5ldHdvcmsgZGV2aWNlIGl0c2VsZiwgYml0dGltaW5nIGFuZCBjb25zdGFudCBiaXR0aW1pbmcgc3RydWN0dXJlcywgYW5kIGV4dGVuZGVkIGFja25vd2xlZGdlbWVudC4gSSBzaG91bGQgZGVmaW5pdGVseSBzZXQgdGhlIHJlc3VsdHMgb2YgdGhlIGZ1enppbmcgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX05FVExJTksmIzM0OywKICAgICYjMzQ7Q0FOX0NBTENfQklUVElNSU5HJiMzNDssCiAgICAmIzM0O0NBTl9EVU1NWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX05FVExJTksmIzM0OywKICAgICYjMzQ7Q0FOX0NBTENfQklUVElNSU5HJiMzNDssCiAgICAmIzM0O0NBTl9EVU1NWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjMyLjc5NTgwNDYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MDgzMzQ0NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNBTlwiLFxuICAgIFwiQ0FOX0RFVlwiLFxuICAgIFwiQ0FOX05FVExJTktcIixcbiAgICBcIkNBTl9DQUxDX0JJVFRJTUlOR1wiLFxuICAgIFwiQ0FOX0RVTU1ZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2FuX2NhbGNfYml0dGltaW5nXCIsXG4gICAgXCJjYW5fZ2V0X2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2NoYW5nZWxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6MzIuNzk1ODE2ODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNDY0MDg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmMWMxNDAyZTg3M2JlNGY4MTE5MzY4Y2M1Y2U2ZTZjOTk3MWJjMDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTozODozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcXG5pbmRleCA0MjQ5OGU5ZDNmMzhkLi4yNzg5Yjk5YWI2YTgzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY1xcbkBAIC0xMTksOCArMTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxcbiBcXHQgICAgIHRzZWcgXFx1MDAzZT0gKGJ0Yy1cXHUwMDNldHNlZzFfbWluICsgYnRjLVxcdTAwM2V0c2VnMl9taW4pICogMjsgdHNlZy0tKSB7XFxuIFxcdFxcdHRzZWdhbGwgPSBDQU5fU1lOQ19TRUcgKyB0c2VnIC8gMjtcXG4gXFxuLVxcdFxcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSt0c2VnMikgKi9cXG4tXFx0XFx0YnJwID0gcHJpdi1cXHUwMDNlY2xvY2suZnJlcSAvICh0c2VnYWxsICogYnQtXFx1MDAzZWJpdHJhdGUpICsgdHNlZyAlIDI7XFxuK1xcdFxcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSt0c2VnMikuXFxuK1xcdFxcdCAqIEEgMzIgYml0IHRzZWdhbGwgKiBidC1cXHUwMDNlYml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZVxcbitcXHRcXHQgKiB1c2Vyc3BhY2UgYml0cmF0ZXMsIHNvIGNvbXB1dGUgdGhlIHByb2R1Y3QgaW4gNjQgYml0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0YnJwID0gZGl2NjRfdTY0KHByaXYtXFx1MDAzZWNsb2NrLmZyZXEsXFxuK1xcdFxcdFxcdFxcdG11bF91MzJfdTMyKHRzZWdhbGwsIGJ0LVxcdTAwM2ViaXRyYXRlKSkgKyB0c2VnICUgMjtcXG4gXFxuIFxcdFxcdC8qIGNob29zZSBicnAgc3RlcCB3aGljaCBpcyBwb3NzaWJsZSBpbiBzeXN0ZW0gKi9cXG4gXFx0XFx0YnJwID0gKGJycCAvIGJ0Yy1cXHUwMDNlYnJwX2luYykgKiBidGMtXFx1MDAzZWJycF9pbmM7XFxuQEAgLTEyOCw3ICsxMzIsNyBAQCBpbnQgY2FuX2NhbGNfYml0dGltaW5nKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fYml0dGltaW5nICpidCxcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRiaXRyYXRlID0gcHJpdi1cXHUwMDNlY2xvY2suZnJlcSAvIChicnAgKiB0c2VnYWxsKTtcXG4tXFx0XFx0Yml0cmF0ZV9lcnJvciA9IGFicyhidC1cXHUwMDNlYml0cmF0ZSAtIGJpdHJhdGUpO1xcbitcXHRcXHRiaXRyYXRlX2Vycm9yID0gYWJzX2RpZmYoYnQtXFx1MDAzZWJpdHJhdGUsIGJpdHJhdGUpO1xcbiBcXG4gXFx0XFx0LyogdHNlZyBicnAgYml0ZXJyb3IgKi9cXG4gXFx0XFx0aWYgKGJpdHJhdGVfZXJyb3IgXFx1MDAzZSBiZXN0X2JpdHJhdGVfZXJyb3IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjMzLjYwMTY5NzE5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNzI3NzQzNjg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5cIixcbiAgICBcIkNBTl9ERVZcIixcbiAgICBcIkNBTl9ORVRMSU5LXCIsXG4gICAgXCJDQU5fQ0FMQ19CSVRUSU1JTkdcIixcbiAgICBcIkNBTl9EVU1NWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhbl9jYWxjX2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2dldF9iaXR0aW1pbmdcIixcbiAgICBcImNhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgMzItYml0IHdyYXAgdG8gemVybyBkaXZpc2lvbiBlcnJvciBpbiBDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvbiBmb3IgbGFyZ2UgdXNlcnNwYWNlIGJpdHJhdGVzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIHdoZW4gY29uZmlndXJpbmcgQ0FOIGRldmljZXMuIEZ1enppbmcgdGhpcyBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgbWF0aCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgZWRnZSBjYXNlcyB3aXRob3V0IHJlZ3Jlc3Npb25zLiBUaGUgYENBTl9EVU1NWWAgdmlydHVhbCBkZXZpY2UgaXMgaW5jbHVkZWQgdG8gYWxsb3cgdGVzdGluZyB0aGlzIGhhcmR3YXJlLWluZGVwZW5kZW50IGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVmMWMxNDAyZTg3M2JlNGY4MTE5MzY4Y2M1Y2U2ZTZjOTk3MWJjMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM4OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jIGIvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jXG5pbmRleCA0MjQ5OGU5ZDNmMzhkLi4yNzg5Yjk5YWI2YTgzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcbkBAIC0xMTksOCArMTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxuIFx0ICAgICB0c2VnIFx1MDAzZT0gKGJ0Yy1cdTAwM2V0c2VnMV9taW4gKyBidGMtXHUwMDNldHNlZzJfbWluKSAqIDI7IHRzZWctLSkge1xuIFx0XHR0c2VnYWxsID0gQ0FOX1NZTkNfU0VHICsgdHNlZyAvIDI7XG4gXG4tXHRcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSt0c2VnMikgKi9cbi1cdFx0YnJwID0gcHJpdi1cdTAwM2VjbG9jay5mcmVxIC8gKHRzZWdhbGwgKiBidC1cdTAwM2ViaXRyYXRlKSArIHRzZWcgJSAyO1xuK1x0XHQvKiBDb21wdXRlIGFsbCBwb3NzaWJsZSB0c2VnIGNob2ljZXMgKHRzZWc9dHNlZzErdHNlZzIpLlxuK1x0XHQgKiBBIDMyIGJpdCB0c2VnYWxsICogYnQtXHUwMDNlYml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZVxuK1x0XHQgKiB1c2Vyc3BhY2UgYml0cmF0ZXMsIHNvIGNvbXB1dGUgdGhlIHByb2R1Y3QgaW4gNjQgYml0LlxuK1x0XHQgKi9cbitcdFx0YnJwID0gZGl2NjRfdTY0KHByaXYtXHUwMDNlY2xvY2suZnJlcSxcbitcdFx0XHRcdG11bF91MzJfdTMyKHRzZWdhbGwsIGJ0LVx1MDAzZWJpdHJhdGUpKSArIHRzZWcgJSAyO1xuIFxuIFx0XHQvKiBjaG9vc2UgYnJwIHN0ZXAgd2hpY2ggaXMgcG9zc2libGUgaW4gc3lzdGVtICovXG4gXHRcdGJycCA9IChicnAgLyBidGMtXHUwMDNlYnJwX2luYykgKiBidGMtXHUwMDNlYnJwX2luYztcbkBAIC0xMjgsNyArMTMyLDcgQEAgaW50IGNhbl9jYWxjX2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpdHJhdGUgPSBwcml2LVx1MDAzZWNsb2NrLmZyZXEgLyAoYnJwICogdHNlZ2FsbCk7XG4tXHRcdGJpdHJhdGVfZXJyb3IgPSBhYnMoYnQtXHUwMDNlYml0cmF0ZSAtIGJpdHJhdGUpO1xuK1x0XHRiaXRyYXRlX2Vycm9yID0gYWJzX2RpZmYoYnQtXHUwMDNlYml0cmF0ZSwgYml0cmF0ZSk7XG4gXG4gXHRcdC8qIHRzZWcgYnJwIGJpdGVycm9yICovXG4gXHRcdGlmIChiaXRyYXRlX2Vycm9yIFx1MDAzZSBiZXN0X2JpdHJhdGVfZXJyb3IpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODozMy42MDE2OTk3MjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg4MDQ3OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENBTiBCaXQgVGltaW5nIENhbGN1bGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIGBjYW5fY2FsY19iaXR0aW1pbmdgIGZ1bmN0aW9uLiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgbGlrZSB0aGUgZ29hbCBpcyB0byBpbXByb3ZlIHRoZSBoYW5kbGluZyBvZiBoaWdoIGJpdHJhdGVzLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcG90ZW50aWFsIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYGJycGAgYnkgc3dpdGNoaW5nIHRvIDY0LWJpdCBtYXRoLiBBbHNvLCB0aGVyZSdzIGEgY2hhbmdlIGZyb20gYSBkaXJlY3Qgc3VidHJhY3Rpb24gd2l0aCBgYWJzKClgIHRvIGBhYnNfZGlmZigpYC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZXkgbWFkZSB0aGF0IHNwZWNpZmljIGNoYW5nZS5cblxuUmlnaHQsIGBjYW5fY2FsY19iaXR0aW1pbmdgIGl0c2VsZiBpcyBjcml0aWNhbC4gSXQncyB0aGUgY29yZSBDQU4gc3Vic3lzdGVtIGZ1bmN0aW9uIHRoYXQgZmlndXJlcyBvdXQgdGhlIGJpdCB0aW1pbmcgcGFyYW1ldGVycywgd2hpY2ggaXMgaG93IHRoZSBDQU4gY29udHJvbGxlciBzeW5jaHJvbml6ZXMuIEkga25vdyBpdCdzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmsgd2hlbiBzb21lb25lIGNvbmZpZ3VyZXMgYSBDQU4gZGV2aWNlLiBTbywgdGhpcyBjaGFuZ2UgY291bGQgZGlyZWN0bHkgaW1wYWN0IGhvdyB1c2Vyc3BhY2UgdG9vbHMgaW50ZXJhY3Qgd2l0aCBDQU4gaGFyZHdhcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGlnaGVyIHNwZWVkcy4gVGhlIGltcGxpY2F0aW9ucyBvZiBnZXR0aW5nIHRoaXMgY2FsY3VsYXRpb24gd3JvbmcgYXJlIHByZXR0eSBzZXJpb3VzOyBjb21tdW5pY2F0aW9uIGZhaWx1cmVzIHdvdWxkIGJlIHRoZSBvYnZpb3VzIHN5bXB0b20uXG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgQ0FOIGFuZCBDQU5fREVWIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb250ZXh0IHRoZXJlLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgQ0FOIGZlYXR1cmVzIGFyZSBjb25maWd1cmVkLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIHBhdGNoLiBBbnkgYXJjaGl0ZWN0dXJhbCBkZXBlbmRlbmNpZXM/IEFueSBwb3RlbnRpYWwgY29uZmxpY3RzPyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODozOC41ODk3NTIxMzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzE3MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9jYWxjX2JpdHRpbWluZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jPTEzND1pbnQgY2FuX2dldF9iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9iaXR0aW1pbmcuYy0xNDUtXFx0aWYgKCFidC1cXHUwMDNldHEgXFx1MDAyNlxcdTAwMjYgYnQtXFx1MDAzZWJpdHJhdGUgXFx1MDAyNlxcdTAwMjYgYnRjKVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM6MTQ2OlxcdFxcdHJldHVybiBjYW5fY2FsY19iaXR0aW1pbmcoZGV2LCBidCwgYnRjLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmMtMTQ3LVxcdGlmIChidC1cXHUwMDNldHEgXFx1MDAyNlxcdTAwMjYgIWJ0LVxcdTAwM2ViaXRyYXRlIFxcdTAwMjZcXHUwMDI2IGJ0YylcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuYz01Mz1jYW5fdXBkYXRlX3NhbXBsZV9wb2ludChjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCAqYnRjLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jLTkyLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuYzo5MzppbnQgY2FuX2NhbGNfYml0dGltaW5nKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fYml0dGltaW5nICpidCxcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMtOTQtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0ICpidGMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6MzguNzM0MDc5MzYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg4MDQyNDc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgQ0FOX0RFVioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHN0YXJ0ZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGZvciBgQ0FOX0RFVmAuIEknbSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcywgaXRzIGRlZmF1bHQgc2V0dGluZywgYW5kIGFueSBjb25kaXRpb25hbCBidWlsZCBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyB0aGUgZmlyc3QsIG1vc3QgZnVuZGFtZW50YWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBDQU4gZGV2aWNlIHN1cHBvcnQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJhc2Ugc2V0dGluZ3MgYmVmb3JlIEkgZ28gZGl2aW5nIGRlZXBlciB0byBtb3JlIG51YW5jZWQgc2V0dGluZ3MuIEtub3dpbmcgaG93IGl0J3MgZGVmaW5lZCBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGZyYW1ld29yayBhbmQgaG93IGRpZmZlcmVudCBjb21wb25lbnRzIGludGVyYWN0LiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODo0NC42MTQ1MDc1MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MzIzMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fREVWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWctMi1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzozOm1lbnVjb25maWcgQ0FOX0RFVlxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkNBTiBEZXZpY2UgRHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NDQuNzc4ODQ0NjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjgyNDA3NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBDQU4gZHJpdmVyczpcblxuKipJbnZlc3RpZ2F0aW5nIERlcGVuZGVuY2llcyBpbiB0aGUgQ0FOIFN1YnN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBkZXBlbmRlbnQgb24gd2hhdCBpbiB0aGUgQ0FOIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnYC4gVGhpcyBmaWxlLCBhcyBJIHJlY2FsbCwgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHZhcmlvdXMgQ0FOIGRldmljZSBvcHRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcyBvciByZWNvbW1lbmRhdGlvbnMuIEl0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBob3cgdGhleSByZWxhdGUgdG8gZWFjaCBvdGhlciBpbiB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBmb3IgZW5zdXJpbmcgYW55IG1vZGlmaWNhdGlvbnMgSSBtYWtlIGFyZSBzb3VuZCBhbmQgZG9uJ3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGJ1aWxkIG9yIHJ1bnRpbWUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NTAuMDYxMjU1NTA1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnVjb25maWcgQ0FOX0RFVlxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkNBTiBEZXZpY2UgRHJpdmVyc1xcXCJcXG4gICA1OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBDQU5cXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgaXMgc2VyaWFsIGNvbW11bmljYXRpb25zIHByb3RvY29sIHVwIHRvXFxuICAgOTpcXHRcXHQgIDFNYml0L3MgZm9yIGl0cyBvcmlnaW5hbCByZWxlYXNlIChub3cga25vd24gYXMgQ2xhc3NpY2FsIENBTikgYW5kIHVwXFxuICAxMDpcXHRcXHQgIHRvIDhNYml0L3MgZm9yIHRoZSBtb3JlIHJlY2VudCBDQU4gd2l0aCBGbGV4aWJsZSBEYXRhLVJhdGVcXG4gIDExOlxcdFxcdCAgKENBTi1GRCkuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSwgYnV0IGlzIG5vd1xcbiAgMTI6XFx0XFx0ICB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcXG4gIDEzOlxcdFxcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcXG4gIDE0OlxcdFxcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcXHUwMDNjRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi5yc3RcXHUwMDNlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIENBTigtRkQpIGRldmljZSBkcml2ZXJzIGluY2x1ZGluZyB0aGVcXG4gIDE3OlxcdFxcdCAgdmlydHVhbCBvbmVzLiBJZiB5b3Ugb3duIHN1Y2ggZGV2aWNlcyBvciBwbGFuIHRvIHVzZSB0aGUgdmlydHVhbCBDQU5cXG4gIDE4OlxcdFxcdCAgaW50ZXJmYWNlcyB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucywgc2F5IFkgaGVyZS5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjUwLjA2MTM2MjI1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODA5OTI5NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIERlcGVuZGVuY3kgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBDQU5fREVWYCBvcHRpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciBpdCByZWxpZXMgb24gYENBTmAuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYENBTl9ERVZgIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBDQU4gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvY2FuL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBDQU4gYXJlIGRlZmluZWQuIEl0J3MgdGhlIHBsYWNlIHdoZXJlIEknbGwgZmluZCB0aGUgbG9naWMgdGhhdCBnb3Zlcm5zIHRoZSBidWlsZCBhbmQgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBMZXQgbWUgcHVsbCB0aGF0IHVwIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kIGFib3V0IHRoZSBgQ0FOYCBvcHRpb24ncyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVmYXVsdHMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgaW4gaW50ZXJwcmV0aW5nIHRoZSBvdmVyYWxsIHNldHVwLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgb3IgYSBtZW51IHN0cnVjdHVyZSB0aGF0IG1ha2VzIGl0IGNyeXN0YWwgY2xlYXIgaG93IGBDQU5gIGluZmx1ZW5jZXMgYENBTl9ERVZgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDMyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODo1My4wNDIzNTgxNjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzIxNDcyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0FOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jYW4vS2NvbmZpZy01LVxcbm5ldC9jYW4vS2NvbmZpZzo2Om1lbnVjb25maWcgQ0FOXFxubmV0L2Nhbi9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkNBTiBidXMgc3Vic3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvY2FuL0tjb25maWc9MjI9aWYgQ0FOXFxubmV0L2Nhbi9LY29uZmlnLTIzLVxcbm5ldC9jYW4vS2NvbmZpZzoyNDpjb25maWcgQ0FOX1JBV1xcbm5ldC9jYW4vS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZSBcXFwiUmF3IENBTiBQcm90b2NvbCAocmF3IGFjY2VzcyB3aXRoIENBTi1JRCBmaWx0ZXJpbmcpXFxcIlxcbi0tXFxubmV0L2Nhbi9LY29uZmlnLTMzLVxcbm5ldC9jYW4vS2NvbmZpZzozNDpjb25maWcgQ0FOX0JDTVxcbm5ldC9jYW4vS2NvbmZpZy0zNS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjYXN0IE1hbmFnZXIgQ0FOIFByb3RvY29sICh3aXRoIGNvbnRlbnQgZmlsdGVyaW5nKVxcXCJcXG4tLVxcbm5ldC9jYW4vS2NvbmZpZy00NS1cXG5uZXQvY2FuL0tjb25maWc6NDY6Y29uZmlnIENBTl9HV1xcbm5ldC9jYW4vS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiQ0FOIEdhdGV3YXkvUm91dGVyICh3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbilcXFwiXFxuLS1cXG5uZXQvY2FuL0tjb25maWc9NTc9c291cmNlIFxcXCJuZXQvY2FuL2oxOTM5L0tjb25maWdcXFwiXFxubmV0L2Nhbi9LY29uZmlnLTU4LVxcbm5ldC9jYW4vS2NvbmZpZzo1OTpjb25maWcgQ0FOX0lTT1RQXFxubmV0L2Nhbi9LY29uZmlnLTYwLVxcdHRyaXN0YXRlIFxcXCJJU08gMTU3NjUtMiBDQU4gdHJhbnNwb3J0IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2Nhbi9qMTkzOS9LY29uZmlnLTUtXFxubmV0L2Nhbi9qMTkzOS9LY29uZmlnOjY6Y29uZmlnIENBTl9KMTkzOVxcbm5ldC9jYW4vajE5MzkvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJTQUUgSjE5MzlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjUzLjIzOTU3OTkzNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA0OTcyNTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0YWNrbGluZyB0aGlzIHBhcnRpY3VsYXIgdGFzazpcblxuKipFeGFtaW5pbmcgQ0FOIERlcGVuZGVuY2llcyBpbiBLY29uZmlnKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBDb250cm9sbGVyIEFyZWEgTmV0d29yaywgb3IgQ0FOLiBNeSBpbnN0aW5jdCwgYW5kIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhhdCB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBnby10byBwbGFjZSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIENBTiBmdW5jdGlvbmFsaXR5LiBJdCdzIHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGxpa2VseSBkZWZpbmVkIOKAkyB0aGUgb3RoZXIgZmVhdHVyZXMgb3IgY29tcG9uZW50cyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgQ0FOIHN1cHBvcnQgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIEJvb2xlYW4gb3B0aW9ucyBmb3IgZW5hYmxpbmcgdmFyaW91cyBhc3BlY3RzIG9mIENBTi4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSByZWFkIHRocm91Z2ggaXQgYW5kIGlkZW50aWZ5IHdoaWNoIG9wdGlvbnMgcmVxdWlyZSB3aGF0LCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIENBTiBzeXN0ZW0uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjgxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NTYuNjQ0NTU1MzM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgbmV0d29yayBsYXllciBjb3JlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBDQU5cXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJDQU4gYnVzIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIGlzIGEgc2xvdyAodXAgdG8gMU1iaXQvcykgc2VyaWFsXFxuICAxMTpcXHRcXHQgIGNvbW11bmljYXRpb25zIHByb3RvY29sLiBEZXZlbG9wbWVudCBvZiB0aGUgQ0FOIGJ1cyBzdGFydGVkIGluXFxuICAxMjpcXHRcXHQgIDE5ODMgYXQgUm9iZXJ0IEJvc2NoIEdtYkgsIGFuZCB0aGUgcHJvdG9jb2wgd2FzIG9mZmljaWFsbHlcXG4gIDEzOlxcdFxcdCAgcmVsZWFzZWQgaW4gMTk4Ni4gVGhlIENBTiBidXMgd2FzIG9yaWdpbmFsbHkgbWFpbmx5IGZvciBhdXRvbW90aXZlLFxcbiAgMTQ6XFx0XFx0ICBidXQgaXMgbm93IHdpZGVseSB1c2VkIGluIG1hcmluZSAoTk1FQTIwMDApLCBpbmR1c3RyaWFsLCBhbmQgbWVkaWNhbFxcbiAgMTU6XFx0XFx0ICBhcHBsaWNhdGlvbnMuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIENBTiBuZXR3b3JrIHByb3RvY29sIGZhbWlseVxcbiAgMTY6XFx0XFx0ICBQRl9DQU4gaXMgY29udGFpbmVkIGluIFxcdTAwM2NEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnJzdFxcdTAwM2UuXFxuICAxNzpcXHRcXG4gIDE4OlxcdFxcdCAgSWYgeW91IHdhbnQgQ0FOIHN1cHBvcnQgeW91IHNob3VsZCBzYXkgWSBoZXJlIGFuZCBhbHNvIHRvIHRoZVxcbiAgMTk6XFx0XFx0ICBzcGVjaWZpYyBkcml2ZXIgZm9yIHlvdXIgY29udHJvbGxlcihzKSB1bmRlciB0aGUgTmV0d29yayBkZXZpY2VcXG4gIDIwOlxcdFxcdCAgc3VwcG9ydCBzZWN0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODo1Ni42NDQ2OTI5MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwMzUxODQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIENBTiBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIENBTiBjb25maWd1cmF0aW9ucywgYW5kIGl0IHNlZW1zIGxpa2UgYENBTmAgYW5kIGBDQU5fREVWYCBhcmUgdGhlIGtleSBwbGF5ZXJzLiBCdXQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIHNldHVwLCBJJ20gZ29pbmcgdG8gbmVlZCBhIHZpcnR1YWwgQ0FOIGRldmljZSwgc29tZXRoaW5nIGxpa2UgYENBTl9WQ0FOYCBvciBgQ0FOX1ZYQ0FOYC4gSXQgd291bGQgYmUgaWRlYWwgZm9yIGEgcXVpY2sgdGVzdC4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGFuZCBzZWUgd2hhdCB2aXJ0dWFsIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyB0aGV5J3JlIGltcGxlbWVudGVkLiBMZXQncyBzZWUgd2hhdCB0aGUga2VybmVsIGhhcyB0byBvZmZlciBpbiB0aGlzIGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjU5LjY0ODIxNTU4OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjA3OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fVkNBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTIzPWlmIENBTl9ERVZcXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzoyNTpjb25maWcgQ0FOX1ZDQU5cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBMb2NhbCBDQU4gSW50ZXJmYWNlICh2Y2FuKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NTkuNzU3ODMwMjExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTAxMTA4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIGBDQU5fVkNBTmAgZmVhdHVyZSB1c2VzIHRoZSBgY2FuX2NhbGNfYml0dGltaW5nYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCBJIGtub3cgaG93IHRvIHRyYWNrIHRoaXMgZG93biBlZmZpY2llbnRseS5cblxuRmlyc3QsIEknbGwgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyBjYWxsZWQgYnkgYGNhbl9nZXRfYml0dGltaW5nYC4gT2theSwgdGhhdCdzIHN0ZXAgb25lLiBOb3csIHdoZXJlIGlzIGBjYW5fZ2V0X2JpdHRpbWluZ2AgdXNlZD8gQWgsIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYGNhbl9jaGFuZ2VsaW5rYC4gVGhhdCdzIGluIGBkcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIGl0J3MgdGhlIG5ldHdvcmstbGV2ZWwgY29uZmlndXJhdGlvbi5cblxuU28gdGhlIGNhbGwgc3RhY2sgaXM6IGBjYW5fY2FsY19iaXR0aW1pbmdgIC1cdTAwM2UgYGNhbl9nZXRfYml0dGltaW5nYCAtXHUwMDNlIGBjYW5fY2hhbmdlbGlua2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOTowMy40Njc5NDQwOTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzQyOTcyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYW5fZ2V0X2JpdHRpbWluZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jPTExNj1jYW5fdmFsaWRhdGVfYml0cmF0ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTEzMy1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jOjEzNDppbnQgY2FuX2dldF9iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmMtMTM1LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0ICpidGMsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz00MzY9c3RhdGljIGludCBjYW5fZGJ0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNDc0LVxcdG1lbWNweShcXHUwMDI2ZGJ0LCBubGFfZGF0YShkYXRhX2JpdHRpbWluZyksIHNpemVvZihkYnQpKTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzo0NzU6XFx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2ZGJ0LCBkYnRfcGFyYW1zLVxcdTAwM2VkYXRhX2JpdHRpbWluZ19jb25zdCxcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy00NzYtXFx0XFx0XFx0XFx0ZGJ0X3BhcmFtcy1cXHUwMDNlZGF0YV9iaXRyYXRlX2NvbnN0LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgY2FuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTYyNC1cXHRcXHRtZW1jcHkoXFx1MDAyNmJ0LCBubGFfZGF0YShkYXRhW0lGTEFfQ0FOX0JJVFRJTUlOR10pLCBzaXplb2YoYnQpKTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzo2MjU6XFx0XFx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2YnQsXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNjI2LVxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWJpdHRpbWluZ19jb25zdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MDMuNzExMzc5NDMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzcwMTA4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBgY2FuX2NoYW5nZWxpbmtgIGFuZCBgdmNhbmAgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgY2FuX2NoYW5nZWxpbmtgLiBJIGtub3cgdGhhdCdzIGEgY3J1Y2lhbCBwYXJ0IG9mIG5ldGxpbmssIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgYHZjYW5gLCB0aGUgdmlydHVhbCBDQU4gaW50ZXJmYWNlLCBhY3R1YWxseSBpbXBsZW1lbnRzIGl0LiBJdCdzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMgb2YgdGhlIHZpcnR1YWwgaW50ZXJmYWNlLiBUaGUgYmVzdCB3YXkgdG8gY2hlY2sgdGhpcyBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9jYW4vdmNhbi5jYC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgcmV2ZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjkxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MDcuMjQ4Mzk0MDk3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0NjI1OTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9jaGFuZ2VsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjA3LjM1ODg2NzcyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjI4NTg2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipWY2FuIEltcGxlbWVudGF0aW9uIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHZpcnR1YWwgQ0FOIGludGVyZmFjZSwgYHZjYW5gLCBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd291bGQgbG9naWNhbGx5IHJlc2lkZS4gVGhlIHBsYWNlIHRvIHN0YXJ0IGRpdmluZyBkZWVwZXIgaXMgZGVmaW5pdGVseSB3aXRoIHRoZSBgcnRubF9saW5rX29wc2Agc3RydWN0dXJlLiBUaGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50IGZvciBhIHZpcnR1YWwgZGV2aWNlLCBhcyBpdCBkZWZpbmVzIHRoZSBuZXRsaW5rIG9wZXJhdGlvbnMgYSBkcml2ZXIgcHJvdmlkZXMgdG8gY29uZmlndXJlIGFuZCBjb250cm9sIHRoZSBsaW5rLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBob3cgYHZjYW5gIHBvcHVsYXRlcyBhbmQgdXRpbGl6ZXMgdGhpcyBzdHJ1Y3R1cmUgdG8gZnVsbHkgZ3Jhc3AgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgbmV0d29ya2luZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxMC4yMjE3MzE2OThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDAzMzkwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydG5sX2xpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0xODktXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTE5MS1cXHQua2luZCA9IERSVl9OQU1FLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxMC4zNDE3NzE0NTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MDc3NjUxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRGl2aW5nIGludG8gYHZjYW5fbGlua19vcHNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHNpbXBsZTogdGltZSB0byBkaXNzZWN0IGB2Y2FuX2xpbmtfb3BzYC4gTm8gcHJlYW1ibGUsIGp1c3Qgc3RyYWlnaHQgdG8gdGhlIHBvaW50LiBJJ20gYXNzdW1pbmcsIGdpdmVuIG15IGxldmVsIG9mIGV4cGVydGlzZSwgdGhhdCBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBicm9hZGVyIENBTiBuZXR3b3JraW5nIGFyY2hpdGVjdHVyZSBhbmQgdGhlIHB1cnBvc2Ugb2YgdGhlc2Ugb3BlcmF0aW9ucy4gVGhpcyBzdWdnZXN0cyBhbiBpbnZlc3RpZ2F0aW9uLCBlaXRoZXIgdG8gdW5kZXJzdGFuZCBpdHMgb3BlcmF0aW9uLCBkZWJ1ZyBpdCBvciB0byBtb2RpZnkgaXQuIEknbSBnb2luZyBpbiB3aXRoIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIHJlYWR5IHRvIGdldCB0byB0aGUgY29yZSBtZWNoYW5pY3MuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgaW50cm9kdWN0b3J5IGV4cGxhbmF0aW9ucyBoZXJlLCBqdXN0IHRoZSBjb2RlLiBJJ20gcHJlcGFyZWQgdG8gZm9sbG93IGZ1bmN0aW9uIGNhbGxzLCBleHBsb3JlIGRhdGEgc3RydWN0dXJlcywgYW5kIHVucmF2ZWwgYW55IGNvbXBsZXhpdGllcyB0aGUgaW1wbGVtZW50YXRpb24gbWlnaHQgaG9sZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjE0LjAwMjU1Njk3OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL3ZjYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0XFxuIDE4MTpcXHRcXHQvKiBzZXQgZmxhZ3MgYWNjb3JkaW5nIHRvIGRyaXZlciBjYXBhYmlsaXRpZXMgKi9cXG4gMTgyOlxcdFxcdGlmIChlY2hvKVxcbiAxODM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VmbGFncyB8PSBJRkZfRUNITztcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzXFx0XFx0PSBcXHUwMDI2dmNhbl9uZXRkZXZfb3BzO1xcbiAxODY6XFx0XFx0ZGV2LVxcdTAwM2VldGh0b29sX29wc1xcdD0gXFx1MDAyNnZjYW5fZXRodG9vbF9vcHM7XFxuIDE4NzpcXHRcXHRkZXYtXFx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2XFx0PSB0cnVlO1xcbiAxODg6XFx0fVxcbiAxODk6XFx0XFxuIDE5MDpcXHRzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdmNhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbiAxOTE6XFx0XFx0LmtpbmQgPSBEUlZfTkFNRSxcXG4gMTkyOlxcdFxcdC5wcml2X3NpemUgPSBzaXplb2Yoc3RydWN0IGNhbl9tbF9wcml2KSxcXG4gMTkzOlxcdFxcdC5zZXR1cCA9IHZjYW5fc2V0dXAsXFxuIDE5NDpcXHR9O1xcbiAxOTU6XFx0XFxuIDE5NjpcXHRzdGF0aWMgX19pbml0IGludCB2Y2FuX2luaXRfbW9kdWxlKHZvaWQpXFxuIDE5NzpcXHR7XFxuIDE5ODpcXHRcXHRwcl9pbmZvKFxcXCJWaXJ0dWFsIENBTiBpbnRlcmZhY2UgZHJpdmVyXFxcXG5cXFwiKTtcXG4gMTk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxNC4wMDMwNDQ1MzlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4NDMwMTA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgY2FuX2NoYW5nZWxpbmtgIGFuZCBgdmNhbmAqKlxuXG5IbW0sIGl0IHNlZW1zIGxpa2UgYHZjYW5gLCB3aGljaCBJJ20gcHJldHR5IGZhbWlsaWFyIHdpdGgsIGRvZXNuJ3QgYWN0dWFsbHkgbGV2ZXJhZ2UgdGhlIGBjYW5fY2hhbmdlbGlua2AgZnVuY3Rpb25hbGl0eS4gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHNvbWUgY29kZSBhbmQgbm90aWNlZCBpdHMgYWJzZW5jZSwgYW5kIGl0IHBpcXVlZCBteSBjdXJpb3NpdHkuXG5cbkxldCBtZSBzZWUuLi4gcmlnaHQsICpvZiBjb3Vyc2UqLiBJIHNlZW0gdG8gcmVjYWxsIG5vdyB0aGF0IGBjYW5fY2hhbmdlbGlua2AgaXMgZGVmaW5lZCBhbmQgcmVnaXN0ZXJlZCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuY2AuIFRoYXQgZmlsZSBtYWtlcyB0aGUgbGluazsgaXQncyB0aGUgY29yZSBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UgZm9yIENBTiBkZXZpY2VzLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBwYXJ0aWFsbHkgY29ycmVjdCAtIGl0J3MgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIC0gaXQncyBqdXN0IG5vdCB1dGlsaXplZCB3aGVyZSBJIHRob3VnaHQgaXQgd291bGQgYmUuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGB2Y2FuYCBhY3R1YWxseSBoYW5kbGVzIGxpbmsgY2hhbmdlcyBhbmQgaWYgaXQgZG9lcyBzbyB0aHJvdWdoIGFub3RoZXIgbWVjaGFuaXNtLiBQZXJoYXBzIHRoZXJlJ3MgYW4gaW50ZXJuYWwgYXBwcm9hY2gsIG9yIGl0IHVzZXMgYSByZWxhdGVkIG5ldGxpbmsgZnVuY3Rpb24gdG8gYWNoaWV2ZSB0aGUgc2FtZSByZXN1bHQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGB2Y2FuYCBkcml2ZXIgaXRzZWxmIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjE3Ljk4NzM0OTk4NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2MzY3MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9jaGFuZ2VsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9kZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTUyND1zdGF0aWMgaW50IGNhbl9wd21fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNTkzLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjU5NDpzdGF0aWMgaW50IGNhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNTk1LVxcdFxcdFxcdCAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTA5MD1zdHJ1Y3QgcnRubF9saW5rX29wcyBjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTEwOTctXFx0Lm5ld2xpbmtcXHQ9IGNhbl9uZXdsaW5rLFxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjEwOTg6XFx0LmNoYW5nZWxpbmtcXHQ9IGNhbl9jaGFuZ2VsaW5rLFxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTEwOTktXFx0LmRlbGxpbmtcXHQ9IGNhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxOC4xMzM3MjU5OTdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzNDM4NTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgZm9yIEV4cG9ydGVkIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBgY2FuX2xpbmtfb3BzYC4uLiBJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IGlmIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBvYmplY3QgaXMgYWN0dWFsbHkgZXhwb3NlZCBmb3IgdXNlIG91dHNpZGUgb2YgaXRzIGltbWVkaWF0ZSBzY29wZS4gSXMgaXQgc29tZXRoaW5nIEkgY2FuIGRpcmVjdGx5IGNhbGwgb3IgYWNjZXNzIGZyb20gZWxzZXdoZXJlLCBvciBpcyBpdCBoaWRkZW4sIHByaXZhdGUsIG9yIG9ubHkgbWVhbnQgZm9yIGludGVybmFsIHVzZSB3aXRoaW4gYSBtb2R1bGU/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGxldmVyYWdlIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBpbiBteSBjdXJyZW50IHRhc2suIFRpbWUgdG8gdmVyaWZ5IGl0cyBleHBvcnQgc3RhdHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTYwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MjAuOTY4MTE5Njk4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzE5ODQwMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FuX2xpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz02MTE9aW50IHJlZ2lzdGVyX2NhbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NDQtXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NDU6XFx0ZGV2LVxcdTAwM2VydG5sX2xpbmtfb3BzID0gXFx1MDAyNmNhbl9saW5rX29wcztcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0Ni1cXHRuZXRpZl9jYXJyaWVyX29mZihkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz02NjI9c3RydWN0IGNhbl9wcml2ICpzYWZlX2NhbmRldl9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NjMte1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjY0OlxcdGlmIChkZXYtXFx1MDAzZXR5cGUgIT0gQVJQSFJEX0NBTiB8fCBkZXYtXFx1MDAzZXJ0bmxfbGlua19vcHMgIT0gXFx1MDAyNmNhbl9saW5rX29wcylcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY2NS1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTEwODY9c3RhdGljIHZvaWQgY2FuX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTEwODktXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6MTA5MDpzdHJ1Y3QgcnRubF9saW5rX29wcyBjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDkxLVxcdC5raW5kXFx0XFx0PSBcXFwiY2FuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTExMDY9aW50IGNhbl9uZXRsaW5rX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtMTEwNy17XFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6MTEwODpcXHRyZXR1cm4gcnRubF9saW5rX3JlZ2lzdGVyKFxcdTAwMjZjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMDktfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTExMT12b2lkIGNhbl9uZXRsaW5rX3VucmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMTEyLXtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzoxMTEzOlxcdHJ0bmxfbGlua191bnJlZ2lzdGVyKFxcdTAwMjZjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0xODktXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTE5MS1cXHQua2luZCA9IERSVl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xOTY9c3RhdGljIF9faW5pdCBpbnQgdmNhbl9pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0yMDItXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoyMDM6XFx0cmV0dXJuIHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2dmNhbl9saW5rX29wcyk7XFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0yMDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0yMDY9c3RhdGljIF9fZXhpdCB2b2lkIHZjYW5fY2xlYW51cF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTIwNy17XFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoyMDg6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNnZjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMjA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTE4MT1zdGF0aWMgdm9pZCB2eGNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAwLS8qIGZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHJ0bmxfY3JlYXRlX2xpbmsoKSAqL1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjIwMTpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHM7XFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTIwMz1zdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIzNi1cXHRwZWVyID0gcnRubF9jcmVhdGVfbGluayhwZWVyX25ldCwgaWZuYW1lLCBuYW1lX2Fzc2lnbl90eXBlLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjIzNzpcXHRcXHRcXHRcXHRcXHUwMDI2dnhjYW5fbGlua19vcHMsIHRicCwgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMzgtXFx0aWYgKElTX0VSUihwZWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTMwOD1zdGF0aWMgc3RydWN0IG5ldCAqdnhjYW5fZ2V0X2xpbmtfbmV0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMTUtXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MzE2OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMTctXFx0LmtpbmRcXHRcXHQ9IERSVl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzI4PXN0YXRpYyBfX2luaXQgaW50IHZ4Y2FuX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzMS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMzI6XFx0cmV0dXJuIHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2dnhjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzMy19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0zMzU9c3RhdGljIF9fZXhpdCB2b2lkIHZ4Y2FuX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMzYte1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMzNzpcXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2dnhjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzOC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjIxLjI0MDExMTQ5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTc2Mzk5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZTpcblxuKipDQU4gRGV2aWNlIFJlZ2lzdHJhdGlvbiBhbmQgT3BlcmF0aW9uIFRob3VnaHRzKipcblxuQWxyaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgYGNhbl9saW5rX29wc2Agc3RydWN0dXJlIGlzIHRoZSBrZXkgdG8gb3BlcmF0aW9ucyBvbiBDQU4gZGV2aWNlcywgYW5kIHNwZWNpZmljYWxseSwgaXQncyB1c2VkIHdpdGggZGV2aWNlcyB0aGF0IGFyZSBicm91Z2h0IGludG8gdGhlIHN5c3RlbSB2aWEgYHJlZ2lzdGVyX2NhbmRldmAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gQnV0IGhlcmUncyB0aGUga2lja2VyOiB2aXJ0dWFsIENBTiBkZXZpY2VzLCBsaWtlIGB2Y2FuYCBhbmQgYHZ4Y2FuYCwgdGhleSBvcGVyYXRlIGEgYml0IGRpZmZlcmVudGx5LiBUaGV5IGhhdmUgdGhlaXIgb3duIGBydG5sX2xpbmtfb3BzYCBzdHJ1Y3R1cmVzLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHNwcmluZ3MgdG8gbWluZCBpcywgZG8gYHZjYW5gIG9yIGB2eGNhbmAgKmFjdHVhbGx5KiB1c2UgYHJlZ2lzdGVyX2NhbmRldmA/IE9yIGRvIHRoZXkgaGF2ZSB0aGVpciBvd24gaW5kZXBlbmRlbnQgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIHRvIHNlZSB3aGF0IHRoZXkgdXNlLiBJdCdzIGEga2V5IGRpc3RpbmN0aW9uIGJlY2F1c2UgaXQgZGljdGF0ZXMgaG93IHRoZXNlIHZpcnR1YWwgaW50ZXJmYWNlcyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhlIGJyb2FkZXIgQ0FOIHN1YnN5c3RlbSwgYW5kIHdoZXRoZXIgdGhleSBmdWxseSBhbGlnbiB3aXRoIHRoZSBzdGFuZGFyZCBwaHlzaWNhbCBkZXZpY2UgcmVnaXN0cmF0aW9uIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUyOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjI0Ljg1Nzc1NTc4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0OTgwNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlZ2lzdGVyX2NhbmRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4uYz0xMDQ2PXN0YXRpYyBpbnQgYXQ5MV9jYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jLTExMzYtXFxuZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmM6MTEzNzpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4uYy0xMTM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jPTkyOT1zdGF0aWMgaW50IGJ4Y2FuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDE2LVxcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jOjEwMTc6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jLTEwMTgtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM9MTAzND1zdGF0aWMgdm9pZCBieGNhbl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jLTEwMzgtXFxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM6MTAzOTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDQwLVxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVxcdTAwM2VjbGspO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYz0xMzY3PWludCByZWdpc3Rlcl9jX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM3OS1cXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jOjEzODA6XFx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM4MS19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jPTEzODQ9dm9pZCB1bnJlZ2lzdGVyX2NfY2FuX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM4NS17XFxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYzoxMzg2OlxcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYy0xMzg3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYz0xMDA2PXN0YXRpYyBpbnQgY2FuMzI3X2xkaXNjX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDQyLVxcdC8qIExldCAnZXIgcmlwICovXFxuZHJpdmVycy9uZXQvY2FuL2NhbjMyNy5jOjEwNDM6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KGVsbS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmMtMTA0NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmM9MTA2MT1zdGF0aWMgdm9pZCBjYW4zMjdfbGRpc2NfY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDY1LVxcdC8qIHVucmVnaXN0ZXJfbmV0ZGV2KCkgY2FsbHMgLm5kb19zdG9wKCkgc28gd2UgZG9uJ3QgaGF2ZSB0by4gKi9cXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmM6MTA2NjpcXHR1bnJlZ2lzdGVyX2NhbmRldihlbG0tXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NhbjMyNy5jLTEwNjctXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYz04NDM9aW50IHJlZ2lzdGVyX2NjNzcwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYy04NjktXFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM6ODcwOlxcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYy04NzEtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM9ODc0PXZvaWQgdW5yZWdpc3Rlcl9jYzc3MGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODc2LVxcdHNldF9yZXNldF9tb2RlKGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM6ODc3OlxcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODc4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmM9MTM0Nj1pbnQgY3R1Y2FuX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkciwgaW50IGlycSwgdW5zaWduZWQgaW50IG50eGJ1ZnMsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTE0MzQtXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYzoxNDM1OlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTE0MzYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jPTIxNz1zdGF0aWMgdm9pZCBjdHVjYW5fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYy0yMzktXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI0MDpcXHRcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmM9ODk9c3RhdGljIHZvaWQgY3R1Y2FuX3BsYXRmb3JtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTUtXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmM6OTY6XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTctXFx0cG1fcnVudGltZV9kaXNhYmxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz01OTk9Y2FuX2JpdHRpbWluZ19jb25zdF92YWxpZChjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCAqYnRjKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02MTAtLyogUmVnaXN0ZXIgdGhlIENBTiBuZXR3b3JrIGRldmljZSAqL1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjExOmludCByZWdpc3Rlcl9jYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTYxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0OS19XFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NTA6RVhQT1JUX1NZTUJPTF9HUEwocmVnaXN0ZXJfY2FuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1MS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1Mi0vKiBVbnJlZ2lzdGVyIHRoZSBDQU4gbmV0d29yayBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjY1Mzp2b2lkIHVucmVnaXN0ZXJfY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTYtfVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjU3OkVYUE9SVF9TWU1CT0xfR1BMKHVucmVnaXN0ZXJfY2FuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYz0yMzI9c3RhdGljIGludCBfX2luaXQgZHVtbXlfY2FuX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNTktXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI2MDpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjYxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYz0yNzI9c3RhdGljIHZvaWQgX19leGl0IGR1bW15X2Nhbl9leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjc2LVxcdG5ldGRldl9kYmcoZGV2LCBcXFwiZHVtbXktY2FuIGJ5ZSBieWVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNzc6XFx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjc4LVxcdGZyZWVfY2FuZGV2KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYz0zMjc9c3RhdGljIHZvaWQgcGNpNDAyX3VucmVnaXN0ZXJfY29yZShzdHJ1Y3QgYWNjX2NvcmUgKmNvcmUpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy0zMjktXFx0bmV0ZGV2X2luZm8oY29yZS1cXHUwMDNlbmV0ZGV2LCBcXFwidW5yZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM6MzMwOlxcdHVucmVnaXN0ZXJfY2FuZGV2KGNvcmUtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmMtMzMxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM9MzM2PXN0YXRpYyBpbnQgcGNpNDAyX2luaXRfY29yZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy0zODktXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM6MzkwOlxcdFxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTM5MS1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYz0xODcyPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmxleGNhbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmMtMTkxOS1cXG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYzoxOTIwOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jLTE5MjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jPTE5Mzk9c3RhdGljIHZvaWQgdW5yZWdpc3Rlcl9mbGV4Y2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmMtMTk0MC17XFxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM6MTk0MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jLTE5NDItfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM9MTU2OT1zdGF0aWMgaW50IGdyY2FuX3NldHVwX25ldGRldihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE2MjQtXFxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM6MTYyNTpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNjI2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYz0xNjk5PXN0YXRpYyB2b2lkIGdyY2FuX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE3MDMtXFxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM6MTcwNDpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpOyAvKiBXaWxsIGluIHR1cm4gY2FsbCBncmNhbl9jbG9zZSAqL1xcbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE3MDUtXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jPTk1Mz1zdGF0aWMgaW50IGlmaV9jYW5mZF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMTktXFxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYzoxMDIwOlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMjEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYz0xMDM2PXN0YXRpYyB2b2lkIGlmaV9jYW5mZF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYy0xMDM5LVxcbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmM6MTA0MDpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwNDEtXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jPTE4ODk9c3RhdGljIGludCBpY2FuM19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYy0yMDAxLVxcdC8qIHJlZ2lzdGVyIHdpdGggdGhlIExpbnV4IENBTiBsYXllciAqL1xcbmRyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmM6MjAwMjpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYy0yMDAzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jPTEwMjc9c3RhdGljIGludCBrdmFzZXJfcGNpZWZkX3JlZ19jYW5kZXYoc3RydWN0IGt2YXNlcl9wY2llZmQgKnBjaWUpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYy0xMDMxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwY2llLVxcdTAwM2Vucl9jaGFubmVsczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6MTAzMjpcXHRcXHRpbnQgcmV0ID0gcmVnaXN0ZXJfY2FuZGV2KHBjaWUtXFx1MDAzZWNhbltpXS1cXHUwMDNlY2FuLmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtMTAzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwMzgtXFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGk7IGorKylcXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYzoxMDM5OlxcdFxcdFxcdFxcdHVucmVnaXN0ZXJfY2FuZGV2KHBjaWUtXFx1MDAzZWNhbltqXS1cXHUwMDNlY2FuLmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtMTA0MC1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM9MTg3Mz1zdGF0aWMgdm9pZCBrdmFzZXJfcGNpZWZkX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTE4ODAtXFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6MTg4MTpcXHRcXHR1bnJlZ2lzdGVyX2NhbmRldihjYW4tXFx1MDAzZWNhbi5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTE4ODItXFx0XFx0dGltZXJfZGVsZXRlKFxcdTAwMjZjYW4tXFx1MDAzZWJlY19wb2xsX3RpbWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jPTIzMjk9c3RhdGljIGludCByZWdpc3Rlcl9tX2Nhbl9kZXYoc3RydWN0IG1fY2FuX2NsYXNzZGV2ICpjZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMtMjMzOS1cXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYzoyMzQwOlxcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYy0yMzQxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jPTI1ODk9dm9pZCBtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldilcXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYy0yNTkwLXtcXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYzoyNTkxOlxcdHVucmVnaXN0ZXJfY2FuZGV2KGNkZXYtXFx1MDAzZW5ldCk7XFxuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMtMjU5Mi1cXHRpZiAoY2Rldi1cXHUwMDNlaXNfcGVyaXBoZXJhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jPTYxNj1pbnQgcmVnaXN0ZXJfbXNjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1zY2FuX2Nsa3NyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY1MS1cXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYzo2NTI6XFx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY1My19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYz02NTU9dm9pZCB1bnJlZ2lzdGVyX21zY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NjAtXFx0Y2xyYml0czgoXFx1MDAyNnJlZ3MtXFx1MDAzZWNhbmN0bDEsIE1TQ0FOX0NBTkUpO1xcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jOjY2MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM9NTczPXN0YXRpYyBpbnQgcGNpZWZkX2Nhbl9wcm9iZShzdHJ1Y3QgcGNpZWZkX2JvYXJkICpwY2llZmQpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmMtNjY4LVxcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYzo2Njk6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02NzAtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jPTY5ND1zdGF0aWMgdm9pZCBwY2llZmRfY2FuX3JlbW92ZShzdHJ1Y3QgcGNpZWZkX2NhbiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02OTYtXFx0LyogdW5yZWdpc3RlciAoY2xvc2UpIHRoZSBjYW4gZGV2aWNlIHRvIGdvIGJhY2sgdG8gUlNUIG1vZGUgZmlyc3QgKi9cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM6Njk3OlxcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXFx1MDAzZXVjYW4ubmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jLTY5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM9NzQ3PXN0YXRpYyBpbnQgcmNhcl9jYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODExLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM6ODEyOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2Nhbi5jLTgxMy1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYzo4MTQ6XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJyZWdpc3Rlcl9jYW5kZXYoKSBmYWlsZWQgJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODE1LVxcdFxcdGdvdG8gZmFpbF9ycG07XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2Nhbi5jPTgzMD1zdGF0aWMgdm9pZCByY2FyX2Nhbl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM0LVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM6ODM1OlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM2LVxcdHBtX3J1bnRpbWVfZGlzYWJsZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYz0xODYzPXN0YXRpYyBpbnQgcmNhcl9jYW5mZF9jaGFubmVsX3Byb2JlKHN0cnVjdCByY2FyX2NhbmZkX2dsb2JhbCAqZ3ByaXYsIHUzMiBjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTcyLVxcdGdwcml2LVxcdTAwM2VjaFtwcml2LVxcdTAwM2VjaGFubmVsXSA9IHByaXY7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jOjE5NzM6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTc0LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM6MTk3NTpcXHRcXHRkZXZfZXJyKGRldiwgXFxcInJlZ2lzdGVyX2NhbmRldigpIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTc2LVxcdFxcdGdvdG8gZmFpbF9jYW5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM9MTk4OD1zdGF0aWMgdm9pZCByY2FyX2NhbmZkX2NoYW5uZWxfcmVtb3ZlKHN0cnVjdCByY2FyX2NhbmZkX2dsb2JhbCAqZ3ByaXYsIHUzMiBjaClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTkyLVxcdGlmIChwcml2KSB7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jOjE5OTM6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5OTQtXFx0XFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYz04MDM9c3RhdGljIGludCBya2NhbmZkX3JlZ2lzdGVyKHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgxNS1cXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jOjgxNjpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYy04MTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM9ODM0PXN0YXRpYyBpbmxpbmUgdm9pZCBya2NhbmZkX3VucmVnaXN0ZXIoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMtODM3LVxcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM6ODM4OlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMtODM5LVxcdHBtX3J1bnRpbWVfZGlzYWJsZShuZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYz02ODY9aW50IHJlZ2lzdGVyX3NqYTEwMDBkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYy02OTctXFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jOjY5ODpcXHRyZXR1cm4gcmVnaXN0ZXJfY2FuZGV2KGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jLTY5OS19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmM9NzAyPXZvaWQgdW5yZWdpc3Rlcl9zamExMDAwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMtNzA0LVxcdHNldF9yZXNldF9tb2RlKGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jOjcwNTpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYy03MDYtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYz04MTc9c3RhdGljIGludCBzbGNhbl9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jLTg1Ni1cXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jOjg1NzpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jLTg1OC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jPTg3Nj1zdGF0aWMgdm9pZCBzbGNhbl9jbG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04NzktXFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYzo4ODA6XFx0dW5yZWdpc3Rlcl9jYW5kZXYoc2wtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04ODEtXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYz02NjM9c3RhdGljIGludCBzb2Z0aW5nX25ldGRldl9yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMtNjY2LVxcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jOjY2NzpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYy02NjgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM9Njc4PXN0YXRpYyB2b2lkIHNvZnRpbmdfbmV0ZGV2X2NsZWFudXAoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jLTY4MC1cXHRzeXNmc19yZW1vdmVfZ3JvdXAoXFx1MDAyNm5ldGRldi1cXHUwMDNlZGV2LmtvYmosIFxcdTAwMjZuZXRkZXZfc3lzZnNfZ3JvdXApO1xcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jOjY4MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jLTY4Mi1cXHRmcmVlX2NhbmRldihuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYz04Mjg9c3RhdGljIGludCBoaTMxMTBfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jLTkzNS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jOjkzNjpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jLTkzNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYz05NTg9c3RhdGljIHZvaWQgaGkzMTEwX2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvaGkzMTF4LmMtOTYyLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvaGkzMTF4LmM6OTYzOlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldCk7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05NjQtXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYz0xMzMxPXN0YXRpYyBpbnQgbWNwMjUxeF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0NDMtXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ0NDpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDQ1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0NTItXFx0XFx0ZGV2X2Vycl9wcm9iZShcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIHJldCwgXFxcIkNhbm5vdCBzZXQgdXAgZ3Bpb3NcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NTM6XFx0XFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDU4LVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NTk6b3V0X3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NjA6XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDYxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM9MTQ3Nj1zdGF0aWMgdm9pZCBtY3AyNTF4X2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0ODAtXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ4MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZXQpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0ODItXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jPTIwODM9c3RhdGljIGludCBtY3AyNTF4ZmRfcmVnaXN0ZXIoc3RydWN0IG1jcDI1MXhmZF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTI3LVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjEyODpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTI5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxMzMtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jOjIxMzQ6XFx0XFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTQxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMTQyOlxcdFxcdGdvdG8gb3V0X3VucmVnaXN0ZXJfY2FuZGV2O1xcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjE0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjE0Ny1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jOjIxNDg6b3V0X3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE0OTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNTAtb3V0X3J1bnRpbWVfZGlzYWJsZTpcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM9MjE2Mj1zdGF0aWMgaW5saW5lIHZvaWQgbWNwMjUxeGZkX3VucmVnaXN0ZXIoc3RydWN0IG1jcDI1MXhmZF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTY1LVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE2NjpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNjctXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmM9ODIwPXN0YXRpYyBpbnQgc3VuNGljYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYy04OTYtXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jOjg5NzpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmMtODk4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmM9ODQ2PXN0YXRpYyBpbnQgdGlfaGVjY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYy05NDAtXFxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYzo5NDE6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTQyLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jOjk0MzpcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJyZWdpc3Rlcl9jYW5kZXYoKSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTQ0LVxcdFxcdGdvdG8gcHJvYmVfZXhpdF9vZmZsb2FkO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYz05NjQ9c3RhdGljIHZvaWQgdGlfaGVjY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTY4LVxcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmM6OTY5OlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTcwLVxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVxcdTAwM2VjbGspO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmM9MTAzMz1zdGF0aWMgaW50IGVtc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYy0xMDk1LVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZW1zX3VzYi5jOjEwOTY6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMtMTA5Ny1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYz0xMjA2PXN0YXRpYyBpbnQgZXNkX3VzYl9wcm9iZV9vbmVfbmV0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYy0xMjczLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYi5jOjEyNzQ6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9lc2RfdXNiLmMtMTI3NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jPTIwODk9c3RhdGljIGludCBlczU4eF9pbml0X25ldGRldihzdHJ1Y3QgZXM1OHhfZGV2aWNlICplczU4eF9kZXYsIGludCBjaGFubmVsX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMjExMi1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjIxMTM6XFx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYy0yMTE0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jPTIxMzQ9c3RhdGljIHZvaWQgZXM1OHhfZnJlZV9uZXRkZXZzKHN0cnVjdCBlczU4eF9kZXZpY2UgKmVzNTh4X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMjE0Mi1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjIxNDM6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTIxNDQtXFx0XFx0ZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoXFx1MDAyNmVzNTh4X3ByaXYobmV0ZGV2KS1cXHUwMDNlZGV2bGlua19wb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmM9MTE0ND1zdGF0aWMgaW50IGY4MTYwNF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmMtMTIwOC1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5jOjEyMDk6XFx0XFx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9mODE2MDQuYy0xMjEwLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmM9MTMxNz1zdGF0aWMgc3RydWN0IGdzX2NhbiAqZ3NfbWFrZV9jYW5kZXYodW5zaWduZWQgaW50IGNoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE0OTItXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYzoxNDkzOlxcdHJjID0gcmVnaXN0ZXJfY2FuZGV2KGRldi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE0OTQtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jPTE1MTA9c3RhdGljIHZvaWQgZ3NfZGVzdHJveV9jYW5kZXYoc3RydWN0IGdzX2NhbiAqZGV2KVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMtMTUxMS17XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYzoxNTEyOlxcdHVucmVnaXN0ZXJfY2FuZGV2KGRldi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE1MTMtXFx0Y2FuX3J4X29mZmxvYWRfZGVsKFxcdTAwMjZkZXYtXFx1MDAzZW9mZmxvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jPTgwND1zdGF0aWMgdm9pZCBrdmFzZXJfdXNiX3JlbW92ZV9pbnRlcmZhY2VzKHN0cnVjdCBrdmFzZXJfdXNiICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtODE0LVxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYzo4MTU6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtODE2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYz04MzM9c3RhdGljIGludCBrdmFzZXJfdXNiX2luaXRfb25lKHN0cnVjdCBrdmFzZXJfdXNiICpkZXYsIGludCBjaGFubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jLTkxMC1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6OTExOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy05MTItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jPTgwNz1zdGF0aWMgaW50IG1jYmFfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg1OS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6ODYwOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy04NjEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg3Ny1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6ODc4OlxcdFxcdGdvdG8gY2xlYW51cF91bnJlZ2lzdGVyX2NhbmRldjtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODc5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy04ODQtXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg4NTpjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYzo4ODY6XFx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODg3LVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jPTg5NT1zdGF0aWMgdm9pZCBtY2JhX3VzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTkwMi1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6OTAzOlxcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTkwNC1cXHRtY2JhX3VyYl91bmxpbmsocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYz03MjE9c3RhdGljIGludCBuY3Q2Njk0X2NhbmZkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy03ODYtXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmM6Nzg3OlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihwcml2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy03ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jPTgwND1zdGF0aWMgdm9pZCBuY3Q2Njk0X2NhbmZkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmMtODExLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jOjgxMjpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy04MTMtXFx0Y2FuX3J4X29mZmxvYWRfZGVsKFxcdTAwMjZwcml2LVxcdTAwM2VvZmZsb2FkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTkxMT1zdGF0aWMgaW50IHBlYWtfdXNiX2NyZWF0ZV9kZXYoY29uc3Qgc3RydWN0IHBlYWtfdXNiX2FkYXB0ZXIgKnBlYWtfdXNiX2FkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05ODEtXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6OTgyOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTk4My1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05OTctXFx0XFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo5OTg6XFx0XFx0XFx0Z290byBsYmxfdW5yZWdpc3Rlcl9jYW5kZXY7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmMtOTk5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTEwMTktXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTAyMDpsYmxfdW5yZWdpc3Rlcl9jYW5kZXY6XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTAyMTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTEwMjItXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYz0xMDM2PXN0YXRpYyB2b2lkIHBlYWtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDQ5LVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jOjEwNTA6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDUxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmM9MTMwMT1zdGF0aWMgaW50IHVjYW5fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYy0xNTIxLVxcdC8qIHJlZ2lzdGVyIHRoZSBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYzoxNTIyOlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1MjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jPTE1NDg9c3RhdGljIHZvaWQgdWNhbl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmMtMTU1NC1cXHRpZiAodXApIHtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYzoxNTU1OlxcdFxcdHVucmVnaXN0ZXJfY2FuZGV2KHVwLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1NTYtXFx0XFx0ZnJlZV9jYW5kZXYodXAtXFx1MDAzZW5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmM9OTAxPXN0YXRpYyBpbnQgdXNiXzhkZXZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTYyLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYzo5NjM6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jLTk2NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTcyLVxcdFxcdG5ldGRldl9lcnIobmV0ZGV2LCBcXFwiY2FuJ3QgZ2V0IGZpcm13YXJlIHZlcnNpb25cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYzo5NzM6XFx0XFx0Z290byBjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2O1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05NzQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05ODItXFxuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jOjk4MzpjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05ODQtXFx0dW5yZWdpc3Rlcl9uZXRkZXYocHJpdi1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM9NDI2PXN0YXRpYyBpbnQgcmVnaXN0ZXJfdmlydGlvX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmMtNDMwLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM6NDMxOlxcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdmlydGlvX2Nhbi5jLTQzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdmlydGlvX2Nhbi5jPTgyMz1zdGF0aWMgdm9pZCB2aXJ0aW9fY2FuX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmMtODI3LVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToyNS4wMzI3NDQyNVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgwODMzMjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGR1bW15X2NhbmAgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgYGR1bW15X2NhbmAgaXMgdXNpbmcgYHJlZ2lzdGVyX2NhbmRldmAuIFRoYXQncyBpbnRlcmVzdGluZy4gSSBrbm93IGBkdW1teV9jYW5gIGlzIGEgdmlydHVhbCBDQU4gZGV2aWNlLCBzbyBJJ20gYSBiaXQgc3VycHJpc2VkIGl0J3MgZW1wbG95aW5nIGEgZnVuY3Rpb24gbGlrZSBgcmVnaXN0ZXJfY2FuZGV2YCwgd2hpY2ggSSB0eXBpY2FsbHkgYXNzb2NpYXRlIHdpdGggcGh5c2ljYWwgQ0FOIGNvbnRyb2xsZXJzLiBMZXQncyBkaWcgaW50byB0aGF0OyBteSBpbnN0aW5jdCBpcyB0aGF0IHRoZXJlJ3MgYSBnb29kIHJlYXNvbiBmb3IgaXQuIFRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIuIEknbSBleHBlY3Rpbmcgc29tZSBjbGV2ZXIgYWJzdHJhY3Rpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjQ3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MjguNjEzNTgzNTAzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAyNDc0ODEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEVU1NWV9DQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvY2FuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MjguNzYzODQzNzU0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDMzOTAwMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDQU4gRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGBkdW1teV9jYW5gIGRyaXZlciBpcyBjb25maWd1cmVkLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIENBTiBuZXR3b3JraW5nIGRyaXZlciBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEknbGwgZmluZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGRvY3VtZW50ZWQgdGhlcmUuIEl0J3MgdGhlIHN0YW5kYXJkIHByYWN0aWNlLCBhZnRlciBhbGwsIHRvIGRlZmluZSBidWlsZC10aW1lIHNldHRpbmdzIHdpdGhpbiB0aGUgYEtjb25maWdgIGZpbGVzIG9mIHRoZSBrZXJuZWwuIFRoaXMgZmlsZSBob2xkcyB0aGUga2V5IHRvIGhvdyB0aGlzIGRyaXZlciBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQgZm9yIGEgc3BlY2lmaWMga2VybmVsIGJ1aWxkLiBMZXQncyBzZWUgd2hhdCdzIGluIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDkyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MzEuNzA3MjM5NDQ3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDY1NjE0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHVtbXlfY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19DQU5fQ1RVQ0FORkQpXFx0Kz0gY3R1Y2FuZmQvXFxuZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19DQU5fRFVNTVkpXFx0XFx0Kz0gZHVtbXlfY2FuLm9cXG5kcml2ZXJzL25ldC9jYW4vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0NBTl9GTEVYQ0FOKVxcdCs9IGZsZXhjYW4vXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTgtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE5OnN0cnVjdCBkdW1teV9jYW4ge1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMC1cXHRzdHJ1Y3QgY2FuX3ByaXYgY2FuO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIzLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNDpzdGF0aWMgc3RydWN0IGR1bW15X2NhbiAqZHVtbXlfY2FuO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0IGR1bW15X2Nhbl9iaXR0aW1pbmdfY29uc3QgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3OlxcdC5uYW1lID0gXFxcImR1bW15X2NhbiBDQ1xcXCIsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI4LVxcdC50c2VnMV9taW4gPSAyLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTM3LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgZHVtbXlfY2FuX2ZkX2RhdGFiaXR0aW1pbmdfY29uc3QgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjM5OlxcdC5uYW1lID0gXFxcImR1bW15X2NhbiBGRFxcXCIsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTQwLVxcdC50c2VnMV9taW4gPSAyLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTQ5LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl90ZGNfY29uc3QgZHVtbXlfY2FuX2ZkX3RkY19jb25zdCA9IHtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtNTEtXFx0LnRkY3ZfbWluID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy01OC1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6NTk6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0IGR1bW15X2Nhbl94bF9kYXRhYml0dGltaW5nX2NvbnN0ID0ge1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo2MDpcXHQubmFtZSA9IFxcXCJkdW1teV9jYW4gWExcXFwiLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy02MS1cXHQudHNlZzFfbWluID0gMixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy03MC1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6NzE6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fdGRjX2NvbnN0IGR1bW15X2Nhbl94bF90ZGNfY29uc3QgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTcyLVxcdC50ZGN2X21pbiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtNzktXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjgwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FuX3B3bV9jb25zdCBkdW1teV9jYW5fcHdtX2NvbnN0ID0ge1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy04MS1cXHQucHdtc19taW4gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTg4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo4OTpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfYml0dGltaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTkwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBjYW5fYml0dGltaW5nICpidClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMDEtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjEwMjpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfdGRjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fdGRjICp0ZGMpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTA4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMDk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X3B3bShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX3B3bSAqcHdtLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMTAtXFx0XFx0XFx0XFx0c3RydWN0IGNhbl9iaXR0aW1pbmcgKmRidClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMTYtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjExNzpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfY3RybG1vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTE4LXtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTE5OlxcdHN0cnVjdCBkdW1teV9jYW4gKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMjAtXFx0c3RydWN0IGNhbl9wcml2ICpjYW5fcHJpdiA9IFxcdTAwMjZwcml2LVxcdTAwM2VjYW47XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTM4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMzk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZ19pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE0MC17XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE0MTpcXHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTQyLVxcdHN0cnVjdCBjYW5fcHJpdiAqY2FuX3ByaXYgPSBcXHUwMDI2cHJpdi1cXHUwMDNlY2FuO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE0OC1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTQ5OlxcdGR1bW15X2Nhbl9wcmludF9jdHJsbW9kZShkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNTAtXFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE1Mi1cXHRuZXRkZXZfZGJnKGRldiwgXFxcIkNsYXNzaWNhbCBDQU4gbm9taW5hbCBiaXR0aW1pbmc6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTUzOlxcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2Y2FuX3ByaXYtXFx1MDAzZWJpdHRpbWluZyk7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE1NC1cXHRuZXRkZXZfZGJnKGRldiwgXFxcIlxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU3LVxcdFxcdG5ldGRldl9kYmcoZGV2LCBcXFwiQ0FOIEZEIGRhdGFiaXR0aW1pbmc6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTU4OlxcdFxcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2Y2FuX3ByaXYtXFx1MDAzZWZkLmRhdGFfYml0dGltaW5nKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU5LVxcdFxcdGlmIChjYW5fZmRfdGRjX2lzX2VuYWJsZWQoY2FuX3ByaXYpKSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE2MC1cXHRcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIlxcXFx0Q0FOIEZEIFREQzpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNjE6XFx0XFx0XFx0ZHVtbXlfY2FuX3ByaW50X3RkYyhkZXYsIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNlZmQudGRjKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTYyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNjctXFx0XFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJDQU4gWEwgZGF0YWJpdHRpbWluZzpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNjg6XFx0XFx0ZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZyhkZXYsIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNleGwuZGF0YV9iaXR0aW1pbmcpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNjktXFx0XFx0aWYgKGNhbl94bF90ZGNfaXNfZW5hYmxlZChjYW5fcHJpdikpIHtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTcwLVxcdFxcdFxcdG5ldGRldl9kYmcoZGV2LCBcXFwiXFxcXHRDQU4gWEwgVERDOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE3MTpcXHRcXHRcXHRkdW1teV9jYW5fcHJpbnRfdGRjKGRldiwgXFx1MDAyNmNhbl9wcml2LVxcdTAwM2V4bC50ZGMpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNzItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE3NC1cXHRcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIlxcXFx0Q0FOIFhMIFBXTTpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNzU6XFx0XFx0XFx0ZHVtbXlfY2FuX3ByaW50X3B3bShkZXYsIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNleGwucHdtLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNzYtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNleGwuZGF0YV9iaXR0aW1pbmcpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4MS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTgyOnN0YXRpYyBpbnQgZHVtbXlfY2FuX25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxODc6XFx0ZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZ19pbmZvKGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4OC1cXHRuZXRkZXZfZGJnKGRldiwgXFxcImVycm9yLXNpZ25hbGxpbmcgaXMgJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTk5LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMDA6c3RhdGljIGludCBkdW1teV9jYW5fbmV0ZGV2X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjA4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMDk6c3RhdGljIG5ldGRldl90eF90IGR1bW15X2Nhbl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIxMC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIyMS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZHVtbXlfY2FuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyMzpcXHQubmRvX29wZW4gPSBkdW1teV9jYW5fbmV0ZGV2X29wZW4sXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyNDpcXHQubmRvX3N0b3AgPSBkdW1teV9jYW5fbmV0ZGV2X2Nsb3NlLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMjU6XFx0Lm5kb19zdGFydF94bWl0ID0gZHVtbXlfY2FuX3N0YXJ0X3htaXQsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIyNi19O1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMjctXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyODpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGR1bW15X2Nhbl9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjI5LVxcdC5nZXRfdHNfaW5mbyA9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjMxLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMzI6c3RhdGljIGludCBfX2luaXQgZHVtbXlfY2FuX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjMzLXtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjM0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIzNTpcXHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2O1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMzYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNDEtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0MjpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2ZHVtbXlfY2FuX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0MzpcXHRkZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNmR1bW15X2Nhbl9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjQ0LVxcdGRldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX0VDSE87IC8qIGVuYWJsZSBlY2hvIGhhbmRsaW5nICovXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0NS1cXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjQ2OlxcdHByaXYtXFx1MDAzZWNhbi5iaXR0aW1pbmdfY29uc3QgPSBcXHUwMDI2ZHVtbXlfY2FuX2JpdHRpbWluZ19jb25zdDtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjQ3LVxcdHByaXYtXFx1MDAzZWNhbi5iaXRyYXRlX21heCA9IDIwICogTUVHQSAvKiBCUFMgKi87XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0OC1cXHRwcml2LVxcdTAwM2VjYW4uY2xvY2suZnJlcSA9IDE2MCAqIE1FR0EgLyogSHogKi87XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0OTpcXHRwcml2LVxcdTAwM2VjYW4uZmQuZGF0YV9iaXR0aW1pbmdfY29uc3QgPSBcXHUwMDI2ZHVtbXlfY2FuX2ZkX2RhdGFiaXR0aW1pbmdfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MDpcXHRwcml2LVxcdTAwM2VjYW4uZmQudGRjX2NvbnN0ID0gXFx1MDAyNmR1bW15X2Nhbl9mZF90ZGNfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MTpcXHRwcml2LVxcdTAwM2VjYW4ueGwuZGF0YV9iaXR0aW1pbmdfY29uc3QgPSBcXHUwMDI2ZHVtbXlfY2FuX3hsX2RhdGFiaXR0aW1pbmdfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MjpcXHRwcml2LVxcdTAwM2VjYW4ueGwudGRjX2NvbnN0ID0gXFx1MDAyNmR1bW15X2Nhbl94bF90ZGNfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MzpcXHRwcml2LVxcdTAwM2VjYW4ueGwucHdtX2NvbnN0ID0gXFx1MDAyNmR1bW15X2Nhbl9wd21fY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI1NC1cXHRwcml2LVxcdTAwM2VjYW4uY3RybG1vZGVfc3VwcG9ydGVkID0gQ0FOX0NUUkxNT0RFX0xJU1RFTk9OTFkgfFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI2NS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY2OlxcdGR1bW15X2NhbiA9IHByaXY7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI2Ny1cXHRuZXRkZXZfZGJnKGRldiwgXFxcImR1bW15LWNhbiByZWFkeVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjcxLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNzI6c3RhdGljIHZvaWQgX19leGl0IGR1bW15X2Nhbl9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3My17XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3NDpcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHVtbXlfY2FuLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yODAtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI4MTptb2R1bGVfaW5pdChkdW1teV9jYW5faW5pdCk7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI4Mjptb2R1bGVfZXhpdChkdW1teV9jYW5fZXhpdCk7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI4My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MzEuOTEzODA4NTA1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTQ0Nzc5NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIER1bW15IENBTiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0NBTl9EVU1NWWAuLi4gdGhhdCBzY3JlYW1zIFwiZHVtbXlfY2FuXCIgdG8gbWUuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciBDQU4sIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYWNjdXJhdGUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgZGVwZW5kZW5jaWVzIG9yIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscyBhYm91dCB0aGlzIGBDQU5fRFVNTVlgIHNldHRpbmcuIEhvcGVmdWxseSwgdGhlIGNvbW1lbnRzIGFyZSBjbGVhciFcblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOTozNi43NjgyOTAwNDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTY3NzMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0FOX0RVTU1ZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWc9MTA2PWNvbmZpZyBDQU5fQ0FOMzI3XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6MTI0OmNvbmZpZyBDQU5fRFVNTVlcXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIkR1bW15IENBTlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MzcuMDAzOTkxMDgyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDk0NzkzNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIGJpdCB0aW1pbmcgaW4gdGhlIENBTiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ0FOX0RVTU1ZYCBpcyBrZXkgaGVyZSBiZWNhdXNlIGl0J3MgYSB2aXJ0dWFsIENBTiBkZXZpY2UgY3JlYXRlZCB1c2luZyBgcmVnaXN0ZXJfY2FuZGV2YC4gVGhpcyBtZWFucyBpdCAqc2hvdWxkKiB1dGlsaXplIGBjYW5fbGlua19vcHNgIGFuZCwgdGhlcmVmb3JlLCBzdXBwb3J0IGBjYW5fY2hhbmdlbGlua2AuIEp1c3QgdG8gY29uZmlybSwgYHJlZ2lzdGVyX2NhbmRldmAgZG9lcyBpbmRlZWQgc2V0IGBkZXYtXHUwMDNlcnRubF9saW5rX29wcyA9IFx1MDAyNmNhbl9saW5rX29wcztgLCBhbmQgYGNhbl9saW5rX29wc2AgZG9lcywgaW4gZmFjdCwgaGF2ZSBgLmNoYW5nZWxpbmsgPSBjYW5fY2hhbmdlbGlua2AuIENvbnNlcXVlbnRseSwgYGNhbl9jaGFuZ2VsaW5rYCBjYWxscyBgY2FuX2dldF9iaXR0aW1pbmdgLCB3aGljaCBpbiB0dXJuIGNhbGxzIHRoZSB0YXJnZXQgZnVuY3Rpb24sIGBjYW5fY2FsY19iaXR0aW1pbmdgLiBTbywgd2UgKmFyZSogYWJsZSB0byByZWFjaCBgY2FuX2NhbGNfYml0dGltaW5nYCB0aHJvdWdoIG5ldGxpbmsgZm9yIHRoaXMgdmlydHVhbCBgZHVtbXlfY2FuYCBkZXZpY2UuXG5cbk5vdywgbGV0J3MgZm9jdXMgb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXRzZWxmLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhpcyBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jYC4gVGhlIGNvZGUgc25pcHBldCBoZXJlOlxuXG5gYGBjXG5cdFx0LyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxK3RzZWcyKS5cblx0XHQgKiBBIDMyIGJpdCB0c2VnYWxsICogYnQtXHUwMDNlYml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZVxuXHRcdCAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuXG5cdFx0ICovXG5cdFx0YnJwID0gZGl2NjRfdTY0KHByaXYtXHUwMDNlY2xvY2suZnJlcSxcblx0XHRcdFx0bXVsX3UzMl91MzIodHNlZ2FsbCwgYnQtXHUwMDNlYml0cmF0ZSkpICsgdHNlZyAlIDI7XG5gYGBcblxuc2hvd3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBhaW1lZCBhdCBwcmV2ZW50aW5nIGRpdmlzaW9uLWJ5LXplcm8gb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucyB3aGVuIGRlYWxpbmcgd2l0aCBsYXJnZSBiaXRyYXRlcy4gVGhpcyBpcyBhIGNsYXNzaWMgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgY29uY2Vybi4gSXQncyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCB3aGljaCBtZWFucyBpdCBuZWVkcyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUsIHRoZW4sIGFyZSB0aGUgZnVuY3Rpb25zIGBjYW5fY2FsY19iaXR0aW1pbmdgLCBgY2FuX2dldF9iaXR0aW1pbmdgLCBhbmQgYGNhbl9jaGFuZ2VsaW5rYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgQ0FOYCwgYENBTl9ERVZgLCBgQ0FOX0RVTU1ZYCwgYENBTl9WQ0FOYCwgYW5kIGBDQU5fVlhDQU5gIGFyZSBhbGwgcmVsZXZhbnQuXG5cbkhvbGQgb24uIExldCBtZSBjaXJjbGUgYmFjayB0byBgQ0FOX0RVTU1ZYC4gVGhhdCdzIHRoZSBjcnVjaWFsIGNvbmZpZyBiZWNhdXNlLCBhcyB3ZSBlc3RhYmxpc2hlZCwgaXQgdXNlcyBgcmVnaXN0ZXJfY2FuZGV2YC4gV2hhdCBhYm91dCBgdmNhbmAgYW5kIGB2eGNhbmA/IFRob3NlIGRvbid0IGNhbGwgYHJlZ2lzdGVyX2NhbmRldmAsIHNvIHRoZXkgZG9uJ3Qgc2VlbSB0byB1c2UgYGNhbl9saW5rX29wc2AuIEFoLCBJIHNlZSEgYHZjYW5gIGFuZCBgdnhjYW5gIGFyZSB2aXJ0dWFsIENBTiBkZXZpY2VzLCBidXQgdGhleSBkb24ndCBoYXZlICpiaXQgdGltaW5nKiBpbiB0aGUgc2FtZSBzZW5zZSBhcyBwaHlzaWNhbCBDQU4gZGV2aWNlcy4gQml0IHRpbWluZyBpcyBtb3JlIHJlbGV2YW50IGZvciBzaW11bGF0ZWQgcGh5c2ljYWwgZGV2aWNlcyBsaWtlIHRoZSBgZHVtbXlfY2FuYC4gVGh1cywgYENBTl9EVU1NWWAgaXMsIGluZGVlZCwgdGhlIGNvcnJlY3QgY29uZmlnIHRvIGVuYWJsZS5cblxuRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCwgbGV0J3MgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMsIGxpa2UgYENBTl9ORVRMSU5LYC4gSSdsbCB2ZXJpZnkgaWYgaXQncyBuZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDU4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjQ5LjQ5ODc4ODg5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM4MDk5NjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2FuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6NDkuNjAyNjEzNDU0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDczNjAzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgQ0FOIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZGVhbGluZyB3aXRoIGEgQ0FOLXJlbGF0ZWQgaXNzdWUsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aG9zZSBrZXJuZWwtbGV2ZWwgc2V0dGluZ3MgaXMgcHJvYmFibHkgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L2Nhbi9kZXYvS2NvbmZpZ2AsIG9yIHNvbWV0aGluZyBjbG9zZWx5IGFuYWxvZ291cyB3aXRoaW4gdGhlIENBTiBkcml2ZXIgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpjb25maWd1cmFibGUqIGF0IGNvbXBpbGUgdGltZS4gQXJlIHdlIGxvb2tpbmcgYXQgc3BlY2lmaWMgQ0FOIGNvbnRyb2xsZXJzLCBmZWF0dXJlcyBsaWtlIGJpdHJhdGUgYWRqdXN0bWVudHMsIGVycm9yIGhhbmRsaW5nIG1vZGVzLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGludGVyZmFjZSBpdHNlbGY/IFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgdG8gdHJvdWJsZXNob290aW5nIGFuZCBwb3RlbnRpYWxseSBwYXRjaGluZyBhIENBTiBkcml2ZXIuIEl0IGhlbHBzIG1lIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBlbmFibGVkIGFuZCBkaXNhYmxlZCBkdXJpbmcgY29tcGlsYXRpb24uIEl0IHdvdWxkIGJlIG15IGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB3aGF0IEkgYW0gZGVhbGluZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc2MCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjUzLjcwOTk4MDU4NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyNzk2Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTM0PWNvbmZpZyBDQU5fVlhDQU5cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjQ5OmNvbmZpZyBDQU5fTkVUTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkNBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6NTMuOTUyNzg2MzM4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1OTAwNTM1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQ0FOX05FVExJTksgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlzc2VjdCB0aGUgYGRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIHNlY3Rpb24gY29uY2VybmluZyBgQ0FOX05FVExJTktgLiBJJ20gYWxyZWFkeSB2aXN1YWxpemluZyB0aGUgS2NvbmZpZyBzeW50YXggaW4gbXkgaGVhZDsgdGhpcyBzaG91bGQgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGV4YW1pbmF0aW9uLCBhbHRob3VnaCBJ4oCZbSBzdXJlIGl04oCZbGwgZGVwZW5kIG9uIGhvdyBkZWVwIHRoZSBuZXN0ZWQgZGVwZW5kZW5jaWVzIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGNyaXRlcmlhIHRyaWdnZXIgdGhlIGluY2x1c2lvbiBvciBleGNsdXNpb24gb2YgdGhpcyBmZWF0dXJlIGluIGEga2VybmVsIGJ1aWxkLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBgYm9vbGAgb3B0aW9uLCBvciBpcyB0aGVyZSBhIG1vcmUgY29tcGxleCBjb25maWd1cmF0aW9uIGludm9sdmluZyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29yayBzdGFja3Mgb3IgaGFyZHdhcmUgZHJpdmVycz8gSSdtIGhvcGluZyBpdCdzIHdlbGwtZG9jdW1lbnRlZCwgYmVjYXVzZSwgbGV0J3MgZmFjZSBpdCwgdGVyc2UgS2NvbmZpZyBkZXNjcmlwdGlvbnMgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZS4gSSdtIGtlZW4gdG8gc2VlIGlmIHRoaXMgcmVsaWVzIG9uIGEgc3BlY2lmaWMga2VybmVsIHZlcnNpb24gdG9vLiBUaGlzIGlzbid0IHVzdWFsbHkgdGhlIGNhc2Ugd2l0aCBDQU4gZHJpdmVycywgYnV0IG9uZSBjYW4gaG9wZSEgRnJvbSB0aGUgbmFtZSwgSSdkIGFzc3VtZSB0aGF0IHRoaXMgaXMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgTmV0bGluayBpbnRlcmZhY2UgZm9yIENBTiwgYW5kIGlmIHRoaXMgaXMgdGhlIGNhc2UsIEknbGwgbmVlZCB0byBzZWUgaG93IHdlbGwgaXQncyBkZXNpZ25lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwODgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDowMC41NDI4NDYwODFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlXFxuICA0NzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZ4Y2FuLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQ0FOX05FVExJTktcXG4gIDUwOlxcdFxcdGJvb2wgXFxcIkNBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFxcXCJcXG4gIDUxOlxcdFxcdGRlZmF1bHQgeVxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBFbmFibGVzIHRoZSBjb21tb24gZnJhbWV3b3JrIGZvciBDQU4gZGV2aWNlIGRyaXZlcnMuIFRoaXMgaXMgdGhlXFxuICA1NDpcXHRcXHQgIHN0YW5kYXJkIGxpYnJhcnkgYW5kIHByb3ZpZGVzIGZlYXR1cmVzIGZvciB0aGUgTmV0bGluayBpbnRlcmZhY2Ugc3VjaFxcbiAgNTU6XFx0XFx0ICBhcyBiaXR0aW1pbmcgdmFsaWRhdGlvbiwgc3VwcG9ydCBvZiBDQU4gZXJyb3Igc3RhdGVzLCBkZXZpY2UgcmVzdGFydFxcbiAgNTY6XFx0XFx0ICBhbmQgb3RoZXJzLlxcbiAgNTc6XFx0XFxuICA1ODpcXHRcXHQgIFRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIHNlbGVjdGVkIGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgYWRkZWQgdG8gdGhlXFxuICA1OTpcXHRcXHQgIGNhbi1kZXYgbW9kdWxlLlxcbiAgNjA6XFx0XFxuICA2MTpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgYnkgYWxsIHBsYXRmb3JtIGFuZCBoYXJkd2FyZSBDQU4gZHJpdmVycy4gSWYgeW91XFxuICA2MjpcXHRcXHQgIHBsYW4gdG8gdXNlIHN1Y2ggZGV2aWNlcyBvciBpZiB1bnN1cmUsIHNheSBZLlxcbiAgNjM6XFx0XFxuICA2NDpcXHRpZiBDQU5fTkVUTElOS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDowMC41NDMwMTgzNzFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODQ1ODEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDQU4gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgbG9va3MgbGlrZSBgQ0FOX05FVExJTktgIGlzIGEgaGFyZCByZXF1aXJlbWVudCwgYW5kIHRoYW5rZnVsbHkgaXQncyBhbHJlYWR5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc2V0IHRvICd5Jy4gVGhhdCdzIG9uZSBsZXNzIHRoaW5nIHRvIHdvcnJ5IGFib3V0LiBOb3csIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYENBTl9DQUxDX0JJVFRJTUlOR2AgaXMgYWN0dWFsbHkgYSBjb25maWd1cmFibGUgb3B0aW9uLiBHb3R0YSBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgZXZlcnl0aGluZydzIHByb3Blcmx5IGRlZmluZWQgaW4gdGhlIGNvbmZpZyBzcGFjZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIHN0YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzY2MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDA6MDMuODkxNDgwMzQ5WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI2MjQ3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTY0PWlmIENBTl9ORVRMSU5LXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6NjY6Y29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1xcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTY3LVxcdGJvb2wgXFxcIkNBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDowNC4wNTQxMTI1ODhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk4NTA3OTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIENBTiBCaXQgVGltaW5nIENhbGN1bGF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGF0IGBDQU5fQ0FMQ19CSVRUSU1JTkdgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlJ3JlIGNvbnRyb2xsaW5nIHRoZSBiaXQgdGltaW5nIGNhbGN1bGF0aW9ucyBmb3IgQ0FOIGNvbnRyb2xsZXJzLiBJdCdzIGEgY3JpdGljYWwgYXNwZWN0IG9mIENBTiBjb21tdW5pY2F0aW9uOyBnZXQgdGhpcyB3cm9uZywgYW5kIHRoZSBlbnRpcmUgYnVzIGdvZXMgc291dGguIEkgd2FudCB0byBzZWUgaWYgd2Ugb2ZmZXIgZmxleGliaWxpdHkgaW4gaG93IHRoZXNlIHRpbWluZ3MgYXJlIGhhbmRsZWQuXG5cbkknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBsb2dpYyBoZXJlLCBtYXliZSBkZXBlbmRlbnQgb24gdGhlIHNwZWNpZmljIENBTiBjb250cm9sbGVyIHR5cGUgc3VwcG9ydGVkLCBzaW5jZSBkaWZmZXJlbnQgaGFyZHdhcmUgbGlrZWx5IGhhcyBkaWZmZXJlbnQgd2F5cyBvZiBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzLCBvciBtYXliZSB0aGVyZSdzIGEgc2ltcGxlLCBhbmQgY29uZmlndXJhYmxlLCBtYXRoZW1hdGljYWwgZm9ybXVsYSBpbiBwbGF5LCBpZiB3ZSBuZWVkIHRvIG1hbnVhbGx5IHR1bmUgaXQuIEl0J3MgYWxzbyBsaWtlbHkgd2UgaGF2ZSBhIGRlZmF1bHQgY2FsY3VsYXRpb24sIGFuZCB0aGUgYENBTl9DQUxDX0JJVFRJTUlOR2AgaXMganVzdCBnaXZpbmcgdGhlIHVzZXIgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGEgcGFydGljdWxhciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQuIEkgbmVlZCB0byBzZWUgaWYgaXQgYWxsb3dzIGZvciBoYW5kLXR1bmVkIHZhbHVlcyBhcyBhbiBleHBlcnQgaW4gQ0FOLCBJIHdhbnQgdG8gY29udHJvbCB0aGUgdGltaW5nIGFzIHByZWNpc2VseSBhcyBwb3NzaWJsZSFcbkkgd2FudCB0byBpZGVudGlmeSB0aGUgcHJvcyBhbmQgY29ucyBvZiB0aGVzZSBkaWZmZXJlbnQgYXBwcm9hY2hlczogYXV0b21hdGljIHZlcnN1cyBtYW51YWwsIGFuZCBob3cgd2UncmUgZGVhbGluZyB3aXRoIGNsb2NrIGZyZXF1ZW5jaWVzIGFuZCBzYW1wbGUgcG9pbnRzLiBJIGFsc28gbmVlZCB0byBhc3Nlc3Mgd2hldGhlciB3ZSBhcmUgc3VwcG9ydGluZyBkaWZmZXJlbnQgQ0FOIHN0YW5kYXJkcyAoQ0FOIDIuMEEsIENBTiAyLjBCLCBDQU4gRkQsIGV0Yy4pLCBhbmQgaG93IGJpdCB0aW1pbmcgaXMgaGFuZGxlZCBmb3IgZWFjaC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBvciBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLlxuVWx0aW1hdGVseSwgSSB3YW50IHRvIGJlIGFibGUgdG8gYWR2aXNlIHRoZSB1c2VyIG9uIHRoZSBtb3N0IGVmZmljaWVudCBhbmQgcmVsaWFibGUgYml0IHRpbWluZyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk0NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQwOjExLjAzOTE5NTM0NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjQsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjQ6XFx0aWYgQ0FOX05FVExJTktcXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1xcbiAgNjc6XFx0XFx0Ym9vbCBcXFwiQ0FOIGJpdC10aW1pbmcgY2FsY3VsYXRpb25cXFwiXFxuICA2ODpcXHRcXHRkZWZhdWx0IHlcXG4gIDY5OlxcdFxcdGhlbHBcXG4gIDcwOlxcdFxcdCAgSWYgZW5hYmxlZCwgQ0FOIGJpdC10aW1pbmcgcGFyYW1ldGVycyB3aWxsIGJlIGNhbGN1bGF0ZWQgZm9yIHRoZVxcbiAgNzE6XFx0XFx0ICBiaXQtcmF0ZSBzcGVjaWZpZWQgdmlhIE5ldGxpbmsgYXJndW1lbnQgXFxcImJpdHJhdGVcXFwiIHdoZW4gdGhlIGRldmljZVxcbiAgNzI6XFx0XFx0ICBnZXQgc3RhcnRlZC4gVGhpcyB3b3JrcyBmaW5lIGZvciB0aGUgbW9zdCBjb21tb24gQ0FOIGNvbnRyb2xsZXJzXFxuICA3MzpcXHRcXHQgIHdpdGggc3RhbmRhcmQgYml0LXJhdGVzIGJ1dCBtYXkgZmFpbCBmb3IgZXhvdGljIGJpdC1yYXRlcyBvciBDQU5cXG4gIDc0OlxcdFxcdCAgc291cmNlIGNsb2NrIGZyZXF1ZW5jaWVzLiBEaXNhYmxpbmcgc2F2ZXMgc29tZSBzcGFjZSwgYnV0IHRoZW4gdGhlXFxuICA3NTpcXHRcXHQgIGJpdC10aW1pbmcgcGFyYW1ldGVycyBtdXN0IGJlIHNwZWNpZmllZCBkaXJlY3RseSB1c2luZyB0aGUgTmV0bGlua1xcbiAgNzY6XFx0XFx0ICBhcmd1bWVudHMgXFxcInRxXFxcIiwgXFxcInByb3Bfc2VnXFxcIiwgXFxcInBoYXNlX3NlZzFcXFwiLCBcXFwicGhhc2Vfc2VnMlxcXCIgYW5kIFxcXCJzandcXFwiLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHQgIFRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIHNlbGVjdGVkIGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgYWRkZWQgdG8gdGhlXFxuICA3OTpcXHRcXHQgIGNhbi1kZXYgbW9kdWxlLlxcbiAgODA6XFx0XFxuICA4MTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA4MjpcXHRcXG4gIDgzOlxcdGNvbmZpZyBDQU5fUlhfT0ZGTE9BRFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDoxMS4wMzkzNTY3NzZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2Mjg5MTI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgQ0FOIEJ1cyBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBDQU4tcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNlZW1zIGxpa2UgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ0FOX0NBTENfQklUVElNSU5HYCBpcyBlbmFibGVkIHRvby4gR29vZCB0byBrbm93IGl0IGRlZmF1bHRzIHRvICd5JywgYnV0IEkgc2hvdWxkIHN0aWxsIGRvdWJsZS1jaGVjay5cblxuRXNzZW50aWFsbHksIEknbSBkZWFsaW5nIHdpdGggdGhlc2Uga2V5IENBTiBjb25maWd1cmF0aW9uczogYENBTmAsIGBDQU5fREVWYCwgYENBTl9ORVRMSU5LYCwgYENBTl9DQUxDX0JJVFRJTUlOR2AsIGFuZCBgQ0FOX0RVTU1ZYC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIHNldHVwLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gU28sIG5leHQsIEknbGwgZm9jdXMgb24gYENBTl9EVU1NWWAgYW5kIGludmVzdGlnYXRlIGFueSBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGlmIEkgZW5hYmxlIGl0LiBJdCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gcmV2aWV3IGFsbCBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQwOjE0LjgwMjI1MjAxN1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTIwOlxcdFxcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jYW4zMjcucnN0XFxuIDEyMTpcXHRcXG4gMTIyOlxcdFxcdCAgSWYgdGhpcyBkcml2ZXIgaXMgYnVpbHQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGNhbjMyNy5cXG4gMTIzOlxcdFxcbiAxMjQ6XFx0Y29uZmlnIENBTl9EVU1NWVxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IENBTlxcXCJcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgQSBkdW1teSBDQU4gbW9kdWxlIHN1cHBvcnRpbmcgQ2xhc3NpY2FsIENBTiwgQ0FOIEZEIGFuZCBDQU4gWEwuIEl0XFxuIDEyODpcXHRcXHQgIGV4cG9zZXMgYml0dGltaW5nIHZhbHVlcyB3aGljaCBjYW4gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBuZXRsaW5rXFxuIDEyOTpcXHRcXHQgIGludGVyZmFjZS5cXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0ICBUaGUgbW9kdWxlIHdpbGwgc2ltcGx5IGVjaG8gYW55IGZyYW1lIHNlbnQgdG8gaXQuIElmIGRlYnVnIG1lc3NhZ2VzXFxuIDEzMjpcXHRcXHQgIGFyZSBhY3RpdmF0ZWQsIGl0IHByaW50cyBhbGwgdGhlIENBTiBiaXR0aW1pbmcgaW5mb3JtYXRpb24gaW4gdGhlXFxuIDEzMzpcXHRcXHQgIGtlcm5lbCBsb2cuIEFzaWRlIGZyb20gdGhhdCBpdCBkb2VzIG5vdGhpbmcuXFxuIDEzNDpcXHRcXG4gMTM1OlxcdFxcdCAgVGhpcyBpcyBjb252ZW5pZW50IGZvciB0ZXN0aW5nIHRoZSBDQU4gbmV0bGluayBpbnRlcmZhY2UuIE1vc3Qgb2YgdGhlXFxuIDEzNjpcXHRcXHQgIHVzZXJzIHdpbGwgbmV2ZXIgbmVlZCB0aGlzLiBJZiB1bnN1cmUsIHNheSBOTy5cXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gMTM5OlxcdFxcdCAgY2FsbGVkIGR1bW15LWNhbi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDA6MTQuODAyMzg0NTI3WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzQxNzk2NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipGdXp6aW5nIFBvdGVudGlhbDogYGNhbl9jYWxjX2JpdHRpbWluZ2AqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgYmxvY2sgaXMgcHJldHR5IHNlbGYtY29udGFpbmVkLCBub3QgcmVseWluZyBvbiBhbnl0aGluZyBiZXlvbmQgdGhhdCBgaWYgQ0FOX0RFVmAgY2hlY2suIFRoYXTigJlzIGdvb2QsIGxlc3MgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgY2FuX2NhbGNfYml0dGltaW5nYCBmdW5jdGlvbiBhZ2FpbiwganVzdCB0byBiZSBzdXJlLiBMZXQgbWUgc2VlIHRoZSBzaWduYXR1cmUuLi4gWWVwLCB0aGVyZSBpdCBpczpcblxuYGBgY1xuaW50IGNhbl9jYWxjX2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG5cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0ICpidGMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmBgYFxuXG5SaWdodCwgaXQncyBhIG5vbi1zdGF0aWMgQVBJIGVudHJ5cG9pbnQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGlucHV0IHR5cGVzIHNlZW0gcmVhc29uYWJsZSBmb3IgZ2VuZXJhdGluZyBkaXZlcnNlIHRlc3QgY2FzZXMuIEkgY2FuIHNlZSB0aGUgcGFyYW1ldGVycyBhcmUgdGhpbmdzIGxpa2UgdGhlIG5ldHdvcmsgZGV2aWNlIGl0c2VsZiwgYml0dGltaW5nIGFuZCBjb25zdGFudCBiaXR0aW1pbmcgc3RydWN0dXJlcywgYW5kIGV4dGVuZGVkIGFja25vd2xlZGdlbWVudC4gSSBzaG91bGQgZGVmaW5pdGVseSBzZXQgdGhlIHJlc3VsdHMgb2YgdGhlIGZ1enppbmcgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTMyMSwiT3V0cHV0VG9rZW5zIjoxOTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDoyMC40NzY1Njg3NDhaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDI1NTY4OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNBTlwiLFxuICAgIFwiQ0FOX0RFVlwiLFxuICAgIFwiQ0FOX05FVExJTktcIixcbiAgICBcIkNBTl9DQUxDX0JJVFRJTUlOR1wiLFxuICAgIFwiQ0FOX0RVTU1ZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2FuX2NhbGNfYml0dGltaW5nXCIsXG4gICAgXCJjYW5fZ2V0X2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2NoYW5nZWxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5cIixcbiAgICBcIkNBTl9ERVZcIixcbiAgICBcIkNBTl9ORVRMSU5LXCIsXG4gICAgXCJDQU5fQ0FMQ19CSVRUSU1JTkdcIixcbiAgICBcIkNBTl9EVU1NWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhbl9jYWxjX2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2dldF9iaXR0aW1pbmdcIixcbiAgICBcImNhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgMzItYml0IHdyYXAgdG8gemVybyBkaXZpc2lvbiBlcnJvciBpbiBDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvbiBmb3IgbGFyZ2UgdXNlcnNwYWNlIGJpdHJhdGVzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIHdoZW4gY29uZmlndXJpbmcgQ0FOIGRldmljZXMuIEZ1enppbmcgdGhpcyBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgbWF0aCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgZWRnZSBjYXNlcyB3aXRob3V0IHJlZ3Jlc3Npb25zLiBUaGUgYENBTl9EVU1NWWAgdmlydHVhbCBkZXZpY2UgaXMgaW5jbHVkZWQgdG8gYWxsb3cgdGVzdGluZyB0aGlzIGhhcmR3YXJlLWluZGVwZW5kZW50IGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrg48j[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 09:36:03 +0000 UTC FinishedAt: 2026-08-03 09:40:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_NETLINK", "CAN_CALC_BITTIMING", "CAN_DUMMY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "af39eb111ce6b5eba9c08513b62c4868eb7e7fd5", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CAN", "CAN_DEV", "CAN_NETLINK", "CAN_CALC_BITTIMING", "CAN_DUMMY" ], "series_id": "872b5477-2c95-42ad-b713-e5c4129e2a8a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "can_calc_bittiming", "can_get_bittiming", "can_changelink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NBTiYjMzQ7LAogICAgJiMzNDtDQU5fREVWJiMzNDssCiAgICAmIzM0O0NBTl9ORVRMSU5LJiMzNDssCiAgICAmIzM0O0NBTl9DQUxDX0JJVFRJTUlORyYjMzQ7LAogICAgJiMzNDtDQU5fRFVNTVkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjYW5fY2FsY19iaXR0aW1pbmcmIzM0OywKICAgICYjMzQ7Y2FuX2dldF9iaXR0aW1pbmcmIzM0OywKICAgICYjMzQ7Y2FuX2NoYW5nZWxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgMzItYml0IHdyYXAgdG8gemVybyBkaXZpc2lvbiBlcnJvciBpbiBDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvbiBmb3IgbGFyZ2UgdXNlcnNwYWNlIGJpdHJhdGVzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIHdoZW4gY29uZmlndXJpbmcgQ0FOIGRldmljZXMuIEZ1enppbmcgdGhpcyBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgbWF0aCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgZWRnZSBjYXNlcyB3aXRob3V0IHJlZ3Jlc3Npb25zLiBUaGUgYENBTl9EVU1NWWAgdmlydHVhbCBkZXZpY2UgaXMgaW5jbHVkZWQgdG8gYWxsb3cgdGVzdGluZyB0aGlzIGhhcmR3YXJlLWluZGVwZW5kZW50IGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZjFjMTQwMmU4NzNiZTRmODExOTM2OGNjNWNlNmU2Yzk5NzFiYzA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTozODozMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcbmluZGV4IDQyNDk4ZTlkM2YzOGQuLjI3ODliOTlhYjZhODMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY1xuQEAgLTExOSw4ICYjNDM7MTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxuIFx0ICAgICB0c2VnIFx1MDAzZT0gKGJ0Yy1cdTAwM2V0c2VnMV9taW4gJiM0MzsgYnRjLVx1MDAzZXRzZWcyX21pbikgKiAyOyB0c2VnLS0pIHtcbiBcdFx0dHNlZ2FsbCA9IENBTl9TWU5DX1NFRyAmIzQzOyB0c2VnIC8gMjtcbiBcbi1cdFx0LyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxJiM0Mzt0c2VnMikgKi9cbi1cdFx0YnJwID0gcHJpdi1cdTAwM2VjbG9jay5mcmVxIC8gKHRzZWdhbGwgKiBidC1cdTAwM2ViaXRyYXRlKSAmIzQzOyB0c2VnICUgMjtcbiYjNDM7XHRcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSYjNDM7dHNlZzIpLlxuJiM0MztcdFx0ICogQSAzMiBiaXQgdHNlZ2FsbCAqIGJ0LVx1MDAzZWJpdHJhdGUgY2FuIHdyYXAgdG8gemVybyBmb3IgbGFyZ2VcbiYjNDM7XHRcdCAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdGJycCA9IGRpdjY0X3U2NChwcml2LVx1MDAzZWNsb2NrLmZyZXEsXG4mIzQzO1x0XHRcdFx0bXVsX3UzMl91MzIodHNlZ2FsbCwgYnQtXHUwMDNlYml0cmF0ZSkpICYjNDM7IHRzZWcgJSAyO1xuIFxuIFx0XHQvKiBjaG9vc2UgYnJwIHN0ZXAgd2hpY2ggaXMgcG9zc2libGUgaW4gc3lzdGVtICovXG4gXHRcdGJycCA9IChicnAgLyBidGMtXHUwMDNlYnJwX2luYykgKiBidGMtXHUwMDNlYnJwX2luYztcbkBAIC0xMjgsNyAmIzQzOzEzMiw3IEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRiaXRyYXRlID0gcHJpdi1cdTAwM2VjbG9jay5mcmVxIC8gKGJycCAqIHRzZWdhbGwpO1xuLVx0XHRiaXRyYXRlX2Vycm9yID0gYWJzKGJ0LVx1MDAzZWJpdHJhdGUgLSBiaXRyYXRlKTtcbiYjNDM7XHRcdGJpdHJhdGVfZXJyb3IgPSBhYnNfZGlmZihidC1cdTAwM2ViaXRyYXRlLCBiaXRyYXRlKTtcbiBcbiBcdFx0LyogdHNlZyBicnAgYml0ZXJyb3IgKi9cbiBcdFx0aWYgKGJpdHJhdGVfZXJyb3IgXHUwMDNlIGJlc3RfYml0cmF0ZV9lcnJvcilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX05FVExJTksmIzM0OywKICAgICYjMzQ7Q0FOX0NBTENfQklUVElNSU5HJiMzNDssCiAgICAmIzM0O0NBTl9EVU1NWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDVmMWMxNDAyZTg3M2JlNGY4MTE5MzY4Y2M1Y2U2ZTZjOTk3MWJjMDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM4OjMxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jIGIvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jCmluZGV4IDQyNDk4ZTlkM2YzOGQuLjI3ODliOTlhYjZhODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMKQEAgLTExOSw4ICYjNDM7MTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LAogCSAgICAgdHNlZyAmZ3Q7PSAoYnRjLSZndDt0c2VnMV9taW4gJiM0MzsgYnRjLSZndDt0c2VnMl9taW4pICogMjsgdHNlZy0tKSB7CiAJCXRzZWdhbGwgPSBDQU5fU1lOQ19TRUcgJiM0MzsgdHNlZyAvIDI7CiAKLQkJLyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxJiM0Mzt0c2VnMikgKi8KLQkJYnJwID0gcHJpdi0mZ3Q7Y2xvY2suZnJlcSAvICh0c2VnYWxsICogYnQtJmd0O2JpdHJhdGUpICYjNDM7IHRzZWcgJSAyOwomIzQzOwkJLyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxJiM0Mzt0c2VnMikuCiYjNDM7CQkgKiBBIDMyIGJpdCB0c2VnYWxsICogYnQtJmd0O2JpdHJhdGUgY2FuIHdyYXAgdG8gemVybyBmb3IgbGFyZ2UKJiM0MzsJCSAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuCiYjNDM7CQkgKi8KJiM0MzsJCWJycCA9IGRpdjY0X3U2NChwcml2LSZndDtjbG9jay5mcmVxLAomIzQzOwkJCQltdWxfdTMyX3UzMih0c2VnYWxsLCBidC0mZ3Q7Yml0cmF0ZSkpICYjNDM7IHRzZWcgJSAyOwogCiAJCS8qIGNob29zZSBicnAgc3RlcCB3aGljaCBpcyBwb3NzaWJsZSBpbiBzeXN0ZW0gKi8KIAkJYnJwID0gKGJycCAvIGJ0Yy0mZ3Q7YnJwX2luYykgKiBidGMtJmd0O2JycF9pbmM7CkBAIC0xMjgsNyAmIzQzOzEzMiw3IEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LAogCQkJY29udGludWU7CiAKIAkJYml0cmF0ZSA9IHByaXYtJmd0O2Nsb2NrLmZyZXEgLyAoYnJwICogdHNlZ2FsbCk7Ci0JCWJpdHJhdGVfZXJyb3IgPSBhYnMoYnQtJmd0O2JpdHJhdGUgLSBiaXRyYXRlKTsKJiM0MzsJCWJpdHJhdGVfZXJyb3IgPSBhYnNfZGlmZihidC0mZ3Q7Yml0cmF0ZSwgYml0cmF0ZSk7CiAKIAkJLyogdHNlZyBicnAgYml0ZXJyb3IgKi8KIAkJaWYgKGJpdHJhdGVfZXJyb3IgJmd0OyBiZXN0X2JpdHJhdGVfZXJyb3IpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ0FOIEJpdCBUaW1pbmcgQ2FsY3VsYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0b3VjaGVzIGBkcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIG1vZGlmeWluZyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgZnVuY3Rpb24uIEZyb20gdGhlIGRlc2NyaXB0aW9uLCBpdCBzZWVtcyBsaWtlIHRoZSBnb2FsIGlzIHRvIGltcHJvdmUgdGhlIGhhbmRsaW5nIG9mIGhpZ2ggYml0cmF0ZXMuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYSBwb3RlbnRpYWwgMzItYml0IGludGVnZXIgb3ZlcmZsb3cgd2hlbiBjYWxjdWxhdGluZyBgYnJwYCBieSBzd2l0Y2hpbmcgdG8gNjQtYml0IG1hdGguIEFsc28sIHRoZXJlJiMzOTtzIGEgY2hhbmdlIGZyb20gYSBkaXJlY3Qgc3VidHJhY3Rpb24gd2l0aCBgYWJzKClgIHRvIGBhYnNfZGlmZigpYC4gSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoeSB0aGV5IG1hZGUgdGhhdCBzcGVjaWZpYyBjaGFuZ2UuCgpSaWdodCwgYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXRzZWxmIGlzIGNyaXRpY2FsLiBJdCYjMzk7cyB0aGUgY29yZSBDQU4gc3Vic3lzdGVtIGZ1bmN0aW9uIHRoYXQgZmlndXJlcyBvdXQgdGhlIGJpdCB0aW1pbmcgcGFyYW1ldGVycywgd2hpY2ggaXMgaG93IHRoZSBDQU4gY29udHJvbGxlciBzeW5jaHJvbml6ZXMuIEkga25vdyBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdGhyb3VnaCBuZXRsaW5rIHdoZW4gc29tZW9uZSBjb25maWd1cmVzIGEgQ0FOIGRldmljZS4gU28sIHRoaXMgY2hhbmdlIGNvdWxkIGRpcmVjdGx5IGltcGFjdCBob3cgdXNlcnNwYWNlIHRvb2xzIGludGVyYWN0IHdpdGggQ0FOIGhhcmR3YXJlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGhpZ2hlciBzcGVlZHMuIFRoZSBpbXBsaWNhdGlvbnMgb2YgZ2V0dGluZyB0aGlzIGNhbGN1bGF0aW9uIHdyb25nIGFyZSBwcmV0dHkgc2VyaW91czsgY29tbXVuaWNhdGlvbiBmYWlsdXJlcyB3b3VsZCBiZSB0aGUgb2J2aW91cyBzeW1wdG9tLgoKTGV0JiMzOTtzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgQ0FOIGFuZCBDQU5fREVWIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgY29udGV4dCB0aGVyZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIENBTiBmZWF0dXJlcyBhcmUgY29uZmlndXJlZCwgYW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZGVwZW5kZW5jaWVzIG9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQgdG8gdGhpcyBwYXRjaC4gQW55IGFyY2hpdGVjdHVyYWwgZGVwZW5kZW5jaWVzPyBBbnkgcG90ZW50aWFsIGNvbmZsaWN0cz8gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgZGl2aW5nIGludG8gdGhlIGNvZGUgaXRzZWxmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM9MTM0PWludCBjYW5fZ2V0X2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9iaXR0aW1pbmcuYy0xNDUtXHRpZiAoIWJ0LVx1MDAzZXRxIFx1MDAyNlx1MDAyNiBidC1cdTAwM2ViaXRyYXRlIFx1MDAyNlx1MDAyNiBidGMpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jOjE0NjpcdFx0cmV0dXJuIGNhbl9jYWxjX2JpdHRpbWluZyhkZXYsIGJ0LCBidGMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTE0Ny1cdGlmIChidC1cdTAwM2V0cSBcdTAwMjZcdTAwMjYgIWJ0LVx1MDAzZWJpdHJhdGUgXHUwMDI2XHUwMDI2IGJ0Yylcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmM9NTM9Y2FuX3VwZGF0ZV9zYW1wbGVfcG9pbnQoY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yyxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMtOTItXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmM6OTM6aW50IGNhbl9jYWxjX2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMtOTQtXHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCAqYnRjLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUgZm9yIENBTl9ERVYqKgoKT2theSwgdGltZSB0byBnZXQgc3RhcnRlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gZm9yIGBDQU5fREVWYC4gSSYjMzk7bSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcywgaXRzIGRlZmF1bHQgc2V0dGluZywgYW5kIGFueSBjb25kaXRpb25hbCBidWlsZCBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyB0aGUgZmlyc3QsIG1vc3QgZnVuZGFtZW50YWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBDQU4gZGV2aWNlIHN1cHBvcnQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJhc2Ugc2V0dGluZ3MgYmVmb3JlIEkgZ28gZGl2aW5nIGRlZXBlciB0byBtb3JlIG51YW5jZWQgc2V0dGluZ3MuIEtub3dpbmcgaG93IGl0JiMzOTtzIGRlZmluZWQgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBmcmFtZXdvcmsgYW5kIGhvdyBkaWZmZXJlbnQgY29tcG9uZW50cyBpbnRlcmFjdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGVzIHJldmVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX0RFViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWctMi1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjM6bWVudWNvbmZpZyBDQU5fREVWXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy00LVx0dHJpc3RhdGUgXCYjMzQ7Q0FOIERldmljZSBEcml2ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHRha2luZyB0aGUgcGVyc3BlY3RpdmUgb2Ygc29tZW9uZSBmYW1pbGlhciB3aXRoIGtlcm5lbCBkZXZlbG9wbWVudCBhbmQgQ0FOIGRyaXZlcnM6CgoqKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jaWVzIGluIHRoZSBDQU4gU3Vic3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQmIzM5O3MgZGVwZW5kZW50IG9uIHdoYXQgaW4gdGhlIENBTiBkcml2ZXIgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSB3aWxsIGJlIHRvIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AuIFRoaXMgZmlsZSwgYXMgSSByZWNhbGwsIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZGVwZW5kZW5jaWVzIGZvciB2YXJpb3VzIENBTiBkZXZpY2Ugb3B0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnN0cmFpbnRzIGJlZm9yZSBtYWtpbmcgYW55IGNoYW5nZXMgb3IgcmVjb21tZW5kYXRpb25zLiBJdCYjMzk7cyB0aGUgZ28tdG8gcGxhY2UgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byBlYWNoIG90aGVyIGluIHRoaXMgcGFydCBvZiB0aGUga2VybmVsLiBUaGlzIGlzIGEgY3J1Y2lhbCBzdGVwIGZvciBlbnN1cmluZyBhbnkgbW9kaWZpY2F0aW9ucyBJIG1ha2UgYXJlIHNvdW5kIGFuZCBkb24mIzM5O3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGJ1aWxkIG9yIHJ1bnRpbWUgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRcbiAgIDM6XHRtZW51Y29uZmlnIENBTl9ERVZcbiAgIDQ6XHRcdHRyaXN0YXRlIFwmIzM0O0NBTiBEZXZpY2UgRHJpdmVyc1wmIzM0O1xuICAgNTpcdFx0ZGVmYXVsdCB5XG4gICA2Olx0XHRkZXBlbmRzIG9uIENBTlxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBpcyBzZXJpYWwgY29tbXVuaWNhdGlvbnMgcHJvdG9jb2wgdXAgdG9cbiAgIDk6XHRcdCAgMU1iaXQvcyBmb3IgaXRzIG9yaWdpbmFsIHJlbGVhc2UgKG5vdyBrbm93biBhcyBDbGFzc2ljYWwgQ0FOKSBhbmQgdXBcbiAgMTA6XHRcdCAgdG8gOE1iaXQvcyBmb3IgdGhlIG1vcmUgcmVjZW50IENBTiB3aXRoIEZsZXhpYmxlIERhdGEtUmF0ZVxuICAxMTpcdFx0ICAoQ0FOLUZEKS4gVGhlIENBTiBidXMgd2FzIG9yaWdpbmFsbHkgbWFpbmx5IGZvciBhdXRvbW90aXZlLCBidXQgaXMgbm93XG4gIDEyOlx0XHQgIHdpZGVseSB1c2VkIGluIG1hcmluZSAoTk1FQTIwMDApLCBpbmR1c3RyaWFsLCBhbmQgbWVkaWNhbFxuICAxMzpcdFx0ICBhcHBsaWNhdGlvbnMuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIENBTiBuZXR3b3JrIHByb3RvY29sIGZhbWlseVxuICAxNDpcdFx0ICBQRl9DQU4gaXMgY29udGFpbmVkIGluIFx1MDAzY0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4ucnN0XHUwMDNlLlxuICAxNTpcdFxuICAxNjpcdFx0ICBUaGlzIHNlY3Rpb24gY29udGFpbnMgYWxsIHRoZSBDQU4oLUZEKSBkZXZpY2UgZHJpdmVycyBpbmNsdWRpbmcgdGhlXG4gIDE3Olx0XHQgIHZpcnR1YWwgb25lcy4gSWYgeW91IG93biBzdWNoIGRldmljZXMgb3IgcGxhbiB0byB1c2UgdGhlIHZpcnR1YWwgQ0FOXG4gIDE4Olx0XHQgIGludGVyZmFjZXMgdG8gZGV2ZWxvcCBhcHBsaWNhdGlvbnMsIHNheSBZIGhlcmUuXG4gIDE5Olx0XG4gIDIwOlx0XHQgIFRvIGNvbXBpbGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZSBjYWxsZWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDMyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGVwZW5kZW5jeSBFeHBsb3JhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgQ0FOX0RFVmAgb3B0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIGl0IHJlbGllcyBvbiBgQ0FOYC4gVGhpcyBtZWFucyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBgQ0FOX0RFVmAgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgbGFyZ2VyIENBTiBzdWJzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpZyBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgYG5ldC9jYW4vS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBDQU4gYXJlIGRlZmluZWQuIEl0JiMzOTtzIHRoZSBwbGFjZSB3aGVyZSBJJiMzOTtsbCBmaW5kIHRoZSBsb2dpYyB0aGF0IGdvdmVybnMgdGhlIGJ1aWxkIGFuZCBjb25maWd1cmF0aW9uIHByb2Nlc3MuIExldCBtZSBwdWxsIHRoYXQgdXAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQgYWJvdXQgdGhlIGBDQU5gIG9wdGlvbiYjMzk7cyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVmYXVsdHMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgaW4gaW50ZXJwcmV0aW5nIHRoZSBvdmVyYWxsIHNldHVwLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgY29uZGl0aW9uYWwgc3RhdGVtZW50IG9yIGEgbWVudSBzdHJ1Y3R1cmUgdGhhdCBtYWtlcyBpdCBjcnlzdGFsIGNsZWFyIGhvdyBgQ0FOYCBpbmZsdWVuY2VzIGBDQU5fREVWYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jYW4vS2NvbmZpZy01LVxubmV0L2Nhbi9LY29uZmlnOjY6bWVudWNvbmZpZyBDQU5cbm5ldC9jYW4vS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7Q0FOIGJ1cyBzdWJzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9jYW4vS2NvbmZpZz0yMj1pZiBDQU5cbm5ldC9jYW4vS2NvbmZpZy0yMy1cbm5ldC9jYW4vS2NvbmZpZzoyNDpjb25maWcgQ0FOX1JBV1xubmV0L2Nhbi9LY29uZmlnLTI1LVx0dHJpc3RhdGUgXCYjMzQ7UmF3IENBTiBQcm90b2NvbCAocmF3IGFjY2VzcyB3aXRoIENBTi1JRCBmaWx0ZXJpbmcpXCYjMzQ7XG4tLVxubmV0L2Nhbi9LY29uZmlnLTMzLVxubmV0L2Nhbi9LY29uZmlnOjM0OmNvbmZpZyBDQU5fQkNNXG5uZXQvY2FuL0tjb25maWctMzUtXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNhc3QgTWFuYWdlciBDQU4gUHJvdG9jb2wgKHdpdGggY29udGVudCBmaWx0ZXJpbmcpXCYjMzQ7XG4tLVxubmV0L2Nhbi9LY29uZmlnLTQ1LVxubmV0L2Nhbi9LY29uZmlnOjQ2OmNvbmZpZyBDQU5fR1dcbm5ldC9jYW4vS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0NBTiBHYXRld2F5L1JvdXRlciAod2l0aCBuZXRsaW5rIGNvbmZpZ3VyYXRpb24pXCYjMzQ7XG4tLVxubmV0L2Nhbi9LY29uZmlnPTU3PXNvdXJjZSBcJiMzNDtuZXQvY2FuL2oxOTM5L0tjb25maWdcJiMzNDtcbm5ldC9jYW4vS2NvbmZpZy01OC1cbm5ldC9jYW4vS2NvbmZpZzo1OTpjb25maWcgQ0FOX0lTT1RQXG5uZXQvY2FuL0tjb25maWctNjAtXHR0cmlzdGF0ZSBcJiMzNDtJU08gMTU3NjUtMiBDQU4gdHJhbnNwb3J0IHByb3RvY29sXCYjMzQ7XG4tLVxubmV0L2Nhbi9qMTkzOS9LY29uZmlnLTUtXG5uZXQvY2FuL2oxOTM5L0tjb25maWc6Njpjb25maWcgQ0FOX0oxOTM5XG5uZXQvY2FuL2oxOTM5L0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1NBRSBKMTkzOVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjgxCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGFja2xpbmcgdGhpcyBwYXJ0aWN1bGFyIHRhc2s6CgoqKkV4YW1pbmluZyBDQU4gRGVwZW5kZW5jaWVzIGluIEtjb25maWcqKgoKUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBDb250cm9sbGVyIEFyZWEgTmV0d29yaywgb3IgQ0FOLiBNeSBpbnN0aW5jdCwgYW5kIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhhdCB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gVGhhdCYjMzk7cyB0aGUgZ28tdG8gcGxhY2UgZm9yIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBDQU4gZnVuY3Rpb25hbGl0eS4gSXQmIzM5O3Mgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhcmUgbGlrZWx5IGRlZmluZWQg4oCTIHRoZSBvdGhlciBmZWF0dXJlcyBvciBjb21wb25lbnRzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGJlZm9yZSBDQU4gc3VwcG9ydCBjYW4gZXZlbiBiZSBjb25zaWRlcmVkLiBUaGlzIEtjb25maWcgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgQm9vbGVhbiBvcHRpb25zIGZvciBlbmFibGluZyB2YXJpb3VzIGFzcGVjdHMgb2YgQ0FOLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSByZWFkIHRocm91Z2ggaXQgYW5kIGlkZW50aWZ5IHdoaWNoIG9wdGlvbnMgcmVxdWlyZSB3aGF0LCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIENBTiBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBuZXR3b3JrIGxheWVyIGNvcmUgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRtZW51Y29uZmlnIENBTlxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7Q0FOIGJ1cyBzdWJzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIGlzIGEgc2xvdyAodXAgdG8gMU1iaXQvcykgc2VyaWFsXG4gIDExOlx0XHQgIGNvbW11bmljYXRpb25zIHByb3RvY29sLiBEZXZlbG9wbWVudCBvZiB0aGUgQ0FOIGJ1cyBzdGFydGVkIGluXG4gIDEyOlx0XHQgIDE5ODMgYXQgUm9iZXJ0IEJvc2NoIEdtYkgsIGFuZCB0aGUgcHJvdG9jb2wgd2FzIG9mZmljaWFsbHlcbiAgMTM6XHRcdCAgcmVsZWFzZWQgaW4gMTk4Ni4gVGhlIENBTiBidXMgd2FzIG9yaWdpbmFsbHkgbWFpbmx5IGZvciBhdXRvbW90aXZlLFxuICAxNDpcdFx0ICBidXQgaXMgbm93IHdpZGVseSB1c2VkIGluIG1hcmluZSAoTk1FQTIwMDApLCBpbmR1c3RyaWFsLCBhbmQgbWVkaWNhbFxuICAxNTpcdFx0ICBhcHBsaWNhdGlvbnMuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIENBTiBuZXR3b3JrIHByb3RvY29sIGZhbWlseVxuICAxNjpcdFx0ICBQRl9DQU4gaXMgY29udGFpbmVkIGluIFx1MDAzY0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4ucnN0XHUwMDNlLlxuICAxNzpcdFxuICAxODpcdFx0ICBJZiB5b3Ugd2FudCBDQU4gc3VwcG9ydCB5b3Ugc2hvdWxkIHNheSBZIGhlcmUgYW5kIGFsc28gdG8gdGhlXG4gIDE5Olx0XHQgIHNwZWNpZmljIGRyaXZlciBmb3IgeW91ciBjb250cm9sbGVyKHMpIHVuZGVyIHRoZSBOZXR3b3JrIGRldmljZVxuICAyMDpcdFx0ICBzdXBwb3J0IHNlY3Rpb24uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMjUKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIENBTiBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgQ0FOIGNvbmZpZ3VyYXRpb25zLCBhbmQgaXQgc2VlbXMgbGlrZSBgQ0FOYCBhbmQgYENBTl9ERVZgIGFyZSB0aGUga2V5IHBsYXllcnMuIEJ1dCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgc2V0dXAsIEkmIzM5O20gZ29pbmcgdG8gbmVlZCBhIHZpcnR1YWwgQ0FOIGRldmljZSwgc29tZXRoaW5nIGxpa2UgYENBTl9WQ0FOYCBvciBgQ0FOX1ZYQ0FOYC4gSXQgd291bGQgYmUgaWRlYWwgZm9yIGEgcXVpY2sgdGVzdC4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGFuZCBzZWUgd2hhdCB2aXJ0dWFsIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyB0aGV5JiMzOTtyZSBpbXBsZW1lbnRlZC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBrZXJuZWwgaGFzIHRvIG9mZmVyIGluIHRoaXMgYXJlYS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENBTl9WQ0FOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0yMz1pZiBDQU5fREVWXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0yNC1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjI1OmNvbmZpZyBDQU5fVkNBTlxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMjYtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIExvY2FsIENBTiBJbnRlcmZhY2UgKHZjYW4pXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MjkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIGhlcmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBgQ0FOX1ZDQU5gIGZlYXR1cmUgdXNlcyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgZnVuY3Rpb24uIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiwgSSBrbm93IGhvdyB0byB0cmFjayB0aGlzIGRvd24gZWZmaWNpZW50bHkuCgpGaXJzdCwgSSYjMzk7bGwgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyBjYWxsZWQgYnkgYGNhbl9nZXRfYml0dGltaW5nYC4gT2theSwgdGhhdCYjMzk7cyBzdGVwIG9uZS4gTm93LCB3aGVyZSBpcyBgY2FuX2dldF9iaXR0aW1pbmdgIHVzZWQ/IEFoLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIGNhbGxlZCBieSBgY2FuX2NoYW5nZWxpbmtgLiBUaGF0JiMzOTtzIGluIGBkcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIGl0JiMzOTtzIHRoZSBuZXR3b3JrLWxldmVsIGNvbmZpZ3VyYXRpb24uCgpTbyB0aGUgY2FsbCBzdGFjayBpczogYGNhbl9jYWxjX2JpdHRpbWluZ2AgLSZndDsgYGNhbl9nZXRfYml0dGltaW5nYCAtJmd0OyBgY2FuX2NoYW5nZWxpbmtgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM9MTE2PWNhbl92YWxpZGF0ZV9iaXRyYXRlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nICpidCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTEzMy1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM6MTM0OmludCBjYW5fZ2V0X2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTEzNS1cdFx0ICAgICAgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yyxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz00MzY9c3RhdGljIGludCBjYW5fZGJ0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTQ3NC1cdG1lbWNweShcdTAwMjZkYnQsIG5sYV9kYXRhKGRhdGFfYml0dGltaW5nKSwgc2l6ZW9mKGRidCkpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6NDc1Olx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZkYnQsIGRidF9wYXJhbXMtXHUwMDNlZGF0YV9iaXR0aW1pbmdfY29uc3QsXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy00NzYtXHRcdFx0XHRkYnRfcGFyYW1zLVx1MDAzZWRhdGFfYml0cmF0ZV9jb25zdCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz01OTQ9c3RhdGljIGludCBjYW5fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmxhdHRyICp0YltdLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTYyNC1cdFx0bWVtY3B5KFx1MDAyNmJ0LCBubGFfZGF0YShkYXRhW0lGTEFfQ0FOX0JJVFRJTUlOR10pLCBzaXplb2YoYnQpKTtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjYyNTpcdFx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZidCxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTYyNi1cdFx0XHRcdFx0cHJpdi1cdTAwM2ViaXR0aW1pbmdfY29uc3QsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyOTEKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGBjYW5fY2hhbmdlbGlua2AgYW5kIGB2Y2FuYCBTdXBwb3J0KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYGNhbl9jaGFuZ2VsaW5rYC4gSSBrbm93IHRoYXQmIzM5O3MgYSBjcnVjaWFsIHBhcnQgb2YgbmV0bGluaywgYnV0IEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCBpZiBgdmNhbmAsIHRoZSB2aXJ0dWFsIENBTiBpbnRlcmZhY2UsIGFjdHVhbGx5IGltcGxlbWVudHMgaXQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMgb2YgdGhlIHZpcnR1YWwgaW50ZXJmYWNlLiBUaGUgYmVzdCB3YXkgdG8gY2hlY2sgdGhpcyBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9jYW4vdmNhbi5jYC4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHJldmVhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92Y2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTAxCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlZjYW4gSW1wbGVtZW50YXRpb24gRGl2ZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHZpcnR1YWwgQ0FOIGludGVyZmFjZSwgYHZjYW5gLCBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIHdvdWxkIGxvZ2ljYWxseSByZXNpZGUuIFRoZSBwbGFjZSB0byBzdGFydCBkaXZpbmcgZGVlcGVyIGlzIGRlZmluaXRlbHkgd2l0aCB0aGUgYHJ0bmxfbGlua19vcHNgIHN0cnVjdHVyZS4gVGhpcyBpcyB0aGUgY3J1Y2lhbCBwb2ludCBmb3IgYSB2aXJ0dWFsIGRldmljZSwgYXMgaXQgZGVmaW5lcyB0aGUgbmV0bGluayBvcGVyYXRpb25zIGEgZHJpdmVyIHByb3ZpZGVzIHRvIGNvbmZpZ3VyZSBhbmQgY29udHJvbCB0aGUgbGluay4gSSYjMzk7bGwgbmVlZCB0byBzY3J1dGluaXplIGhvdyBgdmNhbmAgcG9wdWxhdGVzIGFuZCB1dGlsaXplcyB0aGlzIHN0cnVjdHVyZSB0byBmdWxseSBncmFzcCBpdHMgYmVoYXZpb3Igd2l0aGluIHRoZSBicm9hZGVyIGtlcm5lbCBuZXR3b3JraW5nIGZyYW1ld29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnRubF9saW5rX29wcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92Y2FuLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTg5LVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTkxLVx0LmtpbmQgPSBEUlZfTkFNRSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgzNgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IERpdmluZyBpbnRvIGB2Y2FuX2xpbmtfb3BzYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHNpbXBsZTogdGltZSB0byBkaXNzZWN0IGB2Y2FuX2xpbmtfb3BzYC4gTm8gcHJlYW1ibGUsIGp1c3Qgc3RyYWlnaHQgdG8gdGhlIHBvaW50LiBJJiMzOTttIGFzc3VtaW5nLCBnaXZlbiBteSBsZXZlbCBvZiBleHBlcnRpc2UsIHRoYXQgSSYjMzk7bSBhbHJlYWR5IGZhbWlsaWFyIHdpdGggdGhlIGJyb2FkZXIgQ0FOIG5ldHdvcmtpbmcgYXJjaGl0ZWN0dXJlIGFuZCB0aGUgcHVycG9zZSBvZiB0aGVzZSBvcGVyYXRpb25zLiBUaGlzIHN1Z2dlc3RzIGFuIGludmVzdGlnYXRpb24sIGVpdGhlciB0byB1bmRlcnN0YW5kIGl0cyBvcGVyYXRpb24sIGRlYnVnIGl0IG9yIHRvIG1vZGlmeSBpdC4gSSYjMzk7bSBnb2luZyBpbiB3aXRoIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIHJlYWR5IHRvIGdldCB0byB0aGUgY29yZSBtZWNoYW5pY3MuIFRoZXJlJiMzOTtzIG5vIG5lZWQgZm9yIGludHJvZHVjdG9yeSBleHBsYW5hdGlvbnMgaGVyZSwganVzdCB0aGUgY29kZS4gSSYjMzk7bSBwcmVwYXJlZCB0byBmb2xsb3cgZnVuY3Rpb24gY2FsbHMsIGV4cGxvcmUgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdW5yYXZlbCBhbnkgY29tcGxleGl0aWVzIHRoZSBpbXBsZW1lbnRhdGlvbiBtaWdodCBob2xkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi92Y2FuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFxuIDE4MTpcdFx0Lyogc2V0IGZsYWdzIGFjY29yZGluZyB0byBkcml2ZXIgY2FwYWJpbGl0aWVzICovXG4gMTgyOlx0XHRpZiAoZWNobylcbiAxODM6XHRcdFx0ZGV2LVx1MDAzZWZsYWdzIHw9IElGRl9FQ0hPO1xuIDE4NDpcdFxuIDE4NTpcdFx0ZGV2LVx1MDAzZW5ldGRldl9vcHNcdFx0PSBcdTAwMjZ2Y2FuX25ldGRldl9vcHM7XG4gMTg2Olx0XHRkZXYtXHUwMDNlZXRodG9vbF9vcHNcdD0gXHUwMDI2dmNhbl9ldGh0b29sX29wcztcbiAxODc6XHRcdGRldi1cdTAwM2VuZWVkc19mcmVlX25ldGRldlx0PSB0cnVlO1xuIDE4ODpcdH1cbiAxODk6XHRcbiAxOTA6XHRzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdmNhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuIDE5MTpcdFx0LmtpbmQgPSBEUlZfTkFNRSxcbiAxOTI6XHRcdC5wcml2X3NpemUgPSBzaXplb2Yoc3RydWN0IGNhbl9tbF9wcml2KSxcbiAxOTM6XHRcdC5zZXR1cCA9IHZjYW5fc2V0dXAsXG4gMTk0Olx0fTtcbiAxOTU6XHRcbiAxOTY6XHRzdGF0aWMgX19pbml0IGludCB2Y2FuX2luaXRfbW9kdWxlKHZvaWQpXG4gMTk3Olx0e1xuIDE5ODpcdFx0cHJfaW5mbyhcJiMzNDtWaXJ0dWFsIENBTiBpbnRlcmZhY2UgZHJpdmVyXFxuXCYjMzQ7KTtcbiAxOTk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM2OAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDQyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBjYW5fY2hhbmdlbGlua2AgYW5kIGB2Y2FuYCoqCgpIbW0sIGl0IHNlZW1zIGxpa2UgYHZjYW5gLCB3aGljaCBJJiMzOTttIHByZXR0eSBmYW1pbGlhciB3aXRoLCBkb2VzbiYjMzk7dCBhY3R1YWxseSBsZXZlcmFnZSB0aGUgYGNhbl9jaGFuZ2VsaW5rYCBmdW5jdGlvbmFsaXR5LiBUaGF0JiMzOTtzIGEgYml0IHVuZXhwZWN0ZWQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHNvbWUgY29kZSBhbmQgbm90aWNlZCBpdHMgYWJzZW5jZSwgYW5kIGl0IHBpcXVlZCBteSBjdXJpb3NpdHkuCgpMZXQgbWUgc2VlLi4uIHJpZ2h0LCAqb2YgY291cnNlKi4gSSBzZWVtIHRvIHJlY2FsbCBub3cgdGhhdCBgY2FuX2NoYW5nZWxpbmtgIGlzIGRlZmluZWQgYW5kIHJlZ2lzdGVyZWQgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmNgLiBUaGF0IGZpbGUgbWFrZXMgdGhlIGxpbms7IGl0JiMzOTtzIHRoZSBjb3JlIG9mIHRoZSBuZXRsaW5rIGludGVyZmFjZSBmb3IgQ0FOIGRldmljZXMuIFNvLCBteSBpbml0aWFsIHRob3VnaHQgd2FzIHBhcnRpYWxseSBjb3JyZWN0IC0gaXQmIzM5O3MgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIC0gaXQmIzM5O3MganVzdCBub3QgdXRpbGl6ZWQgd2hlcmUgSSB0aG91Z2h0IGl0IHdvdWxkIGJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBgdmNhbmAgYWN0dWFsbHkgaGFuZGxlcyBsaW5rIGNoYW5nZXMgYW5kIGlmIGl0IGRvZXMgc28gdGhyb3VnaCBhbm90aGVyIG1lY2hhbmlzbS4gUGVyaGFwcyB0aGVyZSYjMzk7cyBhbiBpbnRlcm5hbCBhcHByb2FjaCwgb3IgaXQgdXNlcyBhIHJlbGF0ZWQgbmV0bGluayBmdW5jdGlvbiB0byBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGB2Y2FuYCBkcml2ZXIgaXRzZWxmIHRvIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTUyND1zdGF0aWMgaW50IGNhbl9wd21fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTU5My1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjU5NDpzdGF0aWMgaW50IGNhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy01OTUtXHRcdFx0ICBzdHJ1Y3QgbmxhdHRyICpkYXRhW10sXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTA5MD1zdHJ1Y3QgcnRubF9saW5rX29wcyBjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDk3LVx0Lm5ld2xpbmtcdD0gY2FuX25ld2xpbmssXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzoxMDk4Olx0LmNoYW5nZWxpbmtcdD0gY2FuX2NoYW5nZWxpbmssXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDk5LVx0LmRlbGxpbmtcdD0gY2FuX2RlbGxpbmssXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NjAKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipDaGVja2luZyBmb3IgRXhwb3J0ZWQgRnVuY3Rpb25hbGl0eSoqCgpPa2F5LCBzbyBgY2FuX2xpbmtfb3BzYC4uLiBJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IGlmIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBvYmplY3QgaXMgYWN0dWFsbHkgZXhwb3NlZCBmb3IgdXNlIG91dHNpZGUgb2YgaXRzIGltbWVkaWF0ZSBzY29wZS4gSXMgaXQgc29tZXRoaW5nIEkgY2FuIGRpcmVjdGx5IGNhbGwgb3IgYWNjZXNzIGZyb20gZWxzZXdoZXJlLCBvciBpcyBpdCBoaWRkZW4sIHByaXZhdGUsIG9yIG9ubHkgbWVhbnQgZm9yIGludGVybmFsIHVzZSB3aXRoaW4gYSBtb2R1bGU/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGxldmVyYWdlIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBpbiBteSBjdXJyZW50IHRhc2suIFRpbWUgdG8gdmVyaWZ5IGl0cyBleHBvcnQgc3RhdHVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjYW5fbGlua19vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM9NjExPWludCByZWdpc3Rlcl9jYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0NC1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjQ1Olx0ZGV2LVx1MDAzZXJ0bmxfbGlua19vcHMgPSBcdTAwMjZjYW5fbGlua19vcHM7XG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0Ni1cdG5ldGlmX2NhcnJpZXJfb2ZmKGRldik7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz02NjI9c3RydWN0IGNhbl9wcml2ICpzYWZlX2NhbmRldl9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY2My17XG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjY2NDpcdGlmIChkZXYtXHUwMDNldHlwZSAhPSBBUlBIUkRfQ0FOIHx8IGRldi1cdTAwM2VydG5sX2xpbmtfb3BzICE9IFx1MDAyNmNhbl9saW5rX29wcylcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmMtNjY1LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz0xMDg2PXN0YXRpYyB2b2lkIGNhbl9kZWxsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtMTA4OS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjEwOTA6c3RydWN0IHJ0bmxfbGlua19vcHMgY2FuX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDkxLVx0LmtpbmRcdFx0PSBcJiMzNDtjYW5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTEwNj1pbnQgY2FuX25ldGxpbmtfcmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMDcte1xuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6MTEwODpcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2Y2FuX2xpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMDktfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTExMTE9dm9pZCBjYW5fbmV0bGlua191bnJlZ2lzdGVyKHZvaWQpXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMTEyLXtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjExMTM6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZjYW5fbGlua19vcHMpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtMTExNC19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTg5LVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMTkxLVx0LmtpbmQgPSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jPTE5Nj1zdGF0aWMgX19pbml0IGludCB2Y2FuX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0yMDItXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jOjIwMzpcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2dmNhbl9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTIwNC19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0yMDY9c3RhdGljIF9fZXhpdCB2b2lkIHZjYW5fY2xlYW51cF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMjA3LXtcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmM6MjA4Olx0cnRubF9saW5rX3VucmVnaXN0ZXIoXHUwMDI2dmNhbl9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTIwOS19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MTgxPXN0YXRpYyB2b2lkIHZ4Y2FuX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAwLS8qIGZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHJ0bmxfY3JlYXRlX2xpbmsoKSAqL1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MjAxOnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcztcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIwMi1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTIwMz1zdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMzYtXHRwZWVyID0gcnRubF9jcmVhdGVfbGluayhwZWVyX25ldCwgaWZuYW1lLCBuYW1lX2Fzc2lnbl90eXBlLFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MjM3Olx0XHRcdFx0XHUwMDI2dnhjYW5fbGlua19vcHMsIHRicCwgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIzOC1cdGlmIChJU19FUlIocGVlcikpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzA4PXN0YXRpYyBzdHJ1Y3QgbmV0ICp2eGNhbl9nZXRfbGlua19uZXQoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMTUtXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMTY6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZ4Y2FuX2xpbmtfb3BzID0ge1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzE3LVx0LmtpbmRcdFx0PSBEUlZfTkFNRSxcbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0zMjg9c3RhdGljIF9faW5pdCBpbnQgdnhjYW5faW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzMS1cbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMzMjpcdHJldHVybiBydG5sX2xpbmtfcmVnaXN0ZXIoXHUwMDI2dnhjYW5fbGlua19vcHMpO1xuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMzMzLX1cbi0tXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0zMzU9c3RhdGljIF9fZXhpdCB2b2lkIHZ4Y2FuX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzNi17XG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMzc6XHRydG5sX2xpbmtfdW5yZWdpc3RlcihcdTAwMjZ2eGNhbl9saW5rX29wcyk7XG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMzgtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTI5CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXNzdW1pbmcgdGhlIGNvbnRleHQgaXMgbXkgYXJlYSBvZiBleHBlcnRpc2U6CgoqKkNBTiBEZXZpY2UgUmVnaXN0cmF0aW9uIGFuZCBPcGVyYXRpb24gVGhvdWdodHMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIGBjYW5fbGlua19vcHNgIHN0cnVjdHVyZSBpcyB0aGUga2V5IHRvIG9wZXJhdGlvbnMgb24gQ0FOIGRldmljZXMsIGFuZCBzcGVjaWZpY2FsbHksIGl0JiMzOTtzIHVzZWQgd2l0aCBkZXZpY2VzIHRoYXQgYXJlIGJyb3VnaHQgaW50byB0aGUgc3lzdGVtIHZpYSBgcmVnaXN0ZXJfY2FuZGV2YC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlLiBCdXQgaGVyZSYjMzk7cyB0aGUga2lja2VyOiB2aXJ0dWFsIENBTiBkZXZpY2VzLCBsaWtlIGB2Y2FuYCBhbmQgYHZ4Y2FuYCwgdGhleSBvcGVyYXRlIGEgYml0IGRpZmZlcmVudGx5LiBUaGV5IGhhdmUgdGhlaXIgb3duIGBydG5sX2xpbmtfb3BzYCBzdHJ1Y3R1cmVzLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHNwcmluZ3MgdG8gbWluZCBpcywgZG8gYHZjYW5gIG9yIGB2eGNhbmAgKmFjdHVhbGx5KiB1c2UgYHJlZ2lzdGVyX2NhbmRldmA/IE9yIGRvIHRoZXkgaGF2ZSB0aGVpciBvd24gaW5kZXBlbmRlbnQgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIHRvIHNlZSB3aGF0IHRoZXkgdXNlLiBJdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbiBiZWNhdXNlIGl0IGRpY3RhdGVzIGhvdyB0aGVzZSB2aXJ0dWFsIGludGVyZmFjZXMgYXJlIG1hbmFnZWQgd2l0aGluIHRoZSBicm9hZGVyIENBTiBzdWJzeXN0ZW0sIGFuZCB3aGV0aGVyIHRoZXkgZnVsbHkgYWxpZ24gd2l0aCB0aGUgc3RhbmRhcmQgcGh5c2ljYWwgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmcmFtZXdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JlZ2lzdGVyX2NhbmRldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDUxNCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmM9MTA0Nj1zdGF0aWMgaW50IGF0OTFfY2FuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMtMTEzNi1cbmRyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jOjExMzc6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jLTExMzgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM9OTI5PXN0YXRpYyBpbnQgYnhjYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDE2LVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM6MTAxNzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jLTEwMTgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM9MTAzND1zdGF0aWMgdm9pZCBieGNhbl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDM4LVxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM6MTAzOTpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmMtMTA0MC1cdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZWNsayk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYz0xMzY3PWludCByZWdpc3Rlcl9jX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jLTEzNzktXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jOjEzODA6XHRyZXR1cm4gcmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jLTEzODEtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmM9MTM4ND12b2lkIHVucmVnaXN0ZXJfY19jYW5fZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jLTEzODUte1xuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYzoxMzg2Olx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM4Ny19XG4tLVxuZHJpdmVycy9uZXQvY2FuL2NhbjMyNy5jPTEwMDY9c3RhdGljIGludCBjYW4zMjdfbGRpc2Nfb3BlbihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDQyLVx0LyogTGV0ICYjMzk7ZXIgcmlwICovXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmM6MTA0MzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihlbG0tXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDQ0LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYz0xMDYxPXN0YXRpYyB2b2lkIGNhbjMyN19sZGlzY19jbG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDY1LVx0LyogdW5yZWdpc3Rlcl9uZXRkZXYoKSBjYWxscyAubmRvX3N0b3AoKSBzbyB3ZSBkb24mIzM5O3QgaGF2ZSB0by4gKi9cbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYzoxMDY2Olx0dW5yZWdpc3Rlcl9jYW5kZXYoZWxtLVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmMtMTA2Ny1cbi0tXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYz04NDM9aW50IHJlZ2lzdGVyX2NjNzcwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODY5LVxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM6ODcwOlx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODcxLX1cbi0tXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYz04NzQ9dm9pZCB1bnJlZ2lzdGVyX2NjNzcwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODc2LVx0c2V0X3Jlc2V0X21vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9jYzc3MC9jYzc3MC5jOjg3NzpcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYy04NzgtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmM9MTM0Nj1pbnQgY3R1Y2FuX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkciwgaW50IGlycSwgdW5zaWduZWQgaW50IG50eGJ1ZnMsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYy0xNDM0LVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYzoxNDM1Olx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYy0xNDM2LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYz0yMTc9c3RhdGljIHZvaWQgY3R1Y2FuX3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTIzOS1cbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYzoyNDA6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jLTI0MS1cbi0tXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGxhdGZvcm0uYz04OT1zdGF0aWMgdm9pZCBjdHVjYW5fcGxhdGZvcm1fcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTUtXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGxhdGZvcm0uYzo5NjpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTctXHRwbV9ydW50aW1lX2Rpc2FibGUoXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM9NTk5PWNhbl9iaXR0aW1pbmdfY29uc3RfdmFsaWQoY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yylcbi0tXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTYxMC0vKiBSZWdpc3RlciB0aGUgQ0FOIG5ldHdvcmsgZGV2aWNlICovXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjYxMTppbnQgcmVnaXN0ZXJfY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTYxMi17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NDktfVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NTA6RVhQT1JUX1NZTUJPTF9HUEwocmVnaXN0ZXJfY2FuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmMtNjUxLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTItLyogVW5yZWdpc3RlciB0aGUgQ0FOIG5ldHdvcmsgZGV2aWNlICovXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjY1Mzp2b2lkIHVucmVnaXN0ZXJfY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1NC17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTYtfVxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NTc6RVhQT1JUX1NZTUJPTF9HUEwodW5yZWdpc3Rlcl9jYW5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTgtXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jPTIzMj1zdGF0aWMgaW50IF9faW5pdCBkdW1teV9jYW5faW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNTktXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjYwOlx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNjEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jPTI3Mj1zdGF0aWMgdm9pZCBfX2V4aXQgZHVtbXlfY2FuX2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjc2LVx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O2R1bW15LWNhbiBieWUgYnllXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNzc6XHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3OC1cdGZyZWVfY2FuZGV2KGRldik7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM9MzI3PXN0YXRpYyB2b2lkIHBjaTQwMl91bnJlZ2lzdGVyX2NvcmUoc3RydWN0IGFjY19jb3JlICpjb3JlKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTMyOS1cdG5ldGRldl9pbmZvKGNvcmUtXHUwMDNlbmV0ZGV2LCBcJiMzNDt1bnJlZ2lzdGVyXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jOjMzMDpcdHVucmVnaXN0ZXJfY2FuZGV2KGNvcmUtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTMzMS1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYz0zMzY9c3RhdGljIGludCBwY2k0MDJfaW5pdF9jb3JlcyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy0zODktXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYzozOTA6XHRcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmMtMzkxLVx0XHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM9MTg3Mj1zdGF0aWMgaW50IHJlZ2lzdGVyX2ZsZXhjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYy0xOTE5LVxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM6MTkyMDpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmMtMTkyMS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM9MTkzOT1zdGF0aWMgdm9pZCB1bnJlZ2lzdGVyX2ZsZXhjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jLTE5NDAte1xuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM6MTk0MTpcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYy0xOTQyLX1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYz0xNTY5PXN0YXRpYyBpbnQgZ3JjYW5fc2V0dXBfbmV0ZGV2KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE2MjQtXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYzoxNjI1Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNjI2LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYz0xNjk5PXN0YXRpYyB2b2lkIGdyY2FuX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNzAzLVxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM6MTcwNDpcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7IC8qIFdpbGwgaW4gdHVybiBjYWxsIGdyY2FuX2Nsb3NlICovXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNzA1LVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmM9OTUzPXN0YXRpYyBpbnQgaWZpX2NhbmZkX3BsYXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMTktXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jOjEwMjA6XHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMjEtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYz0xMDM2PXN0YXRpYyB2b2lkIGlmaV9jYW5mZF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmMtMTAzOS1cbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmM6MTA0MDpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYy0xMDQxLVx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYz0xODg5PXN0YXRpYyBpbnQgaWNhbjNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jLTIwMDEtXHQvKiByZWdpc3RlciB3aXRoIHRoZSBMaW51eCBDQU4gbGF5ZXIgKi9cbmRyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmM6MjAwMjpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmMtMjAwMy1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz0xMDI3PXN0YXRpYyBpbnQga3Zhc2VyX3BjaWVmZF9yZWdfY2FuZGV2KHN0cnVjdCBrdmFzZXJfcGNpZWZkICpwY2llKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwMzEtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBwY2llLVx1MDAzZW5yX2NoYW5uZWxzOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6MTAzMjpcdFx0aW50IHJldCA9IHJlZ2lzdGVyX2NhbmRldihwY2llLVx1MDAzZWNhbltpXS1cdTAwM2VjYW4uZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwMzMtXG4tLVxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtMTAzOC1cdFx0XHRmb3IgKGogPSAwOyBqIFx1MDAzYyBpOyBqJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jOjEwMzk6XHRcdFx0XHR1bnJlZ2lzdGVyX2NhbmRldihwY2llLVx1MDAzZWNhbltqXS1cdTAwM2VjYW4uZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwNDAtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYz0xODczPXN0YXRpYyB2b2lkIGt2YXNlcl9wY2llZmRfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTE4ODAtXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYzoxODgxOlx0XHR1bnJlZ2lzdGVyX2NhbmRldihjYW4tXHUwMDNlY2FuLmRldik7XG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYy0xODgyLVx0XHR0aW1lcl9kZWxldGUoXHUwMDI2Y2FuLVx1MDAzZWJlY19wb2xsX3RpbWVyKTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYz0yMzI5PXN0YXRpYyBpbnQgcmVnaXN0ZXJfbV9jYW5fZGV2KHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2Rldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYy0yMzM5LVxuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmM6MjM0MDpcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jLTIzNDEtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jPTI1ODk9dm9pZCBtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldilcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jLTI1OTAte1xuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmM6MjU5MTpcdHVucmVnaXN0ZXJfY2FuZGV2KGNkZXYtXHUwMDNlbmV0KTtcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jLTI1OTItXHRpZiAoY2Rldi1cdTAwM2Vpc19wZXJpcGhlcmFsKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jPTYxNj1pbnQgcmVnaXN0ZXJfbXNjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1zY2FuX2Nsa3NyYylcbi0tXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NTEtXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYzo2NTI6XHRyZXR1cm4gcmVnaXN0ZXJfY2FuZGV2KGRldik7XG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NTMtfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jPTY1NT12b2lkIHVucmVnaXN0ZXJfbXNjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NjAtXHRjbHJiaXRzOChcdTAwMjZyZWdzLVx1MDAzZWNhbmN0bDEsIE1TQ0FOX0NBTkUpO1xuZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmM6NjYxOlx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY2Mi19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jPTU3Mz1zdGF0aWMgaW50IHBjaWVmZF9jYW5fcHJvYmUoc3RydWN0IHBjaWVmZF9ib2FyZCAqcGNpZWZkKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02NjgtXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM6NjY5Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jLTY3MC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM9Njk0PXN0YXRpYyB2b2lkIHBjaWVmZF9jYW5fcmVtb3ZlKHN0cnVjdCBwY2llZmRfY2FuICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02OTYtXHQvKiB1bnJlZ2lzdGVyIChjbG9zZSkgdGhlIGNhbiBkZXZpY2UgdG8gZ28gYmFjayB0byBSU1QgbW9kZSBmaXJzdCAqL1xuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jOjY5NzpcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNldWNhbi5uZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02OTgtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYz03NDc9c3RhdGljIGludCByY2FyX2Nhbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODExLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYzo4MTI6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2Nhbi5jLTgxMy1cdGlmIChlcnIpIHtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM6ODE0Olx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7cmVnaXN0ZXJfY2FuZGV2KCkgZmFpbGVkICVwZVxcblwmIzM0OywgRVJSX1BUUihlcnIpKTtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODE1LVx0XHRnb3RvIGZhaWxfcnBtO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM9ODMwPXN0YXRpYyB2b2lkIHJjYXJfY2FuX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM0LVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYzo4MzU6XHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM2LVx0cG1fcnVudGltZV9kaXNhYmxlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM9MTg2Mz1zdGF0aWMgaW50IHJjYXJfY2FuZmRfY2hhbm5lbF9wcm9iZShzdHJ1Y3QgcmNhcl9jYW5mZF9nbG9iYWwgKmdwcml2LCB1MzIgY2gsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5NzItXHRncHJpdi1cdTAwM2VjaFtwcml2LVx1MDAzZWNoYW5uZWxdID0gcHJpdjtcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYzoxOTczOlx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5NzQtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM6MTk3NTpcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3JlZ2lzdGVyX2NhbmRldigpIGZhaWxlZDogJXBlXFxuXCYjMzQ7LCBFUlJfUFRSKGVycikpO1xuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5NzYtXHRcdGdvdG8gZmFpbF9jYW5kZXY7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jPTE5ODg9c3RhdGljIHZvaWQgcmNhcl9jYW5mZF9jaGFubmVsX3JlbW92ZShzdHJ1Y3QgcmNhcl9jYW5mZF9nbG9iYWwgKmdwcml2LCB1MzIgY2gpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5OTItXHRpZiAocHJpdikge1xuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jOjE5OTM6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmMtMTk5NC1cdFx0bmV0aWZfbmFwaV9kZWwoXHUwMDI2cHJpdi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jPTgwMz1zdGF0aWMgaW50IHJrY2FuZmRfcmVnaXN0ZXIoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgxNS1cbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM6ODE2Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYy04MTctXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM9ODM0PXN0YXRpYyBpbmxpbmUgdm9pZCBya2NhbmZkX3VucmVnaXN0ZXIoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgzNy1cbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM6ODM4Olx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgzOS1cdHBtX3J1bnRpbWVfZGlzYWJsZShuZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYz02ODY9aW50IHJlZ2lzdGVyX3NqYTEwMDBkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMtNjk3LVxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jOjY5ODpcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYy02OTktfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYz03MDI9dm9pZCB1bnJlZ2lzdGVyX3NqYTEwMDBkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMtNzA0LVx0c2V0X3Jlc2V0X21vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYzo3MDU6XHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jLTcwNi19XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYz04MTc9c3RhdGljIGludCBzbGNhbl9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04NTYtXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jOjg1NzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04NTgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYz04NzY9c3RhdGljIHZvaWQgc2xjYW5fY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcbi0tXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jLTg3OS1cbmRyaXZlcnMvbmV0L2Nhbi9zbGNhbi9zbGNhbi1jb3JlLmM6ODgwOlx0dW5yZWdpc3Rlcl9jYW5kZXYoc2wtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zbGNhbi9zbGNhbi1jb3JlLmMtODgxLVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jPTY2Mz1zdGF0aWMgaW50IHNvZnRpbmdfbmV0ZGV2X3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMtNjY2LVxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM6NjY3Olx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYy02NjgtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM9Njc4PXN0YXRpYyB2b2lkIHNvZnRpbmdfbmV0ZGV2X2NsZWFudXAoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYy02ODAtXHRzeXNmc19yZW1vdmVfZ3JvdXAoXHUwMDI2bmV0ZGV2LVx1MDAzZWRldi5rb2JqLCBcdTAwMjZuZXRkZXZfc3lzZnNfZ3JvdXApO1xuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM6NjgxOlx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jLTY4Mi1cdGZyZWVfY2FuZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYz04Mjg9c3RhdGljIGludCBoaTMxMTBfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05MzUtXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jOjkzNjpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXQpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05MzctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvaGkzMTF4LmM9OTU4PXN0YXRpYyB2b2lkIGhpMzExMF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05NjItXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jOjk2MzpcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldCk7XG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jLTk2NC1cbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYz0xMzMxPXN0YXRpYyBpbnQgbWNwMjUxeF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDQzLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ0NDpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXQpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ0NS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDUyLVx0XHRkZXZfZXJyX3Byb2JlKFx1MDAyNnNwaS1cdTAwM2VkZXYsIHJldCwgXCYjMzQ7Q2Fubm90IHNldCB1cCBncGlvc1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYzoxNDUzOlx0XHRnb3RvIG91dF91bnJlZ2lzdGVyX2NhbmRldjtcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0NTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ1OC1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NTk6b3V0X3VucmVnaXN0ZXJfY2FuZGV2OlxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ2MDpcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldCk7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDYxLVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jPTE0NzY9c3RhdGljIHZvaWQgbWNwMjUxeF9jYW5fcmVtb3ZlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ4MC1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0ODE6XHR1bnJlZ2lzdGVyX2NhbmRldihuZXQpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ4Mi1cbi0tXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jPTIwODM9c3RhdGljIGludCBtY3AyNTF4ZmRfcmVnaXN0ZXIoc3RydWN0IG1jcDI1MXhmZF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjEyNy1cbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjEyODpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjEyOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTMzLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjEzNDpcdFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxMzUtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTQxLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE0MjpcdFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNDMtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTQ3LVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMTQ4Om91dF91bnJlZ2lzdGVyX2NhbmRldjpcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE0OTpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTUwLW91dF9ydW50aW1lX2Rpc2FibGU6XG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYz0yMTYyPXN0YXRpYyBpbmxpbmUgdm9pZCBtY3AyNTF4ZmRfdW5yZWdpc3RlcihzdHJ1Y3QgbWNwMjUxeGZkX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTY1LVxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMTY2Olx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNjctXG4tLVxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jPTgyMD1zdGF0aWMgaW50IHN1bjRpY2FuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jLTg5Ni1cbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYzo4OTc6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYy04OTgtXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYz04NDY9c3RhdGljIGludCB0aV9oZWNjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYy05NDAtXG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jOjk0MTpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTQyLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYzo5NDM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3JlZ2lzdGVyX2NhbmRldigpIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jLTk0NC1cdFx0Z290byBwcm9iZV9leGl0X29mZmxvYWQ7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYz05NjQ9c3RhdGljIHZvaWQgdGlfaGVjY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jLTk2OC1cbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmM6OTY5Olx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jLTk3MC1cdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVx1MDAzZWNsayk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmM9MTAzMz1zdGF0aWMgaW50IGVtc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMtMTA5NS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZW1zX3VzYi5jOjEwOTY6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZW1zX3VzYi5jLTEwOTctXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9lc2RfdXNiLmM9MTIwNj1zdGF0aWMgaW50IGVzZF91c2JfcHJvYmVfb25lX25ldChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgaW50IGluZGV4KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYi5jLTEyNzMtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYzoxMjc0Olx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYy0xMjc1LVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmM9MjA4OT1zdGF0aWMgaW50IGVzNTh4X2luaXRfbmV0ZGV2KHN0cnVjdCBlczU4eF9kZXZpY2UgKmVzNTh4X2RldiwgaW50IGNoYW5uZWxfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMjExMi1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmM6MjExMzpcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYy0yMTE0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jPTIxMzQ9c3RhdGljIHZvaWQgZXM1OHhfZnJlZV9uZXRkZXZzKHN0cnVjdCBlczU4eF9kZXZpY2UgKmVzNTh4X2Rldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTIxNDItXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjIxNDM6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTIxNDQtXHRcdGRldmxpbmtfcG9ydF91bnJlZ2lzdGVyKFx1MDAyNmVzNTh4X3ByaXYobmV0ZGV2KS1cdTAwM2VkZXZsaW5rX3BvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmM9MTE0ND1zdGF0aWMgaW50IGY4MTYwNF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5jLTEyMDgtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5jOjEyMDk6XHRcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9mODE2MDQuYy0xMjEwLVx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYz0xMzE3PXN0YXRpYyBzdHJ1Y3QgZ3NfY2FuICpnc19tYWtlX2NhbmRldih1bnNpZ25lZCBpbnQgY2hhbm5lbCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE0OTItXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jOjE0OTM6XHRyYyA9IHJlZ2lzdGVyX2NhbmRldihkZXYtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMtMTQ5NC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmM9MTUxMD1zdGF0aWMgdm9pZCBnc19kZXN0cm95X2NhbmRldihzdHJ1Y3QgZ3NfY2FuICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE1MTEte1xuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYzoxNTEyOlx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2LVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE1MTMtXHRjYW5fcnhfb2ZmbG9hZF9kZWwoXHUwMDI2ZGV2LVx1MDAzZW9mZmxvYWQpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYz04MDQ9c3RhdGljIHZvaWQga3Zhc2VyX3VzYl9yZW1vdmVfaW50ZXJmYWNlcyhzdHJ1Y3Qga3Zhc2VyX3VzYiAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy04MTQtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6ODE1Olx0XHR1bnJlZ2lzdGVyX2NhbmRldihwcml2LVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtODE2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYz04MzM9c3RhdGljIGludCBrdmFzZXJfdXNiX2luaXRfb25lKHN0cnVjdCBrdmFzZXJfdXNiICpkZXYsIGludCBjaGFubmVsKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy05MTAtXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6OTExOlx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtOTEyLVx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYz04MDc9c3RhdGljIGludCBtY2JhX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODU5LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg2MDpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg2MS1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODc3LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg3ODpcdFx0Z290byBjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2O1xuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg3OS1cdH1cbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODg0LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg4NTpjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2OlxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg4NjpcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy04ODctXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jPTg5NT1zdGF0aWMgdm9pZCBtY2JhX3VzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy05MDItXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6OTAzOlx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTkwNC1cdG1jYmFfdXJiX3VubGluayhwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYz03MjE9c3RhdGljIGludCBuY3Q2Njk0X2NhbmZkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmMtNzg2LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmM6Nzg3Olx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KHByaXYtXHUwMDNlbmRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy03ODgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jPTgwND1zdGF0aWMgdm9pZCBuY3Q2Njk0X2NhbmZkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jLTgxMS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jOjgxMjpcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmMtODEzLVx0Y2FuX3J4X29mZmxvYWRfZGVsKFx1MDAyNnByaXYtXHUwMDNlb2ZmbG9hZCk7XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM9OTExPXN0YXRpYyBpbnQgcGVha191c2JfY3JlYXRlX2Rldihjb25zdCBzdHJ1Y3QgcGVha191c2JfYWRhcHRlciAqcGVha191c2JfYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05ODEtXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo5ODI6XHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTk4My1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05OTctXHRcdGlmIChlcnIpXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo5OTg6XHRcdFx0Z290byBsYmxfdW5yZWdpc3Rlcl9jYW5kZXY7XG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05OTktXHR9XG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmMtMTAxOS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jOjEwMjA6bGJsX3VucmVnaXN0ZXJfY2FuZGV2OlxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTAyMTpcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDIyLVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTEwMzY9c3RhdGljIHZvaWQgcGVha191c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDQ5LVxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTA1MDpcdFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTEwNTEtXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmM9MTMwMT1zdGF0aWMgaW50IHVjYW5fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXG4tLVxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmMtMTUyMS1cdC8qIHJlZ2lzdGVyIHRoZSBkZXZpY2UgKi9cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jOjE1MjI6XHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1MjMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jPTE1NDg9c3RhdGljIHZvaWQgdWNhbl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1NTQtXHRpZiAodXApIHtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jOjE1NTU6XHRcdHVucmVnaXN0ZXJfY2FuZGV2KHVwLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYy0xNTU2LVx0XHRmcmVlX2NhbmRldih1cC1cdTAwM2VuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYz05MDE9c3RhdGljIGludCB1c2JfOGRldl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zixcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTYyLVxuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jOjk2MzpcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jLTk2NC1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTcyLVx0XHRuZXRkZXZfZXJyKG5ldGRldiwgXCYjMzQ7Y2FuJiMzOTt0IGdldCBmaXJtd2FyZSB2ZXJzaW9uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYzo5NzM6XHRcdGdvdG8gY2xlYW51cF91bnJlZ2lzdGVyX2NhbmRldjtcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05NzQtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05ODItXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmM6OTgzOmNsZWFudXBfdW5yZWdpc3Rlcl9jYW5kZXY6XG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTg0LVx0dW5yZWdpc3Rlcl9uZXRkZXYocHJpdi1cdTAwM2VuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM9NDI2PXN0YXRpYyBpbnQgcmVnaXN0ZXJfdmlydGlvX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9jYW4vdmlydGlvX2Nhbi5jLTQzMC1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM6NDMxOlx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xuZHJpdmVycy9uZXQvY2FuL3ZpcnRpb19jYW4uYy00MzItfVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM9ODIzPXN0YXRpYyB2b2lkIHZpcnRpb19jYW5fcmVtb3ZlKHN0cnVjdCB2aXJ0aW9fZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmMtODI3LVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMjQ3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgZHVtbXlfY2FuYCBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgYGR1bW15X2NhbmAgaXMgdXNpbmcgYHJlZ2lzdGVyX2NhbmRldmAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkga25vdyBgZHVtbXlfY2FuYCBpcyBhIHZpcnR1YWwgQ0FOIGRldmljZSwgc28gSSYjMzk7bSBhIGJpdCBzdXJwcmlzZWQgaXQmIzM5O3MgZW1wbG95aW5nIGEgZnVuY3Rpb24gbGlrZSBgcmVnaXN0ZXJfY2FuZGV2YCwgd2hpY2ggSSB0eXBpY2FsbHkgYXNzb2NpYXRlIHdpdGggcGh5c2ljYWwgQ0FOIGNvbnRyb2xsZXJzLiBMZXQmIzM5O3MgZGlnIGludG8gdGhhdDsgbXkgaW5zdGluY3QgaXMgdGhhdCB0aGVyZSYjMzk7cyBhIGdvb2QgcmVhc29uIGZvciBpdC4gVG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIuIEkmIzM5O20gZXhwZWN0aW5nIHNvbWUgY2xldmVyIGFic3RyYWN0aW9uIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEVU1NWV9DQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0OTIKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ0FOIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgYGR1bW15X2NhbmAgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIEdpdmVuIG15IGJhY2tncm91bmQsIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgQ0FOIG5ldHdvcmtpbmcgZHJpdmVyIGRpcmVjdG9yeS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGZpbmQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkb2N1bWVudGVkIHRoZXJlLiBJdCYjMzk7cyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UsIGFmdGVyIGFsbCwgdG8gZGVmaW5lIGJ1aWxkLXRpbWUgc2V0dGluZ3Mgd2l0aGluIHRoZSBgS2NvbmZpZ2AgZmlsZXMgb2YgdGhlIGtlcm5lbC4gVGhpcyBmaWxlIGhvbGRzIHRoZSBrZXkgdG8gaG93IHRoaXMgZHJpdmVyIGlzIGVuYWJsZWQsIGRpc2FibGVkLCBhbmQgY29uZmlndXJlZCBmb3IgYSBzcGVjaWZpYyBrZXJuZWwgYnVpbGQuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBpbiBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkdW1teV9jYW4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9NYWtlZmlsZT0yMz1vYmotJChDT05GSUdfQ0FOX0NUVUNBTkZEKVx0JiM0Mzs9IGN0dWNhbmZkL1xuZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19DQU5fRFVNTVkpXHRcdCYjNDM7PSBkdW1teV9jYW4ub1xuZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlLTI1LW9iai0kKENPTkZJR19DQU5fRkxFWENBTilcdCYjNDM7PSBmbGV4Y2FuL1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxOTpzdHJ1Y3QgZHVtbXlfY2FuIHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMC1cdHN0cnVjdCBjYW5fcHJpdiBjYW47XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIzLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0OnN0YXRpYyBzdHJ1Y3QgZHVtbXlfY2FuICpkdW1teV9jYW47XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjUtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0IGR1bW15X2Nhbl9iaXR0aW1pbmdfY29uc3QgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6Mjc6XHQubmFtZSA9IFwmIzM0O2R1bW15X2NhbiBDQ1wmIzM0OyxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yOC1cdC50c2VnMV9taW4gPSAyLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0zNy1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgZHVtbXlfY2FuX2ZkX2RhdGFiaXR0aW1pbmdfY29uc3QgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6Mzk6XHQubmFtZSA9IFwmIzM0O2R1bW15X2NhbiBGRFwmIzM0OyxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy00MC1cdC50c2VnMV9taW4gPSAyLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy00OS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl90ZGNfY29uc3QgZHVtbXlfY2FuX2ZkX3RkY19jb25zdCA9IHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy01MS1cdC50ZGN2X21pbiA9IDAsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTU4LVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCBkdW1teV9jYW5feGxfZGF0YWJpdHRpbWluZ19jb25zdCA9IHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo2MDpcdC5uYW1lID0gXCYjMzQ7ZHVtbXlfY2FuIFhMXCYjMzQ7LFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTYxLVx0LnRzZWcxX21pbiA9IDIsXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTcwLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjcxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FuX3RkY19jb25zdCBkdW1teV9jYW5feGxfdGRjX2NvbnN0ID0ge1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTcyLVx0LnRkY3ZfbWluID0gMCxcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtNzktXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6ODA6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fcHdtX2NvbnN0IGR1bW15X2Nhbl9wd21fY29uc3QgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtODEtXHQucHdtc19taW4gPSAxLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy04OC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo4OTpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfYml0dGltaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtOTAtXHRcdFx0XHQgICAgICBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwMS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMDI6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X3RkYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX3RkYyAqdGRjKVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwMy17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMDk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X3B3bShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX3B3bSAqcHdtLFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTExMC1cdFx0XHRcdHN0cnVjdCBjYW5fYml0dGltaW5nICpkYnQpXG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTExNi1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMTc6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X2N0cmxtb2RlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTE4LXtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMTk6XHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMjAtXHRzdHJ1Y3QgY2FuX3ByaXYgKmNhbl9wcml2ID0gXHUwMDI2cHJpdi1cdTAwM2VjYW47XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEzOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMzk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZ19pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTQwLXtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNDE6XHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNDItXHRzdHJ1Y3QgY2FuX3ByaXYgKmNhbl9wcml2ID0gXHUwMDI2cHJpdi1cdTAwM2VjYW47XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE0OC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNDk6XHRkdW1teV9jYW5fcHJpbnRfY3RybG1vZGUoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNTAtXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTUyLVx0bmV0ZGV2X2RiZyhkZXYsIFwmIzM0O0NsYXNzaWNhbCBDQU4gbm9taW5hbCBiaXR0aW1pbmc6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNTM6XHRkdW1teV9jYW5fcHJpbnRfYml0dGltaW5nKGRldiwgXHUwMDI2Y2FuX3ByaXYtXHUwMDNlYml0dGltaW5nKTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNTQtXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU3LVx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7Q0FOIEZEIGRhdGFiaXR0aW1pbmc6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNTg6XHRcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZjYW5fcHJpdi1cdTAwM2VmZC5kYXRhX2JpdHRpbWluZyk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU5LVx0XHRpZiAoY2FuX2ZkX3RkY19pc19lbmFibGVkKGNhbl9wcml2KSkge1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE2MC1cdFx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFx0Q0FOIEZEIFREQzpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE2MTpcdFx0XHRkdW1teV9jYW5fcHJpbnRfdGRjKGRldiwgXHUwMDI2Y2FuX3ByaXYtXHUwMDNlZmQudGRjKTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNjItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTY3LVx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7Q0FOIFhMIGRhdGFiaXR0aW1pbmc6XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNjg6XHRcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcdTAwMjZjYW5fcHJpdi1cdTAwM2V4bC5kYXRhX2JpdHRpbWluZyk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTY5LVx0XHRpZiAoY2FuX3hsX3RkY19pc19lbmFibGVkKGNhbl9wcml2KSkge1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE3MC1cdFx0XHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7XFx0Q0FOIFhMIFREQzpcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE3MTpcdFx0XHRkdW1teV9jYW5fcHJpbnRfdGRjKGRldiwgXHUwMDI2Y2FuX3ByaXYtXHUwMDNleGwudGRjKTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNzItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTc0LVx0XHRcdG5ldGRldl9kYmcoZGV2LCBcJiMzNDtcXHRDQU4gWEwgUFdNOlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTc1Olx0XHRcdGR1bW15X2Nhbl9wcmludF9wd20oZGV2LCBcdTAwMjZjYW5fcHJpdi1cdTAwM2V4bC5wd20sXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTc2LVx0XHRcdFx0XHQgICAgXHUwMDI2Y2FuX3ByaXYtXHUwMDNleGwuZGF0YV9iaXR0aW1pbmcpO1xuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xODEtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTgyOnN0YXRpYyBpbnQgZHVtbXlfY2FuX25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTgzLXtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTg2LVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE4NzpcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmdfaW5mbyhkZXYpO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4OC1cdG5ldGRldl9kYmcoZGV2LCBcJiMzNDtlcnJvci1zaWduYWxsaW5nIGlzICVzXFxuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xOTktXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjAwOnN0YXRpYyBpbnQgZHVtbXlfY2FuX25ldGRldl9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIwOC1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMDk6c3RhdGljIG5ldGRldl90eF90IGR1bW15X2Nhbl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjEwLVx0XHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMjEtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZHVtbXlfY2FuX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjIzOlx0Lm5kb19vcGVuID0gZHVtbXlfY2FuX25ldGRldl9vcGVuLFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyNDpcdC5uZG9fc3RvcCA9IGR1bW15X2Nhbl9uZXRkZXZfY2xvc2UsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjI1Olx0Lm5kb19zdGFydF94bWl0ID0gZHVtbXlfY2FuX3N0YXJ0X3htaXQsXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjI2LX07XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjI3LVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyODpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGR1bW15X2Nhbl9ldGh0b29sX29wcyA9IHtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMjktXHQuZ2V0X3RzX2luZm8gPSBldGh0b29sX29wX2dldF90c19pbmZvLFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMzEtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjMyOnN0YXRpYyBpbnQgX19pbml0IGR1bW15X2Nhbl9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjMzLXtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMzQtXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIzNTpcdHN0cnVjdCBkdW1teV9jYW4gKnByaXY7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjM2LVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjQxLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0MjpcdGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2ZHVtbXlfY2FuX25ldGRldl9vcHM7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjQzOlx0ZGV2LVx1MDAzZWV0aHRvb2xfb3BzID0gXHUwMDI2ZHVtbXlfY2FuX2V0aHRvb2xfb3BzO1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0NC1cdGRldi1cdTAwM2VmbGFncyB8PSBJRkZfRUNITzsgLyogZW5hYmxlIGVjaG8gaGFuZGxpbmcgKi9cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNDUtXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNDY6XHRwcml2LVx1MDAzZWNhbi5iaXR0aW1pbmdfY29uc3QgPSBcdTAwMjZkdW1teV9jYW5fYml0dGltaW5nX2NvbnN0O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0Ny1cdHByaXYtXHUwMDNlY2FuLmJpdHJhdGVfbWF4ID0gMjAgKiBNRUdBIC8qIEJQUyAqLztcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNDgtXHRwcml2LVx1MDAzZWNhbi5jbG9jay5mcmVxID0gMTYwICogTUVHQSAvKiBIeiAqLztcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNDk6XHRwcml2LVx1MDAzZWNhbi5mZC5kYXRhX2JpdHRpbWluZ19jb25zdCA9IFx1MDAyNmR1bW15X2Nhbl9mZF9kYXRhYml0dGltaW5nX2NvbnN0O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MDpcdHByaXYtXHUwMDNlY2FuLmZkLnRkY19jb25zdCA9IFx1MDAyNmR1bW15X2Nhbl9mZF90ZGNfY29uc3Q7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjUxOlx0cHJpdi1cdTAwM2VjYW4ueGwuZGF0YV9iaXR0aW1pbmdfY29uc3QgPSBcdTAwMjZkdW1teV9jYW5feGxfZGF0YWJpdHRpbWluZ19jb25zdDtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNTI6XHRwcml2LVx1MDAzZWNhbi54bC50ZGNfY29uc3QgPSBcdTAwMjZkdW1teV9jYW5feGxfdGRjX2NvbnN0O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MzpcdHByaXYtXHUwMDNlY2FuLnhsLnB3bV9jb25zdCA9IFx1MDAyNmR1bW15X2Nhbl9wd21fY29uc3Q7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjU0LVx0cHJpdi1cdTAwM2VjYW4uY3RybG1vZGVfc3VwcG9ydGVkID0gQ0FOX0NUUkxNT0RFX0xJU1RFTk9OTFkgfFxuLS1cbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNjUtXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY2Olx0ZHVtbXlfY2FuID0gcHJpdjtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNjctXHRuZXRkZXZfZGJnKGRldiwgXCYjMzQ7ZHVtbXktY2FuIHJlYWR5XFxuXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjcxLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3MjpzdGF0aWMgdm9pZCBfX2V4aXQgZHVtbXlfY2FuX2V4aXQodm9pZClcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNzMte1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3NDpcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkdW1teV9jYW4tXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3NS1cbi0tXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjgwLVxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI4MTptb2R1bGVfaW5pdChkdW1teV9jYW5faW5pdCk7XG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjgyOm1vZHVsZV9leGl0KGR1bW15X2Nhbl9leGl0KTtcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MTU1CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgdGhlIER1bW15IENBTiBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpSaWdodCwgc28gYENPTkZJR19DQU5fRFVNTVlgLi4uIHRoYXQgc2NyZWFtcyAmIzM0O2R1bW15X2NhbiYjMzQ7IHRvIG1lLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0LiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgQ0FOLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnYC4gSSBuZWVkIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGlzIGFjY3VyYXRlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGRlcGVuZGVuY2llcyBvciBvcHRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSByZXZlYWxzIGFib3V0IHRoaXMgYENBTl9EVU1NWWAgc2V0dGluZy4gSG9wZWZ1bGx5LCB0aGUgY29tbWVudHMgYXJlIGNsZWFyIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX0RVTU1ZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vS2NvbmZpZz0xMDY9Y29uZmlnIENBTl9DQU4zMjdcbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xMjMtXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzoxMjQ6Y29uZmlnIENBTl9EVU1NWVxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctMTI1LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgQ0FOXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NDU4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIGJpdCB0aW1pbmcgaW4gdGhlIENBTiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ0FOX0RVTU1ZYCBpcyBrZXkgaGVyZSBiZWNhdXNlIGl0JiMzOTtzIGEgdmlydHVhbCBDQU4gZGV2aWNlIGNyZWF0ZWQgdXNpbmcgYHJlZ2lzdGVyX2NhbmRldmAuIFRoaXMgbWVhbnMgaXQgKnNob3VsZCogdXRpbGl6ZSBgY2FuX2xpbmtfb3BzYCBhbmQsIHRoZXJlZm9yZSwgc3VwcG9ydCBgY2FuX2NoYW5nZWxpbmtgLiBKdXN0IHRvIGNvbmZpcm0sIGByZWdpc3Rlcl9jYW5kZXZgIGRvZXMgaW5kZWVkIHNldCBgZGV2LSZndDtydG5sX2xpbmtfb3BzID0gJmFtcDtjYW5fbGlua19vcHM7YCwgYW5kIGBjYW5fbGlua19vcHNgIGRvZXMsIGluIGZhY3QsIGhhdmUgYC5jaGFuZ2VsaW5rID0gY2FuX2NoYW5nZWxpbmtgLiBDb25zZXF1ZW50bHksIGBjYW5fY2hhbmdlbGlua2AgY2FsbHMgYGNhbl9nZXRfYml0dGltaW5nYCwgd2hpY2ggaW4gdHVybiBjYWxscyB0aGUgdGFyZ2V0IGZ1bmN0aW9uLCBgY2FuX2NhbGNfYml0dGltaW5nYC4gU28sIHdlICphcmUqIGFibGUgdG8gcmVhY2ggYGNhbl9jYWxjX2JpdHRpbWluZ2AgdGhyb3VnaCBuZXRsaW5rIGZvciB0aGlzIHZpcnR1YWwgYGR1bW15X2NhbmAgZGV2aWNlLgoKTm93LCBsZXQmIzM5O3MgZm9jdXMgb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXRzZWxmLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhpcyBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jYC4gVGhlIGNvZGUgc25pcHBldCBoZXJlOgoKYGBgYwoJCS8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSYjNDM7dHNlZzIpLgoJCSAqIEEgMzIgYml0IHRzZWdhbGwgKiBidC0mZ3Q7Yml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZQoJCSAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuCgkJICovCgkJYnJwID0gZGl2NjRfdTY0KHByaXYtJmd0O2Nsb2NrLmZyZXEsCgkJCQltdWxfdTMyX3UzMih0c2VnYWxsLCBidC0mZ3Q7Yml0cmF0ZSkpICYjNDM7IHRzZWcgJSAyOwpgYGAKCnNob3dzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWltZWQgYXQgcHJldmVudGluZyBkaXZpc2lvbi1ieS16ZXJvIG9yIGluY29ycmVjdCBjYWxjdWxhdGlvbnMgd2hlbiBkZWFsaW5nIHdpdGggbGFyZ2UgYml0cmF0ZXMuIFRoaXMgaXMgYSBjbGFzc2ljIGludGVnZXIgb3ZlcmZsb3cvdW5kZXJmbG93IGNvbmNlcm4uIEl0JiMzOTtzIGFjY2Vzc2libGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmssIHdoaWNoIG1lYW5zIGl0IG5lZWRzIGZ1enppbmcuCgpNeSBwcmltYXJ5IGZvY3VzIGhlcmUsIHRoZW4sIGFyZSB0aGUgZnVuY3Rpb25zIGBjYW5fY2FsY19iaXR0aW1pbmdgLCBgY2FuX2dldF9iaXR0aW1pbmdgLCBhbmQgYGNhbl9jaGFuZ2VsaW5rYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgdGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIGBDQU5gLCBgQ0FOX0RFVmAsIGBDQU5fRFVNTVlgLCBgQ0FOX1ZDQU5gLCBhbmQgYENBTl9WWENBTmAgYXJlIGFsbCByZWxldmFudC4KCkhvbGQgb24uIExldCBtZSBjaXJjbGUgYmFjayB0byBgQ0FOX0RVTU1ZYC4gVGhhdCYjMzk7cyB0aGUgY3J1Y2lhbCBjb25maWcgYmVjYXVzZSwgYXMgd2UgZXN0YWJsaXNoZWQsIGl0IHVzZXMgYHJlZ2lzdGVyX2NhbmRldmAuIFdoYXQgYWJvdXQgYHZjYW5gIGFuZCBgdnhjYW5gPyBUaG9zZSBkb24mIzM5O3QgY2FsbCBgcmVnaXN0ZXJfY2FuZGV2YCwgc28gdGhleSBkb24mIzM5O3Qgc2VlbSB0byB1c2UgYGNhbl9saW5rX29wc2AuIEFoLCBJIHNlZSEgYHZjYW5gIGFuZCBgdnhjYW5gIGFyZSB2aXJ0dWFsIENBTiBkZXZpY2VzLCBidXQgdGhleSBkb24mIzM5O3QgaGF2ZSAqYml0IHRpbWluZyogaW4gdGhlIHNhbWUgc2Vuc2UgYXMgcGh5c2ljYWwgQ0FOIGRldmljZXMuIEJpdCB0aW1pbmcgaXMgbW9yZSByZWxldmFudCBmb3Igc2ltdWxhdGVkIHBoeXNpY2FsIGRldmljZXMgbGlrZSB0aGUgYGR1bW15X2NhbmAuIFRodXMsIGBDQU5fRFVNTVlgIGlzLCBpbmRlZWQsIHRoZSBjb3JyZWN0IGNvbmZpZyB0byBlbmFibGUuCgpGaW5hbGx5LCBqdXN0IHRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMsIGxpa2UgYENBTl9ORVRMSU5LYC4gSSYjMzk7bGwgdmVyaWZ5IGlmIGl0JiMzOTtzIG5lY2Vzc2FyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDk6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY2FuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzYwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBDQU4gRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBDQU4tcmVsYXRlZCBpc3N1ZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gVGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcgZm9yIHRob3NlIGtlcm5lbC1sZXZlbCBzZXR0aW5ncyBpcyBwcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgZHJpdmVycy9uZXQvY2FuL2Rldi9LY29uZmlnYCwgb3Igc29tZXRoaW5nIGNsb3NlbHkgYW5hbG9nb3VzIHdpdGhpbiB0aGUgQ0FOIGRyaXZlciBkaXJlY3Rvcnkgc3RydWN0dXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpjb25maWd1cmFibGUqIGF0IGNvbXBpbGUgdGltZS4gQXJlIHdlIGxvb2tpbmcgYXQgc3BlY2lmaWMgQ0FOIGNvbnRyb2xsZXJzLCBmZWF0dXJlcyBsaWtlIGJpdHJhdGUgYWRqdXN0bWVudHMsIGVycm9yIGhhbmRsaW5nIG1vZGVzLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGludGVyZmFjZSBpdHNlbGY/IFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgdG8gdHJvdWJsZXNob290aW5nIGFuZCBwb3RlbnRpYWxseSBwYXRjaGluZyBhIENBTiBkcml2ZXIuIEl0IGhlbHBzIG1lIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBlbmFibGVkIGFuZCBkaXNhYmxlZCBkdXJpbmcgY29tcGlsYXRpb24uIEl0IHdvdWxkIGJlIG15IGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB3aGF0IEkgYW0gZGVhbGluZyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ0FOX05FVExJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTM0PWNvbmZpZyBDQU5fVlhDQU5cbi0tXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy00OC1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjQ5OmNvbmZpZyBDQU5fTkVUTElOS1xuZHJpdmVycy9uZXQvY2FuL0tjb25maWctNTAtXHRib29sIFwmIzM0O0NBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzA4OAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byB0aGUgQ0FOX05FVExJTksgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpc3NlY3QgdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IHRoZSBzZWN0aW9uIGNvbmNlcm5pbmcgYENBTl9ORVRMSU5LYC4gSSYjMzk7bSBhbHJlYWR5IHZpc3VhbGl6aW5nIHRoZSBLY29uZmlnIHN5bnRheCBpbiBteSBoZWFkOyB0aGlzIHNob3VsZCBiZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZXhhbWluYXRpb24sIGFsdGhvdWdoIEnigJltIHN1cmUgaXTigJlsbCBkZXBlbmQgb24gaG93IGRlZXAgdGhlIG5lc3RlZCBkZXBlbmRlbmNpZXMgYXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoYXQgY3JpdGVyaWEgdHJpZ2dlciB0aGUgaW5jbHVzaW9uIG9yIGV4Y2x1c2lvbiBvZiB0aGlzIGZlYXR1cmUgaW4gYSBrZXJuZWwgYnVpbGQuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgc2ltcGxlIGBib29sYCBvcHRpb24sIG9yIGlzIHRoZXJlIGEgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gaW52b2x2aW5nIGRlcGVuZGVuY2llcyBvbiBvdGhlciBuZXR3b3JrIHN0YWNrcyBvciBoYXJkd2FyZSBkcml2ZXJzPyBJJiMzOTttIGhvcGluZyBpdCYjMzk7cyB3ZWxsLWRvY3VtZW50ZWQsIGJlY2F1c2UsIGxldCYjMzk7cyBmYWNlIGl0LCB0ZXJzZSBLY29uZmlnIGRlc2NyaXB0aW9ucyBhcmUgdGhlIGJhbmUgb2YgbXkgZXhpc3RlbmNlLiBJJiMzOTttIGtlZW4gdG8gc2VlIGlmIHRoaXMgcmVsaWVzIG9uIGEgc3BlY2lmaWMga2VybmVsIHZlcnNpb24gdG9vLiBUaGlzIGlzbiYjMzk7dCB1c3VhbGx5IHRoZSBjYXNlIHdpdGggQ0FOIGRyaXZlcnMsIGJ1dCBvbmUgY2FuIGhvcGUhIEZyb20gdGhlIG5hbWUsIEkmIzM5O2QgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHRoZSBOZXRsaW5rIGludGVyZmFjZSBmb3IgQ0FOLCBhbmQgaWYgdGhpcyBpcyB0aGUgY2FzZSwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHdlbGwgaXQmIzM5O3MgZGVzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvY2FuL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDQ1Olx0XG4gIDQ2Olx0XHQgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiAgSWYgc28sIHRoZSBtb2R1bGVcbiAgNDc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgdnhjYW4uXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIENBTl9ORVRMSU5LXG4gIDUwOlx0XHRib29sIFwmIzM0O0NBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFwmIzM0O1xuICA1MTpcdFx0ZGVmYXVsdCB5XG4gIDUyOlx0XHRoZWxwXG4gIDUzOlx0XHQgIEVuYWJsZXMgdGhlIGNvbW1vbiBmcmFtZXdvcmsgZm9yIENBTiBkZXZpY2UgZHJpdmVycy4gVGhpcyBpcyB0aGVcbiAgNTQ6XHRcdCAgc3RhbmRhcmQgbGlicmFyeSBhbmQgcHJvdmlkZXMgZmVhdHVyZXMgZm9yIHRoZSBOZXRsaW5rIGludGVyZmFjZSBzdWNoXG4gIDU1Olx0XHQgIGFzIGJpdHRpbWluZyB2YWxpZGF0aW9uLCBzdXBwb3J0IG9mIENBTiBlcnJvciBzdGF0ZXMsIGRldmljZSByZXN0YXJ0XG4gIDU2Olx0XHQgIGFuZCBvdGhlcnMuXG4gIDU3Olx0XG4gIDU4Olx0XHQgIFRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIHNlbGVjdGVkIGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgYWRkZWQgdG8gdGhlXG4gIDU5Olx0XHQgIGNhbi1kZXYgbW9kdWxlLlxuICA2MDpcdFxuICA2MTpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIGJ5IGFsbCBwbGF0Zm9ybSBhbmQgaGFyZHdhcmUgQ0FOIGRyaXZlcnMuIElmIHlvdVxuICA2MjpcdFx0ICBwbGFuIHRvIHVzZSBzdWNoIGRldmljZXMgb3IgaWYgdW5zdXJlLCBzYXkgWS5cbiAgNjM6XHRcbiAgNjQ6XHRpZiBDQU5fTkVUTElOS1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzY2MAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgQ0FOIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgZmlyc3QgdGhpbmdzIGZpcnN0LCBsb29rcyBsaWtlIGBDQU5fTkVUTElOS2AgaXMgYSBoYXJkIHJlcXVpcmVtZW50LCBhbmQgdGhhbmtmdWxseSBpdCYjMzk7cyBhbHJlYWR5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc2V0IHRvICYjMzk7eSYjMzk7LiBUaGF0JiMzOTtzIG9uZSBsZXNzIHRoaW5nIHRvIHdvcnJ5IGFib3V0LiBOb3csIGxldCYjMzk7cyBqdXN0IHF1aWNrbHkgY29uZmlybSB0aGF0IGBDQU5fQ0FMQ19CSVRUSU1JTkdgIGlzIGFjdHVhbGx5IGEgY29uZmlndXJhYmxlIG9wdGlvbi4gR290dGEgZG91YmxlLWNoZWNrIHRob3NlIGRlcGVuZGVuY2llcyBhbmQgZW5zdXJlIGV2ZXJ5dGhpbmcmIzM5O3MgcHJvcGVybHkgZGVmaW5lZCBpbiB0aGUgY29uZmlnIHNwYWNlLiBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgc3RhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBDQU5fQ0FMQ19CSVRUSU1JTkcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9jYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTY0PWlmIENBTl9ORVRMSU5LXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy02NS1cbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjY2OmNvbmZpZyBDQU5fQ0FMQ19CSVRUSU1JTkdcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTY3LVx0Ym9vbCBcJiMzNDtDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvblwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzk0NAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBDQU4gQml0IFRpbWluZyBDYWxjdWxhdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGF0IGBDQU5fQ0FMQ19CSVRUSU1JTkdgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlJiMzOTtyZSBjb250cm9sbGluZyB0aGUgYml0IHRpbWluZyBjYWxjdWxhdGlvbnMgZm9yIENBTiBjb250cm9sbGVycy4gSXQmIzM5O3MgYSBjcml0aWNhbCBhc3BlY3Qgb2YgQ0FOIGNvbW11bmljYXRpb247IGdldCB0aGlzIHdyb25nLCBhbmQgdGhlIGVudGlyZSBidXMgZ29lcyBzb3V0aC4gSSB3YW50IHRvIHNlZSBpZiB3ZSBvZmZlciBmbGV4aWJpbGl0eSBpbiBob3cgdGhlc2UgdGltaW5ncyBhcmUgaGFuZGxlZC4KCkkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgY29uZGl0aW9uYWwgbG9naWMgaGVyZSwgbWF5YmUgZGVwZW5kZW50IG9uIHRoZSBzcGVjaWZpYyBDQU4gY29udHJvbGxlciB0eXBlIHN1cHBvcnRlZCwgc2luY2UgZGlmZmVyZW50IGhhcmR3YXJlIGxpa2VseSBoYXMgZGlmZmVyZW50IHdheXMgb2YgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIHZhbHVlcywgb3IgbWF5YmUgdGhlcmUmIzM5O3MgYSBzaW1wbGUsIGFuZCBjb25maWd1cmFibGUsIG1hdGhlbWF0aWNhbCBmb3JtdWxhIGluIHBsYXksIGlmIHdlIG5lZWQgdG8gbWFudWFsbHkgdHVuZSBpdC4gSXQmIzM5O3MgYWxzbyBsaWtlbHkgd2UgaGF2ZSBhIGRlZmF1bHQgY2FsY3VsYXRpb24sIGFuZCB0aGUgYENBTl9DQUxDX0JJVFRJTUlOR2AgaXMganVzdCBnaXZpbmcgdGhlIHVzZXIgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGEgcGFydGljdWxhciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQuIEkgbmVlZCB0byBzZWUgaWYgaXQgYWxsb3dzIGZvciBoYW5kLXR1bmVkIHZhbHVlcyBhcyBhbiBleHBlcnQgaW4gQ0FOLCBJIHdhbnQgdG8gY29udHJvbCB0aGUgdGltaW5nIGFzIHByZWNpc2VseSBhcyBwb3NzaWJsZSEKSSB3YW50IHRvIGlkZW50aWZ5IHRoZSBwcm9zIGFuZCBjb25zIG9mIHRoZXNlIGRpZmZlcmVudCBhcHByb2FjaGVzOiBhdXRvbWF0aWMgdmVyc3VzIG1hbnVhbCwgYW5kIGhvdyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGNsb2NrIGZyZXF1ZW5jaWVzIGFuZCBzYW1wbGUgcG9pbnRzLiBJIGFsc28gbmVlZCB0byBhc3Nlc3Mgd2hldGhlciB3ZSBhcmUgc3VwcG9ydGluZyBkaWZmZXJlbnQgQ0FOIHN0YW5kYXJkcyAoQ0FOIDIuMEEsIENBTiAyLjBCLCBDQU4gRkQsIGV0Yy4pLCBhbmQgaG93IGJpdCB0aW1pbmcgaXMgaGFuZGxlZCBmb3IgZWFjaC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IGdvdGNoYXMgb3IgZGVwZW5kZW5jaWVzIEkgbmVlZCB0byBiZSBhd2FyZSBvZi4KVWx0aW1hdGVseSwgSSB3YW50IHRvIGJlIGFibGUgdG8gYWR2aXNlIHRoZSB1c2VyIG9uIHRoZSBtb3N0IGVmZmljaWVudCBhbmQgcmVsaWFibGUgYml0IHRpbWluZyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2NDpcdGlmIENBTl9ORVRMSU5LXG4gIDY1Olx0XG4gIDY2Olx0Y29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1xuICA2NzpcdFx0Ym9vbCBcJiMzNDtDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvblwmIzM0O1xuICA2ODpcdFx0ZGVmYXVsdCB5XG4gIDY5Olx0XHRoZWxwXG4gIDcwOlx0XHQgIElmIGVuYWJsZWQsIENBTiBiaXQtdGltaW5nIHBhcmFtZXRlcnMgd2lsbCBiZSBjYWxjdWxhdGVkIGZvciB0aGVcbiAgNzE6XHRcdCAgYml0LXJhdGUgc3BlY2lmaWVkIHZpYSBOZXRsaW5rIGFyZ3VtZW50IFwmIzM0O2JpdHJhdGVcJiMzNDsgd2hlbiB0aGUgZGV2aWNlXG4gIDcyOlx0XHQgIGdldCBzdGFydGVkLiBUaGlzIHdvcmtzIGZpbmUgZm9yIHRoZSBtb3N0IGNvbW1vbiBDQU4gY29udHJvbGxlcnNcbiAgNzM6XHRcdCAgd2l0aCBzdGFuZGFyZCBiaXQtcmF0ZXMgYnV0IG1heSBmYWlsIGZvciBleG90aWMgYml0LXJhdGVzIG9yIENBTlxuICA3NDpcdFx0ICBzb3VyY2UgY2xvY2sgZnJlcXVlbmNpZXMuIERpc2FibGluZyBzYXZlcyBzb21lIHNwYWNlLCBidXQgdGhlbiB0aGVcbiAgNzU6XHRcdCAgYml0LXRpbWluZyBwYXJhbWV0ZXJzIG11c3QgYmUgc3BlY2lmaWVkIGRpcmVjdGx5IHVzaW5nIHRoZSBOZXRsaW5rXG4gIDc2Olx0XHQgIGFyZ3VtZW50cyBcJiMzNDt0cVwmIzM0OywgXCYjMzQ7cHJvcF9zZWdcJiMzNDssIFwmIzM0O3BoYXNlX3NlZzFcJiMzNDssIFwmIzM0O3BoYXNlX3NlZzJcJiMzNDsgYW5kIFwmIzM0O3Nqd1wmIzM0Oy5cbiAgNzc6XHRcbiAgNzg6XHRcdCAgVGhlIGFkZGl0aW9uYWwgZmVhdHVyZXMgc2VsZWN0ZWQgYnkgdGhpcyBvcHRpb24gd2lsbCBiZSBhZGRlZCB0byB0aGVcbiAgNzk6XHRcdCAgY2FuLWRldiBtb2R1bGUuXG4gIDgwOlx0XG4gIDgxOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkuXG4gIDgyOlx0XG4gIDgzOlx0Y29uZmlnIENBTl9SWF9PRkZMT0FEXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Njc1CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLCBwcmVzZW50ZWQgYXMgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgQ0FOIEJ1cyBGdW5jdGlvbmFsaXR5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUsIEkmIzM5O20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBDQU4tcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNlZW1zIGxpa2UgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ0FOX0NBTENfQklUVElNSU5HYCBpcyBlbmFibGVkIHRvby4gR29vZCB0byBrbm93IGl0IGRlZmF1bHRzIHRvICYjMzk7eSYjMzk7LCBidXQgSSBzaG91bGQgc3RpbGwgZG91YmxlLWNoZWNrLgoKRXNzZW50aWFsbHksIEkmIzM5O20gZGVhbGluZyB3aXRoIHRoZXNlIGtleSBDQU4gY29uZmlndXJhdGlvbnM6IGBDQU5gLCBgQ0FOX0RFVmAsIGBDQU5fTkVUTElOS2AsIGBDQU5fQ0FMQ19CSVRUSU1JTkdgLCBhbmQgYENBTl9EVU1NWWAuIFRoaXMgc2VlbXMgbGlrZSBhIHByZXR0eSBzdGFuZGFyZCBzZXR1cC4gTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIFNvLCBuZXh0LCBJJiMzOTtsbCBmb2N1cyBvbiBgQ0FOX0RVTU1ZYCBhbmQgaW52ZXN0aWdhdGUgYW55IGNvbmZpZ3VyYXRpb25zIHRoYXQgbWlnaHQgYmUgcmVxdWlyZWQgaWYgSSBlbmFibGUgaXQuIEl0IGlzIGEgZ29vZCBwcmFjdGljZSB0byByZXZpZXcgYWxsIGRlcGVuZGVuY2llcywganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2Nhbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTIwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjA6XHRcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jYW4zMjcucnN0XG4gMTIxOlx0XG4gMTIyOlx0XHQgIElmIHRoaXMgZHJpdmVyIGlzIGJ1aWx0IGFzIGEgbW9kdWxlLCBpdCB3aWxsIGJlIGNhbGxlZCBjYW4zMjcuXG4gMTIzOlx0XG4gMTI0Olx0Y29uZmlnIENBTl9EVU1NWVxuIDEyNTpcdFx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgQ0FOXCYjMzQ7XG4gMTI2Olx0XHRoZWxwXG4gMTI3Olx0XHQgIEEgZHVtbXkgQ0FOIG1vZHVsZSBzdXBwb3J0aW5nIENsYXNzaWNhbCBDQU4sIENBTiBGRCBhbmQgQ0FOIFhMLiBJdFxuIDEyODpcdFx0ICBleHBvc2VzIGJpdHRpbWluZyB2YWx1ZXMgd2hpY2ggY2FuIGJlIGNvbmZpZ3VyZWQgdGhyb3VnaCB0aGUgbmV0bGlua1xuIDEyOTpcdFx0ICBpbnRlcmZhY2UuXG4gMTMwOlx0XG4gMTMxOlx0XHQgIFRoZSBtb2R1bGUgd2lsbCBzaW1wbHkgZWNobyBhbnkgZnJhbWUgc2VudCB0byBpdC4gSWYgZGVidWcgbWVzc2FnZXNcbiAxMzI6XHRcdCAgYXJlIGFjdGl2YXRlZCwgaXQgcHJpbnRzIGFsbCB0aGUgQ0FOIGJpdHRpbWluZyBpbmZvcm1hdGlvbiBpbiB0aGVcbiAxMzM6XHRcdCAga2VybmVsIGxvZy4gQXNpZGUgZnJvbSB0aGF0IGl0IGRvZXMgbm90aGluZy5cbiAxMzQ6XHRcbiAxMzU6XHRcdCAgVGhpcyBpcyBjb252ZW5pZW50IGZvciB0ZXN0aW5nIHRoZSBDQU4gbmV0bGluayBpbnRlcmZhY2UuIE1vc3Qgb2YgdGhlXG4gMTM2Olx0XHQgIHVzZXJzIHdpbGwgbmV2ZXIgbmVlZCB0aGlzLiBJZiB1bnN1cmUsIHNheSBOTy5cbiAxMzc6XHRcbiAxMzg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlXG4gMTM5Olx0XHQgIGNhbGxlZCBkdW1teS1jYW4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA5OjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzIxCgkJCQkJCQlvdXRwdXQ6IDE5MgoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRnV6emluZyBQb3RlbnRpYWw6IGBjYW5fY2FsY19iaXR0aW1pbmdgKioKCk9rYXksIHNvIHRoaXMgY29kZSBibG9jayBpcyBwcmV0dHkgc2VsZi1jb250YWluZWQsIG5vdCByZWx5aW5nIG9uIGFueXRoaW5nIGJleW9uZCB0aGF0IGBpZiBDQU5fREVWYCBjaGVjay4gVGhhdOKAmXMgZ29vZCwgbGVzcyB0byB3b3JyeSBhYm91dCBpbiB0ZXJtcyBvZiBkZXBlbmRlbmNpZXMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBjYW5fY2FsY19iaXR0aW1pbmdgIGZ1bmN0aW9uIGFnYWluLCBqdXN0IHRvIGJlIHN1cmUuIExldCBtZSBzZWUgdGhlIHNpZ25hdHVyZS4uLiBZZXAsIHRoZXJlIGl0IGlzOgoKYGBgYwppbnQgY2FuX2NhbGNfYml0dGltaW5nKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fYml0dGltaW5nICpidCwKCQkgICAgICAgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgKmJ0Yywgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQpgYGAKClJpZ2h0LCBpdCYjMzk7cyBhIG5vbi1zdGF0aWMgQVBJIGVudHJ5cG9pbnQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGlucHV0IHR5cGVzIHNlZW0gcmVhc29uYWJsZSBmb3IgZ2VuZXJhdGluZyBkaXZlcnNlIHRlc3QgY2FzZXMuIEkgY2FuIHNlZSB0aGUgcGFyYW1ldGVycyBhcmUgdGhpbmdzIGxpa2UgdGhlIG5ldHdvcmsgZGV2aWNlIGl0c2VsZiwgYml0dGltaW5nIGFuZCBjb25zdGFudCBiaXR0aW1pbmcgc3RydWN0dXJlcywgYW5kIGV4dGVuZGVkIGFja25vd2xlZGdlbWVudC4gSSBzaG91bGQgZGVmaW5pdGVseSBzZXQgdGhlIHJlc3VsdHMgb2YgdGhlIGZ1enppbmcgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwOTo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX05FVExJTksmIzM0OywKICAgICYjMzQ7Q0FOX0NBTENfQklUVElNSU5HJiMzNDssCiAgICAmIzM0O0NBTl9EVU1NWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0FOJiMzNDssCiAgICAmIzM0O0NBTl9ERVYmIzM0OywKICAgICYjMzQ7Q0FOX05FVExJTksmIzM0OywKICAgICYjMzQ7Q0FOX0NBTENfQklUVElNSU5HJiMzNDssCiAgICAmIzM0O0NBTl9EVU1NWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Nhbl9jYWxjX2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fZ2V0X2JpdHRpbWluZyYjMzQ7LAogICAgJiMzNDtjYW5fY2hhbmdlbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjMyLjc5NTgwNDYyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA4MDgzMzQ0NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNBTlwiLFxuICAgIFwiQ0FOX0RFVlwiLFxuICAgIFwiQ0FOX05FVExJTktcIixcbiAgICBcIkNBTl9DQUxDX0JJVFRJTUlOR1wiLFxuICAgIFwiQ0FOX0RVTU1ZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2FuX2NhbGNfYml0dGltaW5nXCIsXG4gICAgXCJjYW5fZ2V0X2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2NoYW5nZWxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6MzIuNzk1ODE2ODVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwNDY0MDg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmMWMxNDAyZTg3M2JlNGY4MTE5MzY4Y2M1Y2U2ZTZjOTk3MWJjMDlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwOTozODozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcXG5pbmRleCA0MjQ5OGU5ZDNmMzhkLi4yNzg5Yjk5YWI2YTgzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY1xcbkBAIC0xMTksOCArMTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxcbiBcXHQgICAgIHRzZWcgXFx1MDAzZT0gKGJ0Yy1cXHUwMDNldHNlZzFfbWluICsgYnRjLVxcdTAwM2V0c2VnMl9taW4pICogMjsgdHNlZy0tKSB7XFxuIFxcdFxcdHRzZWdhbGwgPSBDQU5fU1lOQ19TRUcgKyB0c2VnIC8gMjtcXG4gXFxuLVxcdFxcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSt0c2VnMikgKi9cXG4tXFx0XFx0YnJwID0gcHJpdi1cXHUwMDNlY2xvY2suZnJlcSAvICh0c2VnYWxsICogYnQtXFx1MDAzZWJpdHJhdGUpICsgdHNlZyAlIDI7XFxuK1xcdFxcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSt0c2VnMikuXFxuK1xcdFxcdCAqIEEgMzIgYml0IHRzZWdhbGwgKiBidC1cXHUwMDNlYml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZVxcbitcXHRcXHQgKiB1c2Vyc3BhY2UgYml0cmF0ZXMsIHNvIGNvbXB1dGUgdGhlIHByb2R1Y3QgaW4gNjQgYml0LlxcbitcXHRcXHQgKi9cXG4rXFx0XFx0YnJwID0gZGl2NjRfdTY0KHByaXYtXFx1MDAzZWNsb2NrLmZyZXEsXFxuK1xcdFxcdFxcdFxcdG11bF91MzJfdTMyKHRzZWdhbGwsIGJ0LVxcdTAwM2ViaXRyYXRlKSkgKyB0c2VnICUgMjtcXG4gXFxuIFxcdFxcdC8qIGNob29zZSBicnAgc3RlcCB3aGljaCBpcyBwb3NzaWJsZSBpbiBzeXN0ZW0gKi9cXG4gXFx0XFx0YnJwID0gKGJycCAvIGJ0Yy1cXHUwMDNlYnJwX2luYykgKiBidGMtXFx1MDAzZWJycF9pbmM7XFxuQEAgLTEyOCw3ICsxMzIsNyBAQCBpbnQgY2FuX2NhbGNfYml0dGltaW5nKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fYml0dGltaW5nICpidCxcXG4gXFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRiaXRyYXRlID0gcHJpdi1cXHUwMDNlY2xvY2suZnJlcSAvIChicnAgKiB0c2VnYWxsKTtcXG4tXFx0XFx0Yml0cmF0ZV9lcnJvciA9IGFicyhidC1cXHUwMDNlYml0cmF0ZSAtIGJpdHJhdGUpO1xcbitcXHRcXHRiaXRyYXRlX2Vycm9yID0gYWJzX2RpZmYoYnQtXFx1MDAzZWJpdHJhdGUsIGJpdHJhdGUpO1xcbiBcXG4gXFx0XFx0LyogdHNlZyBicnAgYml0ZXJyb3IgKi9cXG4gXFx0XFx0aWYgKGJpdHJhdGVfZXJyb3IgXFx1MDAzZSBiZXN0X2JpdHJhdGVfZXJyb3IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjMzLjYwMTY5NzE5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjEwNzI3NzQzNjg0MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5cIixcbiAgICBcIkNBTl9ERVZcIixcbiAgICBcIkNBTl9ORVRMSU5LXCIsXG4gICAgXCJDQU5fQ0FMQ19CSVRUSU1JTkdcIixcbiAgICBcIkNBTl9EVU1NWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhbl9jYWxjX2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2dldF9iaXR0aW1pbmdcIixcbiAgICBcImNhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgMzItYml0IHdyYXAgdG8gemVybyBkaXZpc2lvbiBlcnJvciBpbiBDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvbiBmb3IgbGFyZ2UgdXNlcnNwYWNlIGJpdHJhdGVzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIHdoZW4gY29uZmlndXJpbmcgQ0FOIGRldmljZXMuIEZ1enppbmcgdGhpcyBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgbWF0aCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgZWRnZSBjYXNlcyB3aXRob3V0IHJlZ3Jlc3Npb25zLiBUaGUgYENBTl9EVU1NWWAgdmlydHVhbCBkZXZpY2UgaXMgaW5jbHVkZWQgdG8gYWxsb3cgdGVzdGluZyB0aGlzIGhhcmR3YXJlLWluZGVwZW5kZW50IGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVmMWMxNDAyZTg3M2JlNGY4MTE5MzY4Y2M1Y2U2ZTZjOTk3MWJjMDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA5OjM4OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jIGIvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jXG5pbmRleCA0MjQ5OGU5ZDNmMzhkLi4yNzg5Yjk5YWI2YTgzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jXG4rKysgYi9kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmNcbkBAIC0xMTksOCArMTE5LDEyIEBAIGludCBjYW5fY2FsY19iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxuIFx0ICAgICB0c2VnIFx1MDAzZT0gKGJ0Yy1cdTAwM2V0c2VnMV9taW4gKyBidGMtXHUwMDNldHNlZzJfbWluKSAqIDI7IHRzZWctLSkge1xuIFx0XHR0c2VnYWxsID0gQ0FOX1NZTkNfU0VHICsgdHNlZyAvIDI7XG4gXG4tXHRcdC8qIENvbXB1dGUgYWxsIHBvc3NpYmxlIHRzZWcgY2hvaWNlcyAodHNlZz10c2VnMSt0c2VnMikgKi9cbi1cdFx0YnJwID0gcHJpdi1cdTAwM2VjbG9jay5mcmVxIC8gKHRzZWdhbGwgKiBidC1cdTAwM2ViaXRyYXRlKSArIHRzZWcgJSAyO1xuK1x0XHQvKiBDb21wdXRlIGFsbCBwb3NzaWJsZSB0c2VnIGNob2ljZXMgKHRzZWc9dHNlZzErdHNlZzIpLlxuK1x0XHQgKiBBIDMyIGJpdCB0c2VnYWxsICogYnQtXHUwMDNlYml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZVxuK1x0XHQgKiB1c2Vyc3BhY2UgYml0cmF0ZXMsIHNvIGNvbXB1dGUgdGhlIHByb2R1Y3QgaW4gNjQgYml0LlxuK1x0XHQgKi9cbitcdFx0YnJwID0gZGl2NjRfdTY0KHByaXYtXHUwMDNlY2xvY2suZnJlcSxcbitcdFx0XHRcdG11bF91MzJfdTMyKHRzZWdhbGwsIGJ0LVx1MDAzZWJpdHJhdGUpKSArIHRzZWcgJSAyO1xuIFxuIFx0XHQvKiBjaG9vc2UgYnJwIHN0ZXAgd2hpY2ggaXMgcG9zc2libGUgaW4gc3lzdGVtICovXG4gXHRcdGJycCA9IChicnAgLyBidGMtXHUwMDNlYnJwX2luYykgKiBidGMtXHUwMDNlYnJwX2luYztcbkBAIC0xMjgsNyArMTMyLDcgQEAgaW50IGNhbl9jYWxjX2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdGJpdHJhdGUgPSBwcml2LVx1MDAzZWNsb2NrLmZyZXEgLyAoYnJwICogdHNlZ2FsbCk7XG4tXHRcdGJpdHJhdGVfZXJyb3IgPSBhYnMoYnQtXHUwMDNlYml0cmF0ZSAtIGJpdHJhdGUpO1xuK1x0XHRiaXRyYXRlX2Vycm9yID0gYWJzX2RpZmYoYnQtXHUwMDNlYml0cmF0ZSwgYml0cmF0ZSk7XG4gXG4gXHRcdC8qIHRzZWcgYnJwIGJpdGVycm9yICovXG4gXHRcdGlmIChiaXRyYXRlX2Vycm9yIFx1MDAzZSBiZXN0X2JpdHJhdGVfZXJyb3IpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODozMy42MDE2OTk3MjhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTg4MDQ3OTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIENBTiBCaXQgVGltaW5nIENhbGN1bGF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGRyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuY2AuIFNwZWNpZmljYWxseSwgaXQncyBtb2RpZnlpbmcgdGhlIGBjYW5fY2FsY19iaXR0aW1pbmdgIGZ1bmN0aW9uLiBGcm9tIHRoZSBkZXNjcmlwdGlvbiwgaXQgc2VlbXMgbGlrZSB0aGUgZ29hbCBpcyB0byBpbXByb3ZlIHRoZSBoYW5kbGluZyBvZiBoaWdoIGJpdHJhdGVzLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgcG90ZW50aWFsIDMyLWJpdCBpbnRlZ2VyIG92ZXJmbG93IHdoZW4gY2FsY3VsYXRpbmcgYGJycGAgYnkgc3dpdGNoaW5nIHRvIDY0LWJpdCBtYXRoLiBBbHNvLCB0aGVyZSdzIGEgY2hhbmdlIGZyb20gYSBkaXJlY3Qgc3VidHJhY3Rpb24gd2l0aCBgYWJzKClgIHRvIGBhYnNfZGlmZigpYC4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2h5IHRoZXkgbWFkZSB0aGF0IHNwZWNpZmljIGNoYW5nZS5cblxuUmlnaHQsIGBjYW5fY2FsY19iaXR0aW1pbmdgIGl0c2VsZiBpcyBjcml0aWNhbC4gSXQncyB0aGUgY29yZSBDQU4gc3Vic3lzdGVtIGZ1bmN0aW9uIHRoYXQgZmlndXJlcyBvdXQgdGhlIGJpdCB0aW1pbmcgcGFyYW1ldGVycywgd2hpY2ggaXMgaG93IHRoZSBDQU4gY29udHJvbGxlciBzeW5jaHJvbml6ZXMuIEkga25vdyBpdCdzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB0aHJvdWdoIG5ldGxpbmsgd2hlbiBzb21lb25lIGNvbmZpZ3VyZXMgYSBDQU4gZGV2aWNlLiBTbywgdGhpcyBjaGFuZ2UgY291bGQgZGlyZWN0bHkgaW1wYWN0IGhvdyB1c2Vyc3BhY2UgdG9vbHMgaW50ZXJhY3Qgd2l0aCBDQU4gaGFyZHdhcmUsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggaGlnaGVyIHNwZWVkcy4gVGhlIGltcGxpY2F0aW9ucyBvZiBnZXR0aW5nIHRoaXMgY2FsY3VsYXRpb24gd3JvbmcgYXJlIHByZXR0eSBzZXJpb3VzOyBjb21tdW5pY2F0aW9uIGZhaWx1cmVzIHdvdWxkIGJlIHRoZSBvYnZpb3VzIHN5bXB0b20uXG5cbkxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmb3IgQ0FOIGFuZCBDQU5fREVWIHRvIHNlZSBpZiB0aGVyZSdzIGFueSBjb250ZXh0IHRoZXJlLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgQ0FOIGZlYXR1cmVzIGFyZSBjb25maWd1cmVkLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMgb3IgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudCB0byB0aGlzIHBhdGNoLiBBbnkgYXJjaGl0ZWN0dXJhbCBkZXBlbmRlbmNpZXM/IEFueSBwb3RlbnRpYWwgY29uZmxpY3RzPyBJIHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29kZSBpdHNlbGYuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODozOC41ODk3NTIxMzJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ0MzE3MTExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9jYWxjX2JpdHRpbWluZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jPTEzND1pbnQgY2FuX2dldF9iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9iaXR0aW1pbmcuYy0xNDUtXFx0aWYgKCFidC1cXHUwMDNldHEgXFx1MDAyNlxcdTAwMjYgYnQtXFx1MDAzZWJpdHJhdGUgXFx1MDAyNlxcdTAwMjYgYnRjKVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmM6MTQ2OlxcdFxcdHJldHVybiBjYW5fY2FsY19iaXR0aW1pbmcoZGV2LCBidCwgYnRjLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmMtMTQ3LVxcdGlmIChidC1cXHUwMDNldHEgXFx1MDAyNlxcdTAwMjYgIWJ0LVxcdTAwM2ViaXRyYXRlIFxcdTAwMjZcXHUwMDI2IGJ0YylcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuYz01Mz1jYW5fdXBkYXRlX3NhbXBsZV9wb2ludChjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCAqYnRjLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jLTkyLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvY2FsY19iaXR0aW1pbmcuYzo5MzppbnQgY2FuX2NhbGNfYml0dGltaW5nKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fYml0dGltaW5nICpidCxcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2NhbGNfYml0dGltaW5nLmMtOTQtXFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0ICpidGMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6MzguNzM0MDc5MzYzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg4MDQyNDc5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgQ0FOX0RFVioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHN0YXJ0ZWQuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZWZpbml0aW9uIGZvciBgQ0FOX0RFVmAuIEknbSBnb2luZyB0byB3YW50IHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcywgaXRzIGRlZmF1bHQgc2V0dGluZywgYW5kIGFueSBjb25kaXRpb25hbCBidWlsZCBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBpdC4gVGhpcyBpcyB0aGUgZmlyc3QsIG1vc3QgZnVuZGFtZW50YWwgc3RlcCBpbiB1bmRlcnN0YW5kaW5nIHRoZSBDQU4gZGV2aWNlIHN1cHBvcnQgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGJhc2Ugc2V0dGluZ3MgYmVmb3JlIEkgZ28gZGl2aW5nIGRlZXBlciB0byBtb3JlIG51YW5jZWQgc2V0dGluZ3MuIEtub3dpbmcgaG93IGl0J3MgZGVmaW5lZCBoZWxwcyBtZSB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGZyYW1ld29yayBhbmQgaG93IGRpZmZlcmVudCBjb21wb25lbnRzIGludGVyYWN0LiBMZXQncyBzZWUgd2hhdCB0aGUgS2NvbmZpZyBmaWxlcyByZXZlYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMjYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODo0NC42MTQ1MDc1MjFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY0MzIzMTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fREVWXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWctMi1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzozOm1lbnVjb25maWcgQ0FOX0RFVlxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTQtXFx0dHJpc3RhdGUgXFxcIkNBTiBEZXZpY2UgRHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NDQuNzc4ODQ0NjJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjgyNDA3NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGZhbWlsaWFyIHdpdGgga2VybmVsIGRldmVsb3BtZW50IGFuZCBDQU4gZHJpdmVyczpcblxuKipJbnZlc3RpZ2F0aW5nIERlcGVuZGVuY2llcyBpbiB0aGUgQ0FOIFN1YnN5c3RlbSBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoaXMsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHdoYXQncyBkZXBlbmRlbnQgb24gd2hhdCBpbiB0aGUgQ0FOIGRyaXZlciBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBtb3ZlIHdpbGwgYmUgdG8gdGFrZSBhIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnYC4gVGhpcyBmaWxlLCBhcyBJIHJlY2FsbCwgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkZXBlbmRlbmNpZXMgZm9yIHZhcmlvdXMgQ0FOIGRldmljZSBvcHRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uc3RyYWludHMgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcyBvciByZWNvbW1lbmRhdGlvbnMuIEl0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBob3cgdGhleSByZWxhdGUgdG8gZWFjaCBvdGhlciBpbiB0aGlzIHBhcnQgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBhIGNydWNpYWwgc3RlcCBmb3IgZW5zdXJpbmcgYW55IG1vZGlmaWNhdGlvbnMgSSBtYWtlIGFyZSBzb3VuZCBhbmQgZG9uJ3QgaW50cm9kdWNlIGFueSB1bmZvcmVzZWVuIGJ1aWxkIG9yIHJ1bnRpbWUgaXNzdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDc3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NTAuMDYxMjU1NTA1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0MDkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRcXG4gICAzOlxcdG1lbnVjb25maWcgQ0FOX0RFVlxcbiAgIDQ6XFx0XFx0dHJpc3RhdGUgXFxcIkNBTiBEZXZpY2UgRHJpdmVyc1xcXCJcXG4gICA1OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBDQU5cXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgaXMgc2VyaWFsIGNvbW11bmljYXRpb25zIHByb3RvY29sIHVwIHRvXFxuICAgOTpcXHRcXHQgIDFNYml0L3MgZm9yIGl0cyBvcmlnaW5hbCByZWxlYXNlIChub3cga25vd24gYXMgQ2xhc3NpY2FsIENBTikgYW5kIHVwXFxuICAxMDpcXHRcXHQgIHRvIDhNYml0L3MgZm9yIHRoZSBtb3JlIHJlY2VudCBDQU4gd2l0aCBGbGV4aWJsZSBEYXRhLVJhdGVcXG4gIDExOlxcdFxcdCAgKENBTi1GRCkuIFRoZSBDQU4gYnVzIHdhcyBvcmlnaW5hbGx5IG1haW5seSBmb3IgYXV0b21vdGl2ZSwgYnV0IGlzIG5vd1xcbiAgMTI6XFx0XFx0ICB3aWRlbHkgdXNlZCBpbiBtYXJpbmUgKE5NRUEyMDAwKSwgaW5kdXN0cmlhbCwgYW5kIG1lZGljYWxcXG4gIDEzOlxcdFxcdCAgYXBwbGljYXRpb25zLiBNb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBDQU4gbmV0d29yayBwcm90b2NvbCBmYW1pbHlcXG4gIDE0OlxcdFxcdCAgUEZfQ0FOIGlzIGNvbnRhaW5lZCBpbiBcXHUwMDNjRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2Nhbi5yc3RcXHUwMDNlLlxcbiAgMTU6XFx0XFxuICAxNjpcXHRcXHQgIFRoaXMgc2VjdGlvbiBjb250YWlucyBhbGwgdGhlIENBTigtRkQpIGRldmljZSBkcml2ZXJzIGluY2x1ZGluZyB0aGVcXG4gIDE3OlxcdFxcdCAgdmlydHVhbCBvbmVzLiBJZiB5b3Ugb3duIHN1Y2ggZGV2aWNlcyBvciBwbGFuIHRvIHVzZSB0aGUgdmlydHVhbCBDQU5cXG4gIDE4OlxcdFxcdCAgaW50ZXJmYWNlcyB0byBkZXZlbG9wIGFwcGxpY2F0aW9ucywgc2F5IFkgaGVyZS5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBUbyBjb21waWxlIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmUgY2FsbGVkXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjUwLjA2MTM2MjI1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODA5OTI5NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIERlcGVuZGVuY3kgRXhwbG9yYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBDQU5fREVWYCBvcHRpb24sIGFuZCBpdCdzIHByZXR0eSBjbGVhciBpdCByZWxpZXMgb24gYENBTmAuIFRoaXMgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYENBTl9ERVZgIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBDQU4gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGBuZXQvY2FuL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgcmVsYXRlZCB0byBDQU4gYXJlIGRlZmluZWQuIEl0J3MgdGhlIHBsYWNlIHdoZXJlIEknbGwgZmluZCB0aGUgbG9naWMgdGhhdCBnb3Zlcm5zIHRoZSBidWlsZCBhbmQgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBMZXQgbWUgcHVsbCB0aGF0IHVwIGFuZCBzZWUgd2hhdCBJIGNhbiBmaW5kIGFib3V0IHRoZSBgQ0FOYCBvcHRpb24ncyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVmYXVsdHMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBvdGhlciByZWxldmFudCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGNydWNpYWwgaW4gaW50ZXJwcmV0aW5nIHRoZSBvdmVyYWxsIHNldHVwLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQgb3IgYSBtZW51IHN0cnVjdHVyZSB0aGF0IG1ha2VzIGl0IGNyeXN0YWwgY2xlYXIgaG93IGBDQU5gIGluZmx1ZW5jZXMgYENBTl9ERVZgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDMyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODo1My4wNDIzNTgxNjdaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzIxNDcyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0FOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jYW4vS2NvbmZpZy01LVxcbm5ldC9jYW4vS2NvbmZpZzo2Om1lbnVjb25maWcgQ0FOXFxubmV0L2Nhbi9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIkNBTiBidXMgc3Vic3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvY2FuL0tjb25maWc9MjI9aWYgQ0FOXFxubmV0L2Nhbi9LY29uZmlnLTIzLVxcbm5ldC9jYW4vS2NvbmZpZzoyNDpjb25maWcgQ0FOX1JBV1xcbm5ldC9jYW4vS2NvbmZpZy0yNS1cXHR0cmlzdGF0ZSBcXFwiUmF3IENBTiBQcm90b2NvbCAocmF3IGFjY2VzcyB3aXRoIENBTi1JRCBmaWx0ZXJpbmcpXFxcIlxcbi0tXFxubmV0L2Nhbi9LY29uZmlnLTMzLVxcbm5ldC9jYW4vS2NvbmZpZzozNDpjb25maWcgQ0FOX0JDTVxcbm5ldC9jYW4vS2NvbmZpZy0zNS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjYXN0IE1hbmFnZXIgQ0FOIFByb3RvY29sICh3aXRoIGNvbnRlbnQgZmlsdGVyaW5nKVxcXCJcXG4tLVxcbm5ldC9jYW4vS2NvbmZpZy00NS1cXG5uZXQvY2FuL0tjb25maWc6NDY6Y29uZmlnIENBTl9HV1xcbm5ldC9jYW4vS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiQ0FOIEdhdGV3YXkvUm91dGVyICh3aXRoIG5ldGxpbmsgY29uZmlndXJhdGlvbilcXFwiXFxuLS1cXG5uZXQvY2FuL0tjb25maWc9NTc9c291cmNlIFxcXCJuZXQvY2FuL2oxOTM5L0tjb25maWdcXFwiXFxubmV0L2Nhbi9LY29uZmlnLTU4LVxcbm5ldC9jYW4vS2NvbmZpZzo1OTpjb25maWcgQ0FOX0lTT1RQXFxubmV0L2Nhbi9LY29uZmlnLTYwLVxcdHRyaXN0YXRlIFxcXCJJU08gMTU3NjUtMiBDQU4gdHJhbnNwb3J0IHByb3RvY29sXFxcIlxcbi0tXFxubmV0L2Nhbi9qMTkzOS9LY29uZmlnLTUtXFxubmV0L2Nhbi9qMTkzOS9LY29uZmlnOjY6Y29uZmlnIENBTl9KMTkzOVxcbm5ldC9jYW4vajE5MzkvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJTQUUgSjE5MzlcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjUzLjIzOTU3OTkzNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA0OTcyNTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcyBvbiB0YWNrbGluZyB0aGlzIHBhcnRpY3VsYXIgdGFzazpcblxuKipFeGFtaW5pbmcgQ0FOIERlcGVuZGVuY2llcyBpbiBLY29uZmlnKipcblxuUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBDb250cm9sbGVyIEFyZWEgTmV0d29yaywgb3IgQ0FOLiBNeSBpbnN0aW5jdCwgYW5kIGJhc2VkIG9uIHBhc3QgZXhwZXJpZW5jZSwgdGVsbHMgbWUgdGhhdCB0aGUgcGxhY2UgdG8gc3RhcnQgZGlnZ2luZyBpcyB0aGUgYG5ldC9jYW4vS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBnby10byBwbGFjZSBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIENBTiBmdW5jdGlvbmFsaXR5LiBJdCdzIHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMgYXJlIGxpa2VseSBkZWZpbmVkIOKAkyB0aGUgb3RoZXIgZmVhdHVyZXMgb3IgY29tcG9uZW50cyB0aGF0IG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgQ0FOIHN1cHBvcnQgY2FuIGV2ZW4gYmUgY29uc2lkZXJlZC4gVGhpcyBLY29uZmlnIGZpbGUgc2hvdWxkIGNvbnRhaW4gdGhlIEJvb2xlYW4gb3B0aW9ucyBmb3IgZW5hYmxpbmcgdmFyaW91cyBhc3BlY3RzIG9mIENBTi4gSSdsbCBuZWVkIHRvIG1ldGljdWxvdXNseSByZWFkIHRocm91Z2ggaXQgYW5kIGlkZW50aWZ5IHdoaWNoIG9wdGlvbnMgcmVxdWlyZSB3aGF0LCBhbmQgaG93IHRoZXkgcmVsYXRlIHRvIHRoZSBvdmVyYWxsIENBTiBzeXN0ZW0uIExldCdzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NjgxLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NTYuNjQ0NTU1MzM5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNTc2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgQ29udHJvbGxlciBBcmVhIE5ldHdvcmsgKENBTikgbmV0d29yayBsYXllciBjb3JlIGNvbmZpZ3VyYXRpb25cXG4gICA0OlxcdCNcXG4gICA1OlxcdFxcbiAgIDY6XFx0bWVudWNvbmZpZyBDQU5cXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJDQU4gYnVzIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDg6XFx0XFx0c2VsZWN0IFNLQl9FWFRFTlNJT05TXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIENvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIGlzIGEgc2xvdyAodXAgdG8gMU1iaXQvcykgc2VyaWFsXFxuICAxMTpcXHRcXHQgIGNvbW11bmljYXRpb25zIHByb3RvY29sLiBEZXZlbG9wbWVudCBvZiB0aGUgQ0FOIGJ1cyBzdGFydGVkIGluXFxuICAxMjpcXHRcXHQgIDE5ODMgYXQgUm9iZXJ0IEJvc2NoIEdtYkgsIGFuZCB0aGUgcHJvdG9jb2wgd2FzIG9mZmljaWFsbHlcXG4gIDEzOlxcdFxcdCAgcmVsZWFzZWQgaW4gMTk4Ni4gVGhlIENBTiBidXMgd2FzIG9yaWdpbmFsbHkgbWFpbmx5IGZvciBhdXRvbW90aXZlLFxcbiAgMTQ6XFx0XFx0ICBidXQgaXMgbm93IHdpZGVseSB1c2VkIGluIG1hcmluZSAoTk1FQTIwMDApLCBpbmR1c3RyaWFsLCBhbmQgbWVkaWNhbFxcbiAgMTU6XFx0XFx0ICBhcHBsaWNhdGlvbnMuIE1vcmUgaW5mb3JtYXRpb24gb24gdGhlIENBTiBuZXR3b3JrIHByb3RvY29sIGZhbWlseVxcbiAgMTY6XFx0XFx0ICBQRl9DQU4gaXMgY29udGFpbmVkIGluIFxcdTAwM2NEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnJzdFxcdTAwM2UuXFxuICAxNzpcXHRcXG4gIDE4OlxcdFxcdCAgSWYgeW91IHdhbnQgQ0FOIHN1cHBvcnQgeW91IHNob3VsZCBzYXkgWSBoZXJlIGFuZCBhbHNvIHRvIHRoZVxcbiAgMTk6XFx0XFx0ICBzcGVjaWZpYyBkcml2ZXIgZm9yIHlvdXIgY29udHJvbGxlcihzKSB1bmRlciB0aGUgTmV0d29yayBkZXZpY2VcXG4gIDIwOlxcdFxcdCAgc3VwcG9ydCBzZWN0aW9uLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozODo1Ni42NDQ2OTI5MTlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAwMzUxODQ1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFzc2Vzc21lbnQgb2YgdGhlIENBTiBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIENBTiBjb25maWd1cmF0aW9ucywgYW5kIGl0IHNlZW1zIGxpa2UgYENBTmAgYW5kIGBDQU5fREVWYCBhcmUgdGhlIGtleSBwbGF5ZXJzLiBCdXQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIHNldHVwLCBJJ20gZ29pbmcgdG8gbmVlZCBhIHZpcnR1YWwgQ0FOIGRldmljZSwgc29tZXRoaW5nIGxpa2UgYENBTl9WQ0FOYCBvciBgQ0FOX1ZYQ0FOYC4gSXQgd291bGQgYmUgaWRlYWwgZm9yIGEgcXVpY2sgdGVzdC4gVGltZSB0byBkaWcgaW50byBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgIGFuZCBzZWUgd2hhdCB2aXJ0dWFsIG9wdGlvbnMgYXJlIGF2YWlsYWJsZSwgYW5kIGhvdyB0aGV5J3JlIGltcGxlbWVudGVkLiBMZXQncyBzZWUgd2hhdCB0aGUga2VybmVsIGhhcyB0byBvZmZlciBpbiB0aGlzIGFyZWEuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyMjUsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM4OjU5LjY0ODIxNTU4OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5NjA3OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fVkNBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTIzPWlmIENBTl9ERVZcXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0yNC1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZzoyNTpjb25maWcgQ0FOX1ZDQU5cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0yNi1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBMb2NhbCBDQU4gSW50ZXJmYWNlICh2Y2FuKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzg6NTkuNzU3ODMwMjExWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTAxMTA4NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0J3MgZ29pbmcgb24gaGVyZS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIGBDQU5fVkNBTmAgZmVhdHVyZSB1c2VzIHRoZSBgY2FuX2NhbGNfYml0dGltaW5nYCBmdW5jdGlvbi4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCBJIGtub3cgaG93IHRvIHRyYWNrIHRoaXMgZG93biBlZmZpY2llbnRseS5cblxuRmlyc3QsIEknbGwgdHJhY2UgdGhyb3VnaCB0aGUgY29kZS4gSSBzZWUgdGhhdCBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyBjYWxsZWQgYnkgYGNhbl9nZXRfYml0dGltaW5nYC4gT2theSwgdGhhdCdzIHN0ZXAgb25lLiBOb3csIHdoZXJlIGlzIGBjYW5fZ2V0X2JpdHRpbWluZ2AgdXNlZD8gQWgsIGl0IGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgYnkgYGNhbl9jaGFuZ2VsaW5rYC4gVGhhdCdzIGluIGBkcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuY2AsIHdoaWNoIG1ha2VzIHNlbnNlIGFzIGl0J3MgdGhlIG5ldHdvcmstbGV2ZWwgY29uZmlndXJhdGlvbi5cblxuU28gdGhlIGNhbGwgc3RhY2sgaXM6IGBjYW5fY2FsY19iaXR0aW1pbmdgIC1cdTAwM2UgYGNhbl9nZXRfYml0dGltaW5nYCAtXHUwMDNlIGBjYW5fY2hhbmdlbGlua2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOTowMy40Njc5NDQwOTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MzQyOTcyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjYW5fZ2V0X2JpdHRpbWluZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jPTExNj1jYW5fdmFsaWRhdGVfYml0cmF0ZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jLTEzMy1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2JpdHRpbWluZy5jOjEzNDppbnQgY2FuX2dldF9iaXR0aW1pbmcoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGNhbl9iaXR0aW1pbmcgKmJ0LFxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvYml0dGltaW5nLmMtMTM1LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0ICpidGMsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYz00MzY9c3RhdGljIGludCBjYW5fZGJ0X2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNDc0LVxcdG1lbWNweShcXHUwMDI2ZGJ0LCBubGFfZGF0YShkYXRhX2JpdHRpbWluZyksIHNpemVvZihkYnQpKTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzo0NzU6XFx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2ZGJ0LCBkYnRfcGFyYW1zLVxcdTAwM2VkYXRhX2JpdHRpbWluZ19jb25zdCxcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy00NzYtXFx0XFx0XFx0XFx0ZGJ0X3BhcmFtcy1cXHUwMDNlZGF0YV9iaXRyYXRlX2NvbnN0LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9NTk0PXN0YXRpYyBpbnQgY2FuX2NoYW5nZWxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5sYXR0ciAqdGJbXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTYyNC1cXHRcXHRtZW1jcHkoXFx1MDAyNmJ0LCBubGFfZGF0YShkYXRhW0lGTEFfQ0FOX0JJVFRJTUlOR10pLCBzaXplb2YoYnQpKTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzo2MjU6XFx0XFx0ZXJyID0gY2FuX2dldF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2YnQsXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNjI2LVxcdFxcdFxcdFxcdFxcdHByaXYtXFx1MDAzZWJpdHRpbWluZ19jb25zdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MDMuNzExMzc5NDMxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzcwMTA4MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBgY2FuX2NoYW5nZWxpbmtgIGFuZCBgdmNhbmAgU3VwcG9ydCoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCBgY2FuX2NoYW5nZWxpbmtgLiBJIGtub3cgdGhhdCdzIGEgY3J1Y2lhbCBwYXJ0IG9mIG5ldGxpbmssIGJ1dCBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggaWYgYHZjYW5gLCB0aGUgdmlydHVhbCBDQU4gaW50ZXJmYWNlLCBhY3R1YWxseSBpbXBsZW1lbnRzIGl0LiBJdCdzIGEga2V5IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdGllcyBhbmQgbGltaXRhdGlvbnMgb2YgdGhlIHZpcnR1YWwgaW50ZXJmYWNlLiBUaGUgYmVzdCB3YXkgdG8gY2hlY2sgdGhpcyBpcyB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIGl0c2VsZiwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC9jYW4vdmNhbi5jYC4gTGV0J3Mgc2VlIHdoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgcmV2ZWFsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjkxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MDcuMjQ4Mzk0MDk3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTA0NjI1OTMsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9jaGFuZ2VsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjA3LjM1ODg2NzcyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4NjI4NTg2NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipWY2FuIEltcGxlbWVudGF0aW9uIERpdmUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHZpcnR1YWwgQ0FOIGludGVyZmFjZSwgYHZjYW5gLCBhY3R1YWxseSBpbnRlcmFjdHMgd2l0aCB0aGUgbmV0d29ya2luZyBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gYGRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gd291bGQgbG9naWNhbGx5IHJlc2lkZS4gVGhlIHBsYWNlIHRvIHN0YXJ0IGRpdmluZyBkZWVwZXIgaXMgZGVmaW5pdGVseSB3aXRoIHRoZSBgcnRubF9saW5rX29wc2Agc3RydWN0dXJlLiBUaGlzIGlzIHRoZSBjcnVjaWFsIHBvaW50IGZvciBhIHZpcnR1YWwgZGV2aWNlLCBhcyBpdCBkZWZpbmVzIHRoZSBuZXRsaW5rIG9wZXJhdGlvbnMgYSBkcml2ZXIgcHJvdmlkZXMgdG8gY29uZmlndXJlIGFuZCBjb250cm9sIHRoZSBsaW5rLiBJJ2xsIG5lZWQgdG8gc2NydXRpbml6ZSBob3cgYHZjYW5gIHBvcHVsYXRlcyBhbmQgdXRpbGl6ZXMgdGhpcyBzdHJ1Y3R1cmUgdG8gZnVsbHkgZ3Jhc3AgaXRzIGJlaGF2aW9yIHdpdGhpbiB0aGUgYnJvYWRlciBrZXJuZWwgbmV0d29ya2luZyBmcmFtZXdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MDEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxMC4yMjE3MzE2OThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMDAzMzkwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydG5sX2xpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi92Y2FuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0xODktXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTE5MS1cXHQua2luZCA9IERSVl9OQU1FLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxMC4zNDE3NzE0NTFaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY2MDc3NjUxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogRGl2aW5nIGludG8gYHZjYW5fbGlua19vcHNgKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gaXQuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHNpbXBsZTogdGltZSB0byBkaXNzZWN0IGB2Y2FuX2xpbmtfb3BzYC4gTm8gcHJlYW1ibGUsIGp1c3Qgc3RyYWlnaHQgdG8gdGhlIHBvaW50LiBJJ20gYXNzdW1pbmcsIGdpdmVuIG15IGxldmVsIG9mIGV4cGVydGlzZSwgdGhhdCBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIHRoZSBicm9hZGVyIENBTiBuZXR3b3JraW5nIGFyY2hpdGVjdHVyZSBhbmQgdGhlIHB1cnBvc2Ugb2YgdGhlc2Ugb3BlcmF0aW9ucy4gVGhpcyBzdWdnZXN0cyBhbiBpbnZlc3RpZ2F0aW9uLCBlaXRoZXIgdG8gdW5kZXJzdGFuZCBpdHMgb3BlcmF0aW9uLCBkZWJ1ZyBpdCBvciB0byBtb2RpZnkgaXQuIEknbSBnb2luZyBpbiB3aXRoIGEgdGFyZ2V0ZWQgYXBwcm9hY2gsIHJlYWR5IHRvIGdldCB0byB0aGUgY29yZSBtZWNoYW5pY3MuIFRoZXJlJ3Mgbm8gbmVlZCBmb3IgaW50cm9kdWN0b3J5IGV4cGxhbmF0aW9ucyBoZXJlLCBqdXN0IHRoZSBjb2RlLiBJJ20gcHJlcGFyZWQgdG8gZm9sbG93IGZ1bmN0aW9uIGNhbGxzLCBleHBsb3JlIGRhdGEgc3RydWN0dXJlcywgYW5kIHVucmF2ZWwgYW55IGNvbXBsZXhpdGllcyB0aGUgaW1wbGVtZW50YXRpb24gbWlnaHQgaG9sZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgzNiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjE0LjAwMjU1Njk3OVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzkyODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL3ZjYW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxODA6XFx0XFxuIDE4MTpcXHRcXHQvKiBzZXQgZmxhZ3MgYWNjb3JkaW5nIHRvIGRyaXZlciBjYXBhYmlsaXRpZXMgKi9cXG4gMTgyOlxcdFxcdGlmIChlY2hvKVxcbiAxODM6XFx0XFx0XFx0ZGV2LVxcdTAwM2VmbGFncyB8PSBJRkZfRUNITztcXG4gMTg0OlxcdFxcbiAxODU6XFx0XFx0ZGV2LVxcdTAwM2VuZXRkZXZfb3BzXFx0XFx0PSBcXHUwMDI2dmNhbl9uZXRkZXZfb3BzO1xcbiAxODY6XFx0XFx0ZGV2LVxcdTAwM2VldGh0b29sX29wc1xcdD0gXFx1MDAyNnZjYW5fZXRodG9vbF9vcHM7XFxuIDE4NzpcXHRcXHRkZXYtXFx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2XFx0PSB0cnVlO1xcbiAxODg6XFx0fVxcbiAxODk6XFx0XFxuIDE5MDpcXHRzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdmNhbl9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xcbiAxOTE6XFx0XFx0LmtpbmQgPSBEUlZfTkFNRSxcXG4gMTkyOlxcdFxcdC5wcml2X3NpemUgPSBzaXplb2Yoc3RydWN0IGNhbl9tbF9wcml2KSxcXG4gMTkzOlxcdFxcdC5zZXR1cCA9IHZjYW5fc2V0dXAsXFxuIDE5NDpcXHR9O1xcbiAxOTU6XFx0XFxuIDE5NjpcXHRzdGF0aWMgX19pbml0IGludCB2Y2FuX2luaXRfbW9kdWxlKHZvaWQpXFxuIDE5NzpcXHR7XFxuIDE5ODpcXHRcXHRwcl9pbmZvKFxcXCJWaXJ0dWFsIENBTiBpbnRlcmZhY2UgZHJpdmVyXFxcXG5cXFwiKTtcXG4gMTk5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxNC4wMDMwNDQ1MzlaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk4NDMwMTA1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgY2FuX2NoYW5nZWxpbmtgIGFuZCBgdmNhbmAqKlxuXG5IbW0sIGl0IHNlZW1zIGxpa2UgYHZjYW5gLCB3aGljaCBJJ20gcHJldHR5IGZhbWlsaWFyIHdpdGgsIGRvZXNuJ3QgYWN0dWFsbHkgbGV2ZXJhZ2UgdGhlIGBjYW5fY2hhbmdlbGlua2AgZnVuY3Rpb25hbGl0eS4gVGhhdCdzIGEgYml0IHVuZXhwZWN0ZWQuIEkgd2FzIGp1c3QgcmV2aWV3aW5nIHNvbWUgY29kZSBhbmQgbm90aWNlZCBpdHMgYWJzZW5jZSwgYW5kIGl0IHBpcXVlZCBteSBjdXJpb3NpdHkuXG5cbkxldCBtZSBzZWUuLi4gcmlnaHQsICpvZiBjb3Vyc2UqLiBJIHNlZW0gdG8gcmVjYWxsIG5vdyB0aGF0IGBjYW5fY2hhbmdlbGlua2AgaXMgZGVmaW5lZCBhbmQgcmVnaXN0ZXJlZCBzcGVjaWZpY2FsbHkgd2l0aGluIGBkcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuY2AuIFRoYXQgZmlsZSBtYWtlcyB0aGUgbGluazsgaXQncyB0aGUgY29yZSBvZiB0aGUgbmV0bGluayBpbnRlcmZhY2UgZm9yIENBTiBkZXZpY2VzLiBTbywgbXkgaW5pdGlhbCB0aG91Z2h0IHdhcyBwYXJ0aWFsbHkgY29ycmVjdCAtIGl0J3MgcmVnaXN0ZXJlZCBpbiB0aGUga2VybmVsIC0gaXQncyBqdXN0IG5vdCB1dGlsaXplZCB3aGVyZSBJIHRob3VnaHQgaXQgd291bGQgYmUuIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IGB2Y2FuYCBhY3R1YWxseSBoYW5kbGVzIGxpbmsgY2hhbmdlcyBhbmQgaWYgaXQgZG9lcyBzbyB0aHJvdWdoIGFub3RoZXIgbWVjaGFuaXNtLiBQZXJoYXBzIHRoZXJlJ3MgYW4gaW50ZXJuYWwgYXBwcm9hY2gsIG9yIGl0IHVzZXMgYSByZWxhdGVkIG5ldGxpbmsgZnVuY3Rpb24gdG8gYWNoaWV2ZSB0aGUgc2FtZSByZXN1bHQuIEknbGwgbmVlZCB0byBkaWcgZGVlcGVyIGludG8gdGhlIGB2Y2FuYCBkcml2ZXIgaXRzZWxmIHRvIHNlZSB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNjgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjE3Ljk4NzM0OTk4NloiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2MzY3MTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNhbl9jaGFuZ2VsaW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9kZXYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTUyND1zdGF0aWMgaW50IGNhbl9wd21fY2hhbmdlbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNTkzLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjU5NDpzdGF0aWMgaW50IGNhbl9jaGFuZ2VsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBubGF0dHIgKnRiW10sXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtNTk1LVxcdFxcdFxcdCAgc3RydWN0IG5sYXR0ciAqZGF0YVtdLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTA5MD1zdHJ1Y3QgcnRubF9saW5rX29wcyBjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTEwOTctXFx0Lm5ld2xpbmtcXHQ9IGNhbl9uZXdsaW5rLFxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jOjEwOTg6XFx0LmNoYW5nZWxpbmtcXHQ9IGNhbl9jaGFuZ2VsaW5rLFxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTEwOTktXFx0LmRlbGxpbmtcXHQ9IGNhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToxOC4xMzM3MjU5OTdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgzNDM4NTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQ2hlY2tpbmcgZm9yIEV4cG9ydGVkIEZ1bmN0aW9uYWxpdHkqKlxuXG5Pa2F5LCBzbyBgY2FuX2xpbmtfb3BzYC4uLiBJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IGlmIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbiBvciBvYmplY3QgaXMgYWN0dWFsbHkgZXhwb3NlZCBmb3IgdXNlIG91dHNpZGUgb2YgaXRzIGltbWVkaWF0ZSBzY29wZS4gSXMgaXQgc29tZXRoaW5nIEkgY2FuIGRpcmVjdGx5IGNhbGwgb3IgYWNjZXNzIGZyb20gZWxzZXdoZXJlLCBvciBpcyBpdCBoaWRkZW4sIHByaXZhdGUsIG9yIG9ubHkgbWVhbnQgZm9yIGludGVybmFsIHVzZSB3aXRoaW4gYSBtb2R1bGU/IEkgbmVlZCB0byBrbm93IGlmIEkgY2FuIGxldmVyYWdlIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb25hbGl0eSBpbiBteSBjdXJyZW50IHRhc2suIFRpbWUgdG8gdmVyaWZ5IGl0cyBleHBvcnQgc3RhdHVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTYwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MjAuOTY4MTE5Njk4WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzE5ODQwMzIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY2FuX2xpbmtfb3BzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz02MTE9aW50IHJlZ2lzdGVyX2NhbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NDQtXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NDU6XFx0ZGV2LVxcdTAwM2VydG5sX2xpbmtfb3BzID0gXFx1MDAyNmNhbl9saW5rX29wcztcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0Ni1cXHRuZXRpZl9jYXJyaWVyX29mZihkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz02NjI9c3RydWN0IGNhbl9wcml2ICpzYWZlX2NhbmRldl9wcml2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NjMte1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjY0OlxcdGlmIChkZXYtXFx1MDAzZXR5cGUgIT0gQVJQSFJEX0NBTiB8fCBkZXYtXFx1MDAzZXJ0bmxfbGlua19vcHMgIT0gXFx1MDAyNmNhbl9saW5rX29wcylcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY2NS1cXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTEwODY9c3RhdGljIHZvaWQgY2FuX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTEwODktXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6MTA5MDpzdHJ1Y3QgcnRubF9saW5rX29wcyBjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMDkxLVxcdC5raW5kXFx0XFx0PSBcXFwiY2FuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jPTExMDY9aW50IGNhbl9uZXRsaW5rX3JlZ2lzdGVyKHZvaWQpXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmMtMTEwNy17XFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM6MTEwODpcXHRyZXR1cm4gcnRubF9saW5rX3JlZ2lzdGVyKFxcdTAwMjZjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMDktfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9uZXRsaW5rLmM9MTExMT12b2lkIGNhbl9uZXRsaW5rX3VucmVnaXN0ZXIodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYy0xMTEyLXtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L25ldGxpbmsuYzoxMTEzOlxcdHJ0bmxfbGlua191bnJlZ2lzdGVyKFxcdTAwMjZjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvbmV0bGluay5jLTExMTQtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xNzA9c3RhdGljIHZvaWQgdmNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0xODktXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoxOTA6c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIHZjYW5fbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTE5MS1cXHQua2luZCA9IERSVl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0xOTY9c3RhdGljIF9faW5pdCBpbnQgdmNhbl9pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0yMDItXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoyMDM6XFx0cmV0dXJuIHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2dmNhbl9saW5rX29wcyk7XFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYy0yMDQtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYz0yMDY9c3RhdGljIF9fZXhpdCB2b2lkIHZjYW5fY2xlYW51cF9tb2R1bGUodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vdmNhbi5jLTIwNy17XFxuZHJpdmVycy9uZXQvY2FuL3ZjYW4uYzoyMDg6XFx0cnRubF9saW5rX3VucmVnaXN0ZXIoXFx1MDAyNnZjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi92Y2FuLmMtMjA5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTE4MT1zdGF0aWMgdm9pZCB2eGNhbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAwLS8qIGZvcndhcmQgZGVjbGFyYXRpb24gZm9yIHJ0bmxfY3JlYXRlX2xpbmsoKSAqL1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjIwMTpzdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgdnhjYW5fbGlua19vcHM7XFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTIwMz1zdGF0aWMgaW50IHZ4Y2FuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTIzNi1cXHRwZWVyID0gcnRubF9jcmVhdGVfbGluayhwZWVyX25ldCwgaWZuYW1lLCBuYW1lX2Fzc2lnbl90eXBlLFxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjIzNzpcXHRcXHRcXHRcXHRcXHUwMDI2dnhjYW5fbGlua19vcHMsIHRicCwgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0yMzgtXFx0aWYgKElTX0VSUihwZWVyKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jPTMwOD1zdGF0aWMgc3RydWN0IG5ldCAqdnhjYW5fZ2V0X2xpbmtfbmV0KGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMTUtXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM6MzE2OnN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyB2eGNhbl9saW5rX29wcyA9IHtcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMTctXFx0LmtpbmRcXHRcXHQ9IERSVl9OQU1FLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3Z4Y2FuLmM9MzI4PXN0YXRpYyBfX2luaXQgaW50IHZ4Y2FuX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzMS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYzozMzI6XFx0cmV0dXJuIHJ0bmxfbGlua19yZWdpc3RlcihcXHUwMDI2dnhjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzMy19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYz0zMzU9c3RhdGljIF9fZXhpdCB2b2lkIHZ4Y2FuX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vdnhjYW4uYy0zMzYte1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jOjMzNzpcXHRydG5sX2xpbmtfdW5yZWdpc3RlcihcXHUwMDI2dnhjYW5fbGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2Nhbi92eGNhbi5jLTMzOC19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjIxLjI0MDExMTQ5WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTc2Mzk5NTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgc3VtbWFyaXplZCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhc3N1bWluZyB0aGUgY29udGV4dCBpcyBteSBhcmVhIG9mIGV4cGVydGlzZTpcblxuKipDQU4gRGV2aWNlIFJlZ2lzdHJhdGlvbiBhbmQgT3BlcmF0aW9uIFRob3VnaHRzKipcblxuQWxyaWdodCwgbGV0J3MgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgYGNhbl9saW5rX29wc2Agc3RydWN0dXJlIGlzIHRoZSBrZXkgdG8gb3BlcmF0aW9ucyBvbiBDQU4gZGV2aWNlcywgYW5kIHNwZWNpZmljYWxseSwgaXQncyB1c2VkIHdpdGggZGV2aWNlcyB0aGF0IGFyZSBicm91Z2h0IGludG8gdGhlIHN5c3RlbSB2aWEgYHJlZ2lzdGVyX2NhbmRldmAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZS4gQnV0IGhlcmUncyB0aGUga2lja2VyOiB2aXJ0dWFsIENBTiBkZXZpY2VzLCBsaWtlIGB2Y2FuYCBhbmQgYHZ4Y2FuYCwgdGhleSBvcGVyYXRlIGEgYml0IGRpZmZlcmVudGx5LiBUaGV5IGhhdmUgdGhlaXIgb3duIGBydG5sX2xpbmtfb3BzYCBzdHJ1Y3R1cmVzLiBOb3csIHRoZSBxdWVzdGlvbiB0aGF0IHNwcmluZ3MgdG8gbWluZCBpcywgZG8gYHZjYW5gIG9yIGB2eGNhbmAgKmFjdHVhbGx5KiB1c2UgYHJlZ2lzdGVyX2NhbmRldmA/IE9yIGRvIHRoZXkgaGF2ZSB0aGVpciBvd24gaW5kZXBlbmRlbnQgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBjb2RlIHRvIHNlZSB3aGF0IHRoZXkgdXNlLiBJdCdzIGEga2V5IGRpc3RpbmN0aW9uIGJlY2F1c2UgaXQgZGljdGF0ZXMgaG93IHRoZXNlIHZpcnR1YWwgaW50ZXJmYWNlcyBhcmUgbWFuYWdlZCB3aXRoaW4gdGhlIGJyb2FkZXIgQ0FOIHN1YnN5c3RlbSwgYW5kIHdoZXRoZXIgdGhleSBmdWxseSBhbGlnbiB3aXRoIHRoZSBzdGFuZGFyZCBwaHlzaWNhbCBkZXZpY2UgcmVnaXN0cmF0aW9uIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6OTUyOSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjI0Ljg1Nzc1NTc4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0OTgwNzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlZ2lzdGVyX2NhbmRldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTE0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4uYz0xMDQ2PXN0YXRpYyBpbnQgYXQ5MV9jYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jLTExMzYtXFxuZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmM6MTEzNzpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vYXQ5MV9jYW4uYy0xMTM4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jPTkyOT1zdGF0aWMgaW50IGJ4Y2FuX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDE2LVxcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jOjEwMTc6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jLTEwMTgtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM9MTAzND1zdGF0aWMgdm9pZCBieGNhbl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ieGNhbi5jLTEwMzgtXFxuZHJpdmVycy9uZXQvY2FuL2J4Y2FuLmM6MTAzOTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vYnhjYW4uYy0xMDQwLVxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVxcdTAwM2VjbGspO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYz0xMzY3PWludCByZWdpc3Rlcl9jX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM3OS1cXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jOjEzODA6XFx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM4MS19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW5fbWFpbi5jPTEzODQ9dm9pZCB1bnJlZ2lzdGVyX2NfY2FuX2RldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2Nhbi9jX2Nhbi9jX2Nhbl9tYWluLmMtMTM4NS17XFxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYzoxMzg2OlxcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuX21haW4uYy0xMzg3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYz0xMDA2PXN0YXRpYyBpbnQgY2FuMzI3X2xkaXNjX29wZW4oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDQyLVxcdC8qIExldCAnZXIgcmlwICovXFxuZHJpdmVycy9uZXQvY2FuL2NhbjMyNy5jOjEwNDM6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KGVsbS1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmMtMTA0NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmM9MTA2MT1zdGF0aWMgdm9pZCBjYW4zMjdfbGRpc2NfY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYy0xMDY1LVxcdC8qIHVucmVnaXN0ZXJfbmV0ZGV2KCkgY2FsbHMgLm5kb19zdG9wKCkgc28gd2UgZG9uJ3QgaGF2ZSB0by4gKi9cXG5kcml2ZXJzL25ldC9jYW4vY2FuMzI3LmM6MTA2NjpcXHR1bnJlZ2lzdGVyX2NhbmRldihlbG0tXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NhbjMyNy5jLTEwNjctXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYz04NDM9aW50IHJlZ2lzdGVyX2NjNzcwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYy04NjktXFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM6ODcwOlxcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY2M3NzAvY2M3NzAuYy04NzEtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM9ODc0PXZvaWQgdW5yZWdpc3Rlcl9jYzc3MGRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODc2LVxcdHNldF9yZXNldF9tb2RlKGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmM6ODc3OlxcdHVucmVnaXN0ZXJfY2FuZGV2KGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2NjNzcwL2NjNzcwLmMtODc4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9iYXNlLmM9MTM0Nj1pbnQgY3R1Y2FuX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgX19pb21lbSAqYWRkciwgaW50IGlycSwgdW5zaWduZWQgaW50IG50eGJ1ZnMsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTE0MzQtXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX2Jhc2UuYzoxNDM1OlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfYmFzZS5jLTE0MzYtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jPTIxNz1zdGF0aWMgdm9pZCBjdHVjYW5fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9jdHVjYW5mZC9jdHVjYW5mZF9wY2kuYy0yMzktXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BjaS5jOjI0MDpcXHRcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vY3R1Y2FuZmQvY3R1Y2FuZmRfcGNpLmMtMjQxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmM9ODk9c3RhdGljIHZvaWQgY3R1Y2FuX3BsYXRmb3JtX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTUtXFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmM6OTY6XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkL2N0dWNhbmZkX3BsYXRmb3JtLmMtOTctXFx0cG1fcnVudGltZV9kaXNhYmxlKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYz01OTk9Y2FuX2JpdHRpbWluZ19jb25zdF92YWxpZChjb25zdCBzdHJ1Y3QgY2FuX2JpdHRpbWluZ19jb25zdCAqYnRjKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02MTAtLyogUmVnaXN0ZXIgdGhlIENBTiBuZXR3b3JrIGRldmljZSAqL1xcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjExOmludCByZWdpc3Rlcl9jYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTYxMi17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY0OS19XFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYzo2NTA6RVhQT1JUX1NZTUJPTF9HUEwocmVnaXN0ZXJfY2FuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1MS1cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1Mi0vKiBVbnJlZ2lzdGVyIHRoZSBDQU4gbmV0d29yayBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jOjY1Mzp2b2lkIHVucmVnaXN0ZXJfY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2Rldi9kZXYuYy02NTYtfVxcbmRyaXZlcnMvbmV0L2Nhbi9kZXYvZGV2LmM6NjU3OkVYUE9SVF9TWU1CT0xfR1BMKHVucmVnaXN0ZXJfY2FuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZGV2L2Rldi5jLTY1OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYz0yMzI9c3RhdGljIGludCBfX2luaXQgZHVtbXlfY2FuX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNTktXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI2MDpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjYxLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYz0yNzI9c3RhdGljIHZvaWQgX19leGl0IGR1bW15X2Nhbl9leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjc2LVxcdG5ldGRldl9kYmcoZGV2LCBcXFwiZHVtbXktY2FuIGJ5ZSBieWVcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNzc6XFx0dW5yZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjc4LVxcdGZyZWVfY2FuZGV2KGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYz0zMjc9c3RhdGljIHZvaWQgcGNpNDAyX3VucmVnaXN0ZXJfY29yZShzdHJ1Y3QgYWNjX2NvcmUgKmNvcmUpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy0zMjktXFx0bmV0ZGV2X2luZm8oY29yZS1cXHUwMDNlbmV0ZGV2LCBcXFwidW5yZWdpc3RlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM6MzMwOlxcdHVucmVnaXN0ZXJfY2FuZGV2KGNvcmUtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmMtMzMxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM9MzM2PXN0YXRpYyBpbnQgcGNpNDAyX2luaXRfY29yZXMoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZXNkL2VzZF80MDJfcGNpLWNvcmUuYy0zODktXFxuZHJpdmVycy9uZXQvY2FuL2VzZC9lc2RfNDAyX3BjaS1jb3JlLmM6MzkwOlxcdFxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9lc2QvZXNkXzQwMl9wY2ktY29yZS5jLTM5MS1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYz0xODcyPXN0YXRpYyBpbnQgcmVnaXN0ZXJfZmxleGNhbmRldihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmMtMTkxOS1cXG5kcml2ZXJzL25ldC9jYW4vZmxleGNhbi9mbGV4Y2FuLWNvcmUuYzoxOTIwOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jLTE5MjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jPTE5Mzk9c3RhdGljIHZvaWQgdW5yZWdpc3Rlcl9mbGV4Y2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmMtMTk0MC17XFxuZHJpdmVycy9uZXQvY2FuL2ZsZXhjYW4vZmxleGNhbi1jb3JlLmM6MTk0MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9mbGV4Y2FuL2ZsZXhjYW4tY29yZS5jLTE5NDItfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM9MTU2OT1zdGF0aWMgaW50IGdyY2FuX3NldHVwX25ldGRldihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE2MjQtXFxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM6MTYyNTpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYy0xNjI2LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZ3JjYW4uYz0xNjk5PXN0YXRpYyB2b2lkIGdyY2FuX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE3MDMtXFxuZHJpdmVycy9uZXQvY2FuL2dyY2FuLmM6MTcwNDpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpOyAvKiBXaWxsIGluIHR1cm4gY2FsbCBncmNhbl9jbG9zZSAqL1xcbmRyaXZlcnMvbmV0L2Nhbi9ncmNhbi5jLTE3MDUtXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jPTk1Mz1zdGF0aWMgaW50IGlmaV9jYW5mZF9wbGF0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMTktXFxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYzoxMDIwOlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwMjEtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYz0xMDM2PXN0YXRpYyB2b2lkIGlmaV9jYW5mZF9wbGF0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2lmaV9jYW5mZC9pZmlfY2FuZmQuYy0xMDM5LVxcbmRyaXZlcnMvbmV0L2Nhbi9pZmlfY2FuZmQvaWZpX2NhbmZkLmM6MTA0MDpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vaWZpX2NhbmZkL2lmaV9jYW5mZC5jLTEwNDEtXFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jPTE4ODk9c3RhdGljIGludCBpY2FuM19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYy0yMDAxLVxcdC8qIHJlZ2lzdGVyIHdpdGggdGhlIExpbnV4IENBTiBsYXllciAqL1xcbmRyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmM6MjAwMjpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYy0yMDAzLVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jPTEwMjc9c3RhdGljIGludCBrdmFzZXJfcGNpZWZkX3JlZ19jYW5kZXYoc3RydWN0IGt2YXNlcl9wY2llZmQgKnBjaWUpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYy0xMDMxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBwY2llLVxcdTAwM2Vucl9jaGFubmVsczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6MTAzMjpcXHRcXHRpbnQgcmV0ID0gcmVnaXN0ZXJfY2FuZGV2KHBjaWUtXFx1MDAzZWNhbltpXS1cXHUwMDNlY2FuLmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtMTAzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTEwMzgtXFx0XFx0XFx0Zm9yIChqID0gMDsgaiBcXHUwMDNjIGk7IGorKylcXG5kcml2ZXJzL25ldC9jYW4va3Zhc2VyX3BjaWVmZC9rdmFzZXJfcGNpZWZkX2NvcmUuYzoxMDM5OlxcdFxcdFxcdFxcdHVucmVnaXN0ZXJfY2FuZGV2KHBjaWUtXFx1MDAzZWNhbltqXS1cXHUwMDNlY2FuLmRldik7XFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmMtMTA0MC1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM9MTg3Mz1zdGF0aWMgdm9pZCBrdmFzZXJfcGNpZWZkX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTE4ODAtXFxuZHJpdmVycy9uZXQvY2FuL2t2YXNlcl9wY2llZmQva3Zhc2VyX3BjaWVmZF9jb3JlLmM6MTg4MTpcXHRcXHR1bnJlZ2lzdGVyX2NhbmRldihjYW4tXFx1MDAzZWNhbi5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9rdmFzZXJfcGNpZWZkL2t2YXNlcl9wY2llZmRfY29yZS5jLTE4ODItXFx0XFx0dGltZXJfZGVsZXRlKFxcdTAwMjZjYW4tXFx1MDAzZWJlY19wb2xsX3RpbWVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jPTIzMjk9c3RhdGljIGludCByZWdpc3Rlcl9tX2Nhbl9kZXYoc3RydWN0IG1fY2FuX2NsYXNzZGV2ICpjZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMtMjMzOS1cXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYzoyMzQwOlxcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYy0yMzQxLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tX2Nhbi9tX2Nhbi5jPTI1ODk9dm9pZCBtX2Nhbl9jbGFzc191bnJlZ2lzdGVyKHN0cnVjdCBtX2Nhbl9jbGFzc2RldiAqY2RldilcXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYy0yNTkwLXtcXG5kcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uYzoyNTkxOlxcdHVucmVnaXN0ZXJfY2FuZGV2KGNkZXYtXFx1MDAzZW5ldCk7XFxuZHJpdmVycy9uZXQvY2FuL21fY2FuL21fY2FuLmMtMjU5Mi1cXHRpZiAoY2Rldi1cXHUwMDNlaXNfcGVyaXBoZXJhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jPTYxNj1pbnQgcmVnaXN0ZXJfbXNjYW5kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1zY2FuX2Nsa3NyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY1MS1cXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYzo2NTI6XFx0cmV0dXJuIHJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY1My19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYz02NTU9dm9pZCB1bnJlZ2lzdGVyX21zY2FuZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vbXNjYW4vbXNjYW4uYy02NjAtXFx0Y2xyYml0czgoXFx1MDAyNnJlZ3MtXFx1MDAzZWNhbmN0bDEsIE1TQ0FOX0NBTkUpO1xcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jOjY2MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jLTY2Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM9NTczPXN0YXRpYyBpbnQgcGNpZWZkX2Nhbl9wcm9iZShzdHJ1Y3QgcGNpZWZkX2JvYXJkICpwY2llZmQpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmMtNjY4LVxcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYzo2Njk6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02NzAtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jPTY5ND1zdGF0aWMgdm9pZCBwY2llZmRfY2FuX3JlbW92ZShzdHJ1Y3QgcGNpZWZkX2NhbiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9wZWFrX2NhbmZkL3BlYWtfcGNpZWZkX21haW4uYy02OTYtXFx0LyogdW5yZWdpc3RlciAoY2xvc2UpIHRoZSBjYW4gZGV2aWNlIHRvIGdvIGJhY2sgdG8gUlNUIG1vZGUgZmlyc3QgKi9cXG5kcml2ZXJzL25ldC9jYW4vcGVha19jYW5mZC9wZWFrX3BjaWVmZF9tYWluLmM6Njk3OlxcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXFx1MDAzZXVjYW4ubmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3BlYWtfY2FuZmQvcGVha19wY2llZmRfbWFpbi5jLTY5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM9NzQ3PXN0YXRpYyBpbnQgcmNhcl9jYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODExLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM6ODEyOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2Nhbi5jLTgxMy1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW4uYzo4MTQ6XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJyZWdpc3Rlcl9jYW5kZXYoKSBmYWlsZWQgJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODE1LVxcdFxcdGdvdG8gZmFpbF9ycG07XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2Nhbi5jPTgzMD1zdGF0aWMgdm9pZCByY2FyX2Nhbl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM0LVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmM6ODM1OlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuLmMtODM2LVxcdHBtX3J1bnRpbWVfZGlzYWJsZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYz0xODYzPXN0YXRpYyBpbnQgcmNhcl9jYW5mZF9jaGFubmVsX3Byb2JlKHN0cnVjdCByY2FyX2NhbmZkX2dsb2JhbCAqZ3ByaXYsIHUzMiBjaCxcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTcyLVxcdGdwcml2LVxcdTAwM2VjaFtwcml2LVxcdTAwM2VjaGFubmVsXSA9IHByaXY7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jOjE5NzM6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTc0LVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM6MTk3NTpcXHRcXHRkZXZfZXJyKGRldiwgXFxcInJlZ2lzdGVyX2NhbmRldigpIGZhaWxlZDogJXBlXFxcXG5cXFwiLCBFUlJfUFRSKGVycikpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTc2LVxcdFxcdGdvdG8gZmFpbF9jYW5kZXY7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcmNhci9yY2FyX2NhbmZkLmM9MTk4OD1zdGF0aWMgdm9pZCByY2FyX2NhbmZkX2NoYW5uZWxfcmVtb3ZlKHN0cnVjdCByY2FyX2NhbmZkX2dsb2JhbCAqZ3ByaXYsIHUzMiBjaClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yY2FyL3JjYXJfY2FuZmQuYy0xOTkyLVxcdGlmIChwcml2KSB7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jOjE5OTM6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlbmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3JjYXIvcmNhcl9jYW5mZC5jLTE5OTQtXFx0XFx0bmV0aWZfbmFwaV9kZWwoXFx1MDAyNnByaXYtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYz04MDM9c3RhdGljIGludCBya2NhbmZkX3JlZ2lzdGVyKHN0cnVjdCBya2NhbmZkX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jLTgxNS1cXG5kcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvcm9ja2NoaXBfY2FuZmQtY29yZS5jOjgxNjpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3JvY2tjaGlwL3JvY2tjaGlwX2NhbmZkLWNvcmUuYy04MTctXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM9ODM0PXN0YXRpYyBpbmxpbmUgdm9pZCBya2NhbmZkX3VucmVnaXN0ZXIoc3RydWN0IHJrY2FuZmRfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMtODM3LVxcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmM6ODM4OlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9yb2NrY2hpcC9yb2NrY2hpcF9jYW5mZC1jb3JlLmMtODM5LVxcdHBtX3J1bnRpbWVfZGlzYWJsZShuZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYz02ODY9aW50IHJlZ2lzdGVyX3NqYTEwMDBkZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYy02OTctXFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jOjY5ODpcXHRyZXR1cm4gcmVnaXN0ZXJfY2FuZGV2KGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jLTY5OS19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmM9NzAyPXZvaWQgdW5yZWdpc3Rlcl9zamExMDAwZGV2KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMtNzA0LVxcdHNldF9yZXNldF9tb2RlKGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jOjcwNTpcXHR1bnJlZ2lzdGVyX2NhbmRldihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYy03MDYtfVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYz04MTc9c3RhdGljIGludCBzbGNhbl9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jLTg1Ni1cXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jOjg1NzpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jLTg1OC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc2xjYW4vc2xjYW4tY29yZS5jPTg3Nj1zdGF0aWMgdm9pZCBzbGNhbl9jbG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04NzktXFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYzo4ODA6XFx0dW5yZWdpc3Rlcl9jYW5kZXYoc2wtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NsY2FuL3NsY2FuLWNvcmUuYy04ODEtXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYz02NjM9c3RhdGljIGludCBzb2Z0aW5nX25ldGRldl9yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMtNjY2LVxcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jOjY2NzpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nX21haW4uYy02NjgtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmM9Njc4PXN0YXRpYyB2b2lkIHNvZnRpbmdfbmV0ZGV2X2NsZWFudXAoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jLTY4MC1cXHRzeXNmc19yZW1vdmVfZ3JvdXAoXFx1MDAyNm5ldGRldi1cXHUwMDNlZGV2LmtvYmosIFxcdTAwMjZuZXRkZXZfc3lzZnNfZ3JvdXApO1xcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jOjY4MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jLTY4Mi1cXHRmcmVlX2NhbmRldihuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYz04Mjg9c3RhdGljIGludCBoaTMxMTBfY2FuX3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jLTkzNS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jOjkzNjpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL2hpMzExeC5jLTkzNy1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYz05NTg9c3RhdGljIHZvaWQgaGkzMTEwX2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvaGkzMTF4LmMtOTYyLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvaGkzMTF4LmM6OTYzOlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5ldCk7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9oaTMxMXguYy05NjQtXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYz0xMzMxPXN0YXRpYyBpbnQgbWNwMjUxeF9jYW5fcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0NDMtXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ0NDpcXHRyZXQgPSByZWdpc3Rlcl9jYW5kZXYobmV0KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDQ1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0NTItXFx0XFx0ZGV2X2Vycl9wcm9iZShcXHUwMDI2c3BpLVxcdTAwM2VkZXYsIHJldCwgXFxcIkNhbm5vdCBzZXQgdXAgZ3Bpb3NcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NTM6XFx0XFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmMtMTQ1NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDU4LVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NTk6b3V0X3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jOjE0NjA6XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXguYy0xNDYxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM9MTQ3Nj1zdGF0aWMgdm9pZCBtY3AyNTF4X2Nhbl9yZW1vdmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0ODAtXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4LmM6MTQ4MTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZXQpO1xcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeC5jLTE0ODItXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jPTIwODM9c3RhdGljIGludCBtY3AyNTF4ZmRfcmVnaXN0ZXIoc3RydWN0IG1jcDI1MXhmZF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTI3LVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjEyODpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYobmRldik7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTI5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxMzMtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jOjIxMzQ6XFx0XFx0Z290byBvdXRfdW5yZWdpc3Rlcl9jYW5kZXY7XFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTM1LVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTQxLVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYzoyMTQyOlxcdFxcdGdvdG8gb3V0X3VucmVnaXN0ZXJfY2FuZGV2O1xcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjE0My1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmMtMjE0Ny1cXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jOjIxNDg6b3V0X3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE0OTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNTAtb3V0X3J1bnRpbWVfZGlzYWJsZTpcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM9MjE2Mj1zdGF0aWMgaW5saW5lIHZvaWQgbWNwMjUxeGZkX3VucmVnaXN0ZXIoc3RydWN0IG1jcDI1MXhmZF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvbWNwMjUxeGZkLWNvcmUuYy0yMTY1LVxcbmRyaXZlcnMvbmV0L2Nhbi9zcGkvbWNwMjUxeGZkL21jcDI1MXhmZC1jb3JlLmM6MjE2NjpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc3BpL21jcDI1MXhmZC9tY3AyNTF4ZmQtY29yZS5jLTIxNjctXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmM9ODIwPXN0YXRpYyBpbnQgc3VuNGljYW5fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9zdW40aV9jYW4uYy04OTYtXFxuZHJpdmVycy9uZXQvY2FuL3N1bjRpX2Nhbi5jOjg5NzpcXHRlcnIgPSByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vc3VuNGlfY2FuLmMtODk4LVxcdGlmIChlcnIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmM9ODQ2PXN0YXRpYyBpbnQgdGlfaGVjY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYy05NDAtXFxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYzo5NDE6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTQyLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jOjk0MzpcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJyZWdpc3Rlcl9jYW5kZXYoKSBmYWlsZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTQ0LVxcdFxcdGdvdG8gcHJvYmVfZXhpdF9vZmZsb2FkO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYz05NjQ9c3RhdGljIHZvaWQgdGlfaGVjY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTY4LVxcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmM6OTY5OlxcdHVucmVnaXN0ZXJfY2FuZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMtOTcwLVxcdGNsa19kaXNhYmxlX3VucHJlcGFyZShwcml2LVxcdTAwM2VjbGspO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmM9MTAzMz1zdGF0aWMgaW50IGVtc191c2JfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYy0xMDk1LVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZW1zX3VzYi5jOjEwOTY6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMtMTA5Ny1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYz0xMjA2PXN0YXRpYyBpbnQgZXNkX3VzYl9wcm9iZV9vbmVfbmV0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBpbnQgaW5kZXgpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYy0xMjczLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYi5jOjEyNzQ6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9lc2RfdXNiLmMtMTI3NS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jPTIwODk9c3RhdGljIGludCBlczU4eF9pbml0X25ldGRldihzdHJ1Y3QgZXM1OHhfZGV2aWNlICplczU4eF9kZXYsIGludCBjaGFubmVsX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMjExMi1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjIxMTM6XFx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9ldGFzX2VzNTh4L2VzNTh4X2NvcmUuYy0yMTE0LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jPTIxMzQ9c3RhdGljIHZvaWQgZXM1OHhfZnJlZV9uZXRkZXZzKHN0cnVjdCBlczU4eF9kZXZpY2UgKmVzNTh4X2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZXRhc19lczU4eC9lczU4eF9jb3JlLmMtMjE0Mi1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jOjIxNDM6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1OHgvZXM1OHhfY29yZS5jLTIxNDQtXFx0XFx0ZGV2bGlua19wb3J0X3VucmVnaXN0ZXIoXFx1MDAyNmVzNTh4X3ByaXYobmV0ZGV2KS1cXHUwMDNlZGV2bGlua19wb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmM9MTE0ND1zdGF0aWMgaW50IGY4MTYwNF9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmMtMTIwOC1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2Y4MTYwNC5jOjEyMDk6XFx0XFx0cmV0ID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9mODE2MDQuYy0xMjEwLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmM9MTMxNz1zdGF0aWMgc3RydWN0IGdzX2NhbiAqZ3NfbWFrZV9jYW5kZXYodW5zaWduZWQgaW50IGNoYW5uZWwsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE0OTItXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYzoxNDkzOlxcdHJjID0gcmVnaXN0ZXJfY2FuZGV2KGRldi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE0OTQtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jPTE1MTA9c3RhdGljIHZvaWQgZ3NfZGVzdHJveV9jYW5kZXYoc3RydWN0IGdzX2NhbiAqZGV2KVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvZ3NfdXNiLmMtMTUxMS17XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9nc191c2IuYzoxNTEyOlxcdHVucmVnaXN0ZXJfY2FuZGV2KGRldi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2dzX3VzYi5jLTE1MTMtXFx0Y2FuX3J4X29mZmxvYWRfZGVsKFxcdTAwMjZkZXYtXFx1MDAzZW9mZmxvYWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jPTgwND1zdGF0aWMgdm9pZCBrdmFzZXJfdXNiX3JlbW92ZV9pbnRlcmZhY2VzKHN0cnVjdCBrdmFzZXJfdXNiICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtODE0LVxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYzo4MTU6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmMtODE2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYz04MzM9c3RhdGljIGludCBrdmFzZXJfdXNiX2luaXRfb25lKHN0cnVjdCBrdmFzZXJfdXNiICpkZXYsIGludCBjaGFubmVsKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9rdmFzZXJfdXNiL2t2YXNlcl91c2JfY29yZS5jLTkxMC1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL2t2YXNlcl91c2Iva3Zhc2VyX3VzYl9jb3JlLmM6OTExOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2Iva3Zhc2VyX3VzYi9rdmFzZXJfdXNiX2NvcmUuYy05MTItXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jPTgwNz1zdGF0aWMgaW50IG1jYmFfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg1OS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6ODYwOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy04NjEtXFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTg3Ny1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6ODc4OlxcdFxcdGdvdG8gY2xlYW51cF91bnJlZ2lzdGVyX2NhbmRldjtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODc5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYy04ODQtXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jOjg4NTpjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbWNiYV91c2IuYzo4ODY6XFx0dW5yZWdpc3Rlcl9jYW5kZXYocHJpdi1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmMtODg3LVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jPTg5NT1zdGF0aWMgdm9pZCBtY2JhX3VzYl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTkwMi1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL21jYmFfdXNiLmM6OTAzOlxcdHVucmVnaXN0ZXJfY2FuZGV2KHByaXYtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jLTkwNC1cXHRtY2JhX3VyYl91bmxpbmsocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYz03MjE9c3RhdGljIGludCBuY3Q2Njk0X2NhbmZkX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy03ODYtXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmM6Nzg3OlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihwcml2LVxcdTAwM2VuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy03ODgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jPTgwND1zdGF0aWMgdm9pZCBuY3Q2Njk0X2NhbmZkX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9uY3Q2Njk0X2NhbmZkLmMtODExLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvbmN0NjY5NF9jYW5mZC5jOjgxMjpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL25jdDY2OTRfY2FuZmQuYy04MTMtXFx0Y2FuX3J4X29mZmxvYWRfZGVsKFxcdTAwMjZwcml2LVxcdTAwM2VvZmZsb2FkKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jPTkxMT1zdGF0aWMgaW50IHBlYWtfdXNiX2NyZWF0ZV9kZXYoY29uc3Qgc3RydWN0IHBlYWtfdXNiX2FkYXB0ZXIgKnBlYWtfdXNiX2FkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05ODEtXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6OTgyOlxcdGVyciA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTk4My1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy05OTctXFx0XFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYzo5OTg6XFx0XFx0XFx0Z290byBsYmxfdW5yZWdpc3Rlcl9jYW5kZXY7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmMtOTk5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTEwMTktXFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTAyMDpsYmxfdW5yZWdpc3Rlcl9jYW5kZXY6XFxuZHJpdmVycy9uZXQvY2FuL3VzYi9wZWFrX3VzYi9wY2FuX3VzYl9jb3JlLmM6MTAyMTpcXHR1bnJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jLTEwMjItXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYz0xMDM2PXN0YXRpYyB2b2lkIHBlYWtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDQ5LVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvcGVha191c2IvcGNhbl91c2JfY29yZS5jOjEwNTA6XFx0XFx0dW5yZWdpc3Rlcl9jYW5kZXYobmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3BlYWtfdXNiL3BjYW5fdXNiX2NvcmUuYy0xMDUxLVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmM9MTMwMT1zdGF0aWMgaW50IHVjYW5fcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYy0xNTIxLVxcdC8qIHJlZ2lzdGVyIHRoZSBkZXZpY2UgKi9cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYzoxNTIyOlxcdHJldCA9IHJlZ2lzdGVyX2NhbmRldihuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1MjMtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jPTE1NDg9c3RhdGljIHZvaWQgdWNhbl9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL3VzYi91Y2FuLmMtMTU1NC1cXHRpZiAodXApIHtcXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VjYW4uYzoxNTU1OlxcdFxcdHVucmVnaXN0ZXJfY2FuZGV2KHVwLVxcdTAwM2VuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdWNhbi5jLTE1NTYtXFx0XFx0ZnJlZV9jYW5kZXYodXAtXFx1MDAzZW5ldGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmM9OTAxPXN0YXRpYyBpbnQgdXNiXzhkZXZfcHJvYmUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTYyLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYzo5NjM6XFx0ZXJyID0gcmVnaXN0ZXJfY2FuZGV2KG5ldGRldik7XFxuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jLTk2NC1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdXNiL3VzYl84ZGV2LmMtOTcyLVxcdFxcdG5ldGRldl9lcnIobmV0ZGV2LCBcXFwiY2FuJ3QgZ2V0IGZpcm13YXJlIHZlcnNpb25cXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYzo5NzM6XFx0XFx0Z290byBjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2O1xcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05NzQtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05ODItXFxuZHJpdmVycy9uZXQvY2FuL3VzYi91c2JfOGRldi5jOjk4MzpjbGVhbnVwX3VucmVnaXN0ZXJfY2FuZGV2OlxcbmRyaXZlcnMvbmV0L2Nhbi91c2IvdXNiXzhkZXYuYy05ODQtXFx0dW5yZWdpc3Rlcl9uZXRkZXYocHJpdi1cXHUwMDNlbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM9NDI2PXN0YXRpYyBpbnQgcmVnaXN0ZXJfdmlydGlvX2Nhbl9kZXYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmMtNDMwLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmM6NDMxOlxcdHJldHVybiByZWdpc3Rlcl9jYW5kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vdmlydGlvX2Nhbi5jLTQzMi19XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vdmlydGlvX2Nhbi5jPTgyMz1zdGF0aWMgdm9pZCB2aXJ0aW9fY2FuX3JlbW92ZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi92aXJ0aW9fY2FuLmMtODI3LVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOToyNS4wMzI3NDQyNVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgwODMzMjE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGR1bW15X2NhbmAgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgYGR1bW15X2NhbmAgaXMgdXNpbmcgYHJlZ2lzdGVyX2NhbmRldmAuIFRoYXQncyBpbnRlcmVzdGluZy4gSSBrbm93IGBkdW1teV9jYW5gIGlzIGEgdmlydHVhbCBDQU4gZGV2aWNlLCBzbyBJJ20gYSBiaXQgc3VycHJpc2VkIGl0J3MgZW1wbG95aW5nIGEgZnVuY3Rpb24gbGlrZSBgcmVnaXN0ZXJfY2FuZGV2YCwgd2hpY2ggSSB0eXBpY2FsbHkgYXNzb2NpYXRlIHdpdGggcGh5c2ljYWwgQ0FOIGNvbnRyb2xsZXJzLiBMZXQncyBkaWcgaW50byB0aGF0OyBteSBpbnN0aW5jdCBpcyB0aGF0IHRoZXJlJ3MgYSBnb29kIHJlYXNvbiBmb3IgaXQuIFRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzb3VyY2UgY29kZS4gTGV0IG1lIGdvIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmNgIGFuZCBzZWUgaG93IHRoaXMgYWxsIGZpdHMgdG9nZXRoZXIuIEknbSBleHBlY3Rpbmcgc29tZSBjbGV2ZXIgYWJzdHJhY3Rpb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMjQ3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MjguNjEzNTgzNTAzWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAyNDc0ODEsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBEVU1NWV9DQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvY2FuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MjguNzYzODQzNzU0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDMzOTAwMDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDQU4gRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGBkdW1teV9jYW5gIGRyaXZlciBpcyBjb25maWd1cmVkLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIENBTiBuZXR3b3JraW5nIGRyaXZlciBkaXJlY3RvcnkuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEknbGwgZmluZCBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zIGRvY3VtZW50ZWQgdGhlcmUuIEl0J3MgdGhlIHN0YW5kYXJkIHByYWN0aWNlLCBhZnRlciBhbGwsIHRvIGRlZmluZSBidWlsZC10aW1lIHNldHRpbmdzIHdpdGhpbiB0aGUgYEtjb25maWdgIGZpbGVzIG9mIHRoZSBrZXJuZWwuIFRoaXMgZmlsZSBob2xkcyB0aGUga2V5IHRvIGhvdyB0aGlzIGRyaXZlciBpcyBlbmFibGVkLCBkaXNhYmxlZCwgYW5kIGNvbmZpZ3VyZWQgZm9yIGEgc3BlY2lmaWMga2VybmVsIGJ1aWxkLiBMZXQncyBzZWUgd2hhdCdzIGluIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDkyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MzEuNzA3MjM5NDQ3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDY1NjE0NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZHVtbXlfY2FuXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlPTIzPW9iai0kKENPTkZJR19DQU5fQ1RVQ0FORkQpXFx0Kz0gY3R1Y2FuZmQvXFxuZHJpdmVycy9uZXQvY2FuL01ha2VmaWxlOjI0Om9iai0kKENPTkZJR19DQU5fRFVNTVkpXFx0XFx0Kz0gZHVtbXlfY2FuLm9cXG5kcml2ZXJzL25ldC9jYW4vTWFrZWZpbGUtMjUtb2JqLSQoQ09ORklHX0NBTl9GTEVYQ0FOKVxcdCs9IGZsZXhjYW4vXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTgtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE5OnN0cnVjdCBkdW1teV9jYW4ge1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMC1cXHRzdHJ1Y3QgY2FuX3ByaXYgY2FuO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIzLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNDpzdGF0aWMgc3RydWN0IGR1bW15X2NhbiAqZHVtbXlfY2FuO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0IGR1bW15X2Nhbl9iaXR0aW1pbmdfY29uc3QgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3OlxcdC5uYW1lID0gXFxcImR1bW15X2NhbiBDQ1xcXCIsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI4LVxcdC50c2VnMV9taW4gPSAyLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTM3LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzozODpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl9iaXR0aW1pbmdfY29uc3QgZHVtbXlfY2FuX2ZkX2RhdGFiaXR0aW1pbmdfY29uc3QgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjM5OlxcdC5uYW1lID0gXFxcImR1bW15X2NhbiBGRFxcXCIsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTQwLVxcdC50c2VnMV9taW4gPSAyLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTQ5LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGNhbl90ZGNfY29uc3QgZHVtbXlfY2FuX2ZkX3RkY19jb25zdCA9IHtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtNTEtXFx0LnRkY3ZfbWluID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy01OC1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6NTk6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0IGR1bW15X2Nhbl94bF9kYXRhYml0dGltaW5nX2NvbnN0ID0ge1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo2MDpcXHQubmFtZSA9IFxcXCJkdW1teV9jYW4gWExcXFwiLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy02MS1cXHQudHNlZzFfbWluID0gMixcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy03MC1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6NzE6c3RhdGljIGNvbnN0IHN0cnVjdCBjYW5fdGRjX2NvbnN0IGR1bW15X2Nhbl94bF90ZGNfY29uc3QgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTcyLVxcdC50ZGN2X21pbiA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtNzktXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjgwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FuX3B3bV9jb25zdCBkdW1teV9jYW5fcHdtX2NvbnN0ID0ge1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy04MS1cXHQucHdtc19taW4gPSAxLFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTg4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzo4OTpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfYml0dGltaW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTkwLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBjYW5fYml0dGltaW5nICpidClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMDEtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjEwMjpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfdGRjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBjYW5fdGRjICp0ZGMpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTEwMy17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTA4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMDk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X3B3bShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX3B3bSAqcHdtLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMTAtXFx0XFx0XFx0XFx0c3RydWN0IGNhbl9iaXR0aW1pbmcgKmRidClcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMTYtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjExNzpzdGF0aWMgdm9pZCBkdW1teV9jYW5fcHJpbnRfY3RybG1vZGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTE4LXtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTE5OlxcdHN0cnVjdCBkdW1teV9jYW4gKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xMjAtXFx0c3RydWN0IGNhbl9wcml2ICpjYW5fcHJpdiA9IFxcdTAwMjZwcml2LVxcdTAwM2VjYW47XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTM4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxMzk6c3RhdGljIHZvaWQgZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZ19pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE0MC17XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE0MTpcXHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTQyLVxcdHN0cnVjdCBjYW5fcHJpdiAqY2FuX3ByaXYgPSBcXHUwMDI2cHJpdi1cXHUwMDNlY2FuO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE0OC1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTQ5OlxcdGR1bW15X2Nhbl9wcmludF9jdHJsbW9kZShkZXYpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNTAtXFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE1Mi1cXHRuZXRkZXZfZGJnKGRldiwgXFxcIkNsYXNzaWNhbCBDQU4gbm9taW5hbCBiaXR0aW1pbmc6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTUzOlxcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2Y2FuX3ByaXYtXFx1MDAzZWJpdHRpbWluZyk7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE1NC1cXHRuZXRkZXZfZGJnKGRldiwgXFxcIlxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU3LVxcdFxcdG5ldGRldl9kYmcoZGV2LCBcXFwiQ0FOIEZEIGRhdGFiaXR0aW1pbmc6XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTU4OlxcdFxcdGR1bW15X2Nhbl9wcmludF9iaXR0aW1pbmcoZGV2LCBcXHUwMDI2Y2FuX3ByaXYtXFx1MDAzZWZkLmRhdGFfYml0dGltaW5nKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTU5LVxcdFxcdGlmIChjYW5fZmRfdGRjX2lzX2VuYWJsZWQoY2FuX3ByaXYpKSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE2MC1cXHRcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIlxcXFx0Q0FOIEZEIFREQzpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNjE6XFx0XFx0XFx0ZHVtbXlfY2FuX3ByaW50X3RkYyhkZXYsIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNlZmQudGRjKTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTYyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNjctXFx0XFx0bmV0ZGV2X2RiZyhkZXYsIFxcXCJDQU4gWEwgZGF0YWJpdHRpbWluZzpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNjg6XFx0XFx0ZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZyhkZXYsIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNleGwuZGF0YV9iaXR0aW1pbmcpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNjktXFx0XFx0aWYgKGNhbl94bF90ZGNfaXNfZW5hYmxlZChjYW5fcHJpdikpIHtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTcwLVxcdFxcdFxcdG5ldGRldl9kYmcoZGV2LCBcXFwiXFxcXHRDQU4gWEwgVERDOlxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjE3MTpcXHRcXHRcXHRkdW1teV9jYW5fcHJpbnRfdGRjKGRldiwgXFx1MDAyNmNhbl9wcml2LVxcdTAwM2V4bC50ZGMpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNzItXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE3NC1cXHRcXHRcXHRuZXRkZXZfZGJnKGRldiwgXFxcIlxcXFx0Q0FOIFhMIFBXTTpcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxNzU6XFx0XFx0XFx0ZHVtbXlfY2FuX3ByaW50X3B3bShkZXYsIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNleGwucHdtLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0xNzYtXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZjYW5fcHJpdi1cXHUwMDNleGwuZGF0YV9iaXR0aW1pbmcpO1xcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4MS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MTgyOnN0YXRpYyBpbnQgZHVtbXlfY2FuX25ldGRldl9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4My17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTg2LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoxODc6XFx0ZHVtbXlfY2FuX3ByaW50X2JpdHRpbWluZ19pbmZvKGRldik7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTE4OC1cXHRuZXRkZXZfZGJnKGRldiwgXFxcImVycm9yLXNpZ25hbGxpbmcgaXMgJXNcXFxcblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMTk5LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMDA6c3RhdGljIGludCBkdW1teV9jYW5fbmV0ZGV2X2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjA4LVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMDk6c3RhdGljIG5ldGRldl90eF90IGR1bW15X2Nhbl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIxMC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIyMS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZHVtbXlfY2FuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyMzpcXHQubmRvX29wZW4gPSBkdW1teV9jYW5fbmV0ZGV2X29wZW4sXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyNDpcXHQubmRvX3N0b3AgPSBkdW1teV9jYW5fbmV0ZGV2X2Nsb3NlLFxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMjU6XFx0Lm5kb19zdGFydF94bWl0ID0gZHVtbXlfY2FuX3N0YXJ0X3htaXQsXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTIyNi19O1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMjctXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIyODpzdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGR1bW15X2Nhbl9ldGh0b29sX29wcyA9IHtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjI5LVxcdC5nZXRfdHNfaW5mbyA9IGV0aHRvb2xfb3BfZ2V0X3RzX2luZm8sXFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjMxLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyMzI6c3RhdGljIGludCBfX2luaXQgZHVtbXlfY2FuX2luaXQodm9pZClcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjMzLXtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjM0LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXY7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjIzNTpcXHRzdHJ1Y3QgZHVtbXlfY2FuICpwcml2O1xcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yMzYtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yNDEtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0MjpcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2ZHVtbXlfY2FuX25ldGRldl9vcHM7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0MzpcXHRkZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNmR1bW15X2Nhbl9ldGh0b29sX29wcztcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjQ0LVxcdGRldi1cXHUwMDNlZmxhZ3MgfD0gSUZGX0VDSE87IC8qIGVuYWJsZSBlY2hvIGhhbmRsaW5nICovXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0NS1cXHRwcml2ID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjQ2OlxcdHByaXYtXFx1MDAzZWNhbi5iaXR0aW1pbmdfY29uc3QgPSBcXHUwMDI2ZHVtbXlfY2FuX2JpdHRpbWluZ19jb25zdDtcXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjQ3LVxcdHByaXYtXFx1MDAzZWNhbi5iaXRyYXRlX21heCA9IDIwICogTUVHQSAvKiBCUFMgKi87XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI0OC1cXHRwcml2LVxcdTAwM2VjYW4uY2xvY2suZnJlcSA9IDE2MCAqIE1FR0EgLyogSHogKi87XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI0OTpcXHRwcml2LVxcdTAwM2VjYW4uZmQuZGF0YV9iaXR0aW1pbmdfY29uc3QgPSBcXHUwMDI2ZHVtbXlfY2FuX2ZkX2RhdGFiaXR0aW1pbmdfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MDpcXHRwcml2LVxcdTAwM2VjYW4uZmQudGRjX2NvbnN0ID0gXFx1MDAyNmR1bW15X2Nhbl9mZF90ZGNfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MTpcXHRwcml2LVxcdTAwM2VjYW4ueGwuZGF0YV9iaXR0aW1pbmdfY29uc3QgPSBcXHUwMDI2ZHVtbXlfY2FuX3hsX2RhdGFiaXR0aW1pbmdfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MjpcXHRwcml2LVxcdTAwM2VjYW4ueGwudGRjX2NvbnN0ID0gXFx1MDAyNmR1bW15X2Nhbl94bF90ZGNfY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI1MzpcXHRwcml2LVxcdTAwM2VjYW4ueGwucHdtX2NvbnN0ID0gXFx1MDAyNmR1bW15X2Nhbl9wd21fY29uc3Q7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI1NC1cXHRwcml2LVxcdTAwM2VjYW4uY3RybG1vZGVfc3VwcG9ydGVkID0gQ0FOX0NUUkxNT0RFX0xJU1RFTk9OTFkgfFxcbi0tXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI2NS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmM6MjY2OlxcdGR1bW15X2NhbiA9IHByaXY7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI2Ny1cXHRuZXRkZXZfZGJnKGRldiwgXFxcImR1bW15LWNhbiByZWFkeVxcXFxuXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vZHVtbXlfY2FuLmMtMjcxLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYzoyNzI6c3RhdGljIHZvaWQgX19leGl0IGR1bW15X2Nhbl9leGl0KHZvaWQpXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3My17XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI3NDpcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHVtbXlfY2FuLVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI3NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9kdW1teV9jYW4uYy0yODAtXFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI4MTptb2R1bGVfaW5pdChkdW1teV9jYW5faW5pdCk7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jOjI4Mjptb2R1bGVfZXhpdChkdW1teV9jYW5fZXhpdCk7XFxuZHJpdmVycy9uZXQvY2FuL2R1bW15X2Nhbi5jLTI4My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MzEuOTEzODA4NTA1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NTQ0Nzc5NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIER1bW15IENBTiBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0NBTl9EVU1NWWAuLi4gdGhhdCBzY3JlYW1zIFwiZHVtbXlfY2FuXCIgdG8gbWUuIEkgbmVlZCB0byBjb25maXJtIHRoYXQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZvciBDQU4sIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvY2FuL0tjb25maWdgLiBJIG5lZWQgdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYWNjdXJhdGUgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IHJlbGF0ZWQgZGVwZW5kZW5jaWVzIG9yIG9wdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2YuIExldCdzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscyBhYm91dCB0aGlzIGBDQU5fRFVNTVlgIHNldHRpbmcuIEhvcGVmdWxseSwgdGhlIGNvbW1lbnRzIGFyZSBjbGVhciFcblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTozOTozNi43NjgyOTAwNDdaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNTY3NzMxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0FOX0RVTU1ZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWc9MTA2PWNvbmZpZyBDQU5fQ0FOMzI3XFxuLS1cXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xMjMtXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6MTI0OmNvbmZpZyBDQU5fRFVNTVlcXG5kcml2ZXJzL25ldC9jYW4vS2NvbmZpZy0xMjUtXFx0dHJpc3RhdGUgXFxcIkR1bW15IENBTlxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6MzcuMDAzOTkxMDgyWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyNDk0NzkzNjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGNhbl9jYWxjX2JpdHRpbWluZ2AgVnVsbmVyYWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UncmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBpc3N1ZSByZWxhdGVkIHRvIGNhbGN1bGF0aW5nIGJpdCB0aW1pbmcgaW4gdGhlIENBTiBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSByZWFjaGFibGUgdGhyb3VnaCBuZXRsaW5rLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgQ0FOX0RVTU1ZYCBpcyBrZXkgaGVyZSBiZWNhdXNlIGl0J3MgYSB2aXJ0dWFsIENBTiBkZXZpY2UgY3JlYXRlZCB1c2luZyBgcmVnaXN0ZXJfY2FuZGV2YC4gVGhpcyBtZWFucyBpdCAqc2hvdWxkKiB1dGlsaXplIGBjYW5fbGlua19vcHNgIGFuZCwgdGhlcmVmb3JlLCBzdXBwb3J0IGBjYW5fY2hhbmdlbGlua2AuIEp1c3QgdG8gY29uZmlybSwgYHJlZ2lzdGVyX2NhbmRldmAgZG9lcyBpbmRlZWQgc2V0IGBkZXYtXHUwMDNlcnRubF9saW5rX29wcyA9IFx1MDAyNmNhbl9saW5rX29wcztgLCBhbmQgYGNhbl9saW5rX29wc2AgZG9lcywgaW4gZmFjdCwgaGF2ZSBgLmNoYW5nZWxpbmsgPSBjYW5fY2hhbmdlbGlua2AuIENvbnNlcXVlbnRseSwgYGNhbl9jaGFuZ2VsaW5rYCBjYWxscyBgY2FuX2dldF9iaXR0aW1pbmdgLCB3aGljaCBpbiB0dXJuIGNhbGxzIHRoZSB0YXJnZXQgZnVuY3Rpb24sIGBjYW5fY2FsY19iaXR0aW1pbmdgLiBTbywgd2UgKmFyZSogYWJsZSB0byByZWFjaCBgY2FuX2NhbGNfYml0dGltaW5nYCB0aHJvdWdoIG5ldGxpbmsgZm9yIHRoaXMgdmlydHVhbCBgZHVtbXlfY2FuYCBkZXZpY2UuXG5cbk5vdywgbGV0J3MgZm9jdXMgb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXRzZWxmLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhpcyBmdW5jdGlvbiBpbiBgZHJpdmVycy9uZXQvY2FuL2Rldi9jYWxjX2JpdHRpbWluZy5jYC4gVGhlIGNvZGUgc25pcHBldCBoZXJlOlxuXG5gYGBjXG5cdFx0LyogQ29tcHV0ZSBhbGwgcG9zc2libGUgdHNlZyBjaG9pY2VzICh0c2VnPXRzZWcxK3RzZWcyKS5cblx0XHQgKiBBIDMyIGJpdCB0c2VnYWxsICogYnQtXHUwMDNlYml0cmF0ZSBjYW4gd3JhcCB0byB6ZXJvIGZvciBsYXJnZVxuXHRcdCAqIHVzZXJzcGFjZSBiaXRyYXRlcywgc28gY29tcHV0ZSB0aGUgcHJvZHVjdCBpbiA2NCBiaXQuXG5cdFx0ICovXG5cdFx0YnJwID0gZGl2NjRfdTY0KHByaXYtXHUwMDNlY2xvY2suZnJlcSxcblx0XHRcdFx0bXVsX3UzMl91MzIodHNlZ2FsbCwgYnQtXHUwMDNlYml0cmF0ZSkpICsgdHNlZyAlIDI7XG5gYGBcblxuc2hvd3MgYSBmdW5jdGlvbmFsIGNoYW5nZSBhaW1lZCBhdCBwcmV2ZW50aW5nIGRpdmlzaW9uLWJ5LXplcm8gb3IgaW5jb3JyZWN0IGNhbGN1bGF0aW9ucyB3aGVuIGRlYWxpbmcgd2l0aCBsYXJnZSBiaXRyYXRlcy4gVGhpcyBpcyBhIGNsYXNzaWMgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgY29uY2Vybi4gSXQncyBhY2Nlc3NpYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rLCB3aGljaCBtZWFucyBpdCBuZWVkcyBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUsIHRoZW4sIGFyZSB0aGUgZnVuY3Rpb25zIGBjYW5fY2FsY19iaXR0aW1pbmdgLCBgY2FuX2dldF9iaXR0aW1pbmdgLCBhbmQgYGNhbl9jaGFuZ2VsaW5rYC5cblxuTGV0J3MgZG91YmxlLWNoZWNrIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgQ0FOYCwgYENBTl9ERVZgLCBgQ0FOX0RVTU1ZYCwgYENBTl9WQ0FOYCwgYW5kIGBDQU5fVlhDQU5gIGFyZSBhbGwgcmVsZXZhbnQuXG5cbkhvbGQgb24uIExldCBtZSBjaXJjbGUgYmFjayB0byBgQ0FOX0RVTU1ZYC4gVGhhdCdzIHRoZSBjcnVjaWFsIGNvbmZpZyBiZWNhdXNlLCBhcyB3ZSBlc3RhYmxpc2hlZCwgaXQgdXNlcyBgcmVnaXN0ZXJfY2FuZGV2YC4gV2hhdCBhYm91dCBgdmNhbmAgYW5kIGB2eGNhbmA/IFRob3NlIGRvbid0IGNhbGwgYHJlZ2lzdGVyX2NhbmRldmAsIHNvIHRoZXkgZG9uJ3Qgc2VlbSB0byB1c2UgYGNhbl9saW5rX29wc2AuIEFoLCBJIHNlZSEgYHZjYW5gIGFuZCBgdnhjYW5gIGFyZSB2aXJ0dWFsIENBTiBkZXZpY2VzLCBidXQgdGhleSBkb24ndCBoYXZlICpiaXQgdGltaW5nKiBpbiB0aGUgc2FtZSBzZW5zZSBhcyBwaHlzaWNhbCBDQU4gZGV2aWNlcy4gQml0IHRpbWluZyBpcyBtb3JlIHJlbGV2YW50IGZvciBzaW11bGF0ZWQgcGh5c2ljYWwgZGV2aWNlcyBsaWtlIHRoZSBgZHVtbXlfY2FuYC4gVGh1cywgYENBTl9EVU1NWWAgaXMsIGluZGVlZCwgdGhlIGNvcnJlY3QgY29uZmlnIHRvIGVuYWJsZS5cblxuRmluYWxseSwganVzdCB0byBiZSB0aG9yb3VnaCwgbGV0J3MgY2hlY2sgZm9yIGFueSBvdGhlciBkZXBlbmRlbmNpZXMsIGxpa2UgYENBTl9ORVRMSU5LYC4gSSdsbCB2ZXJpZnkgaWYgaXQncyBuZWNlc3NhcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NDU4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjQ5LjQ5ODc4ODg5WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM4MDk5NjQsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY2FuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6NDkuNjAyNjEzNDU0WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxMDczNjAzNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgQ0FOIERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJJ20gZGVhbGluZyB3aXRoIGEgQ0FOLXJlbGF0ZWQgaXNzdWUsIGFuZCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBsb29raW5nIGZvciB0aG9zZSBrZXJuZWwtbGV2ZWwgc2V0dGluZ3MgaXMgcHJvYmFibHkgc29tZXRoaW5nIGxpa2UgYGRyaXZlcnMvbmV0L2Nhbi9kZXYvS2NvbmZpZ2AsIG9yIHNvbWV0aGluZyBjbG9zZWx5IGFuYWxvZ291cyB3aXRoaW4gdGhlIENBTiBkcml2ZXIgZGlyZWN0b3J5IHN0cnVjdHVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpjb25maWd1cmFibGUqIGF0IGNvbXBpbGUgdGltZS4gQXJlIHdlIGxvb2tpbmcgYXQgc3BlY2lmaWMgQ0FOIGNvbnRyb2xsZXJzLCBmZWF0dXJlcyBsaWtlIGJpdHJhdGUgYWRqdXN0bWVudHMsIGVycm9yIGhhbmRsaW5nIG1vZGVzLCBvciBwZXJoYXBzIGV2ZW4gc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGludGVyZmFjZSBpdHNlbGY/IFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBpcyB0aGUgZXNzZW50aWFsIGZpcnN0IHN0ZXAgdG8gdHJvdWJsZXNob290aW5nIGFuZCBwb3RlbnRpYWxseSBwYXRjaGluZyBhIENBTiBkcml2ZXIuIEl0IGhlbHBzIG1lIHRvIHVuZGVyc3RhbmQgd2hhdCBpcyBlbmFibGVkIGFuZCBkaXNhYmxlZCBkdXJpbmcgY29tcGlsYXRpb24uIEl0IHdvdWxkIGJlIG15IGZpcnN0IHN0ZXAgdG8gdW5kZXJzdGFuZGluZyB3aGF0IEkgYW0gZGVhbGluZyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjc2MCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjM5OjUzLjcwOTk4MDU4NFoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQyNzk2Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDQU5fTkVUTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTM0PWNvbmZpZyBDQU5fVlhDQU5cXG4tLVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTQ4LVxcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnOjQ5OmNvbmZpZyBDQU5fTkVUTElOS1xcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTUwLVxcdGJvb2wgXFxcIkNBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6Mzk6NTMuOTUyNzg2MzM4WiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1OTAwNTM1MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQ0FOX05FVExJTksgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGlzc2VjdCB0aGUgYGRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgdGhlIHNlY3Rpb24gY29uY2VybmluZyBgQ0FOX05FVExJTktgLiBJJ20gYWxyZWFkeSB2aXN1YWxpemluZyB0aGUgS2NvbmZpZyBzeW50YXggaW4gbXkgaGVhZDsgdGhpcyBzaG91bGQgYmUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGV4YW1pbmF0aW9uLCBhbHRob3VnaCBJ4oCZbSBzdXJlIGl04oCZbGwgZGVwZW5kIG9uIGhvdyBkZWVwIHRoZSBuZXN0ZWQgZGVwZW5kZW5jaWVzIGFyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSB3aGF0IGNyaXRlcmlhIHRyaWdnZXIgdGhlIGluY2x1c2lvbiBvciBleGNsdXNpb24gb2YgdGhpcyBmZWF0dXJlIGluIGEga2VybmVsIGJ1aWxkLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhIHNpbXBsZSBgYm9vbGAgb3B0aW9uLCBvciBpcyB0aGVyZSBhIG1vcmUgY29tcGxleCBjb25maWd1cmF0aW9uIGludm9sdmluZyBkZXBlbmRlbmNpZXMgb24gb3RoZXIgbmV0d29yayBzdGFja3Mgb3IgaGFyZHdhcmUgZHJpdmVycz8gSSdtIGhvcGluZyBpdCdzIHdlbGwtZG9jdW1lbnRlZCwgYmVjYXVzZSwgbGV0J3MgZmFjZSBpdCwgdGVyc2UgS2NvbmZpZyBkZXNjcmlwdGlvbnMgYXJlIHRoZSBiYW5lIG9mIG15IGV4aXN0ZW5jZS4gSSdtIGtlZW4gdG8gc2VlIGlmIHRoaXMgcmVsaWVzIG9uIGEgc3BlY2lmaWMga2VybmVsIHZlcnNpb24gdG9vLiBUaGlzIGlzbid0IHVzdWFsbHkgdGhlIGNhc2Ugd2l0aCBDQU4gZHJpdmVycywgYnV0IG9uZSBjYW4gaG9wZSEgRnJvbSB0aGUgbmFtZSwgSSdkIGFzc3VtZSB0aGF0IHRoaXMgaXMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciB0aGUgTmV0bGluayBpbnRlcmZhY2UgZm9yIENBTiwgYW5kIGlmIHRoaXMgaXMgdGhlIGNhc2UsIEknbGwgbmVlZCB0byBzZWUgaG93IHdlbGwgaXQncyBkZXNpZ25lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjcwODgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDowMC41NDI4NDYwODFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4OTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDQ1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDQ1OlxcdFxcbiAgNDY6XFx0XFx0ICBUaGlzIGRyaXZlciBjYW4gYWxzbyBiZSBidWlsdCBhcyBhIG1vZHVsZS4gIElmIHNvLCB0aGUgbW9kdWxlXFxuICA0NzpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHZ4Y2FuLlxcbiAgNDg6XFx0XFxuICA0OTpcXHRjb25maWcgQ0FOX05FVExJTktcXG4gIDUwOlxcdFxcdGJvb2wgXFxcIkNBTiBkZXZpY2UgZHJpdmVycyB3aXRoIE5ldGxpbmsgc3VwcG9ydFxcXCJcXG4gIDUxOlxcdFxcdGRlZmF1bHQgeVxcbiAgNTI6XFx0XFx0aGVscFxcbiAgNTM6XFx0XFx0ICBFbmFibGVzIHRoZSBjb21tb24gZnJhbWV3b3JrIGZvciBDQU4gZGV2aWNlIGRyaXZlcnMuIFRoaXMgaXMgdGhlXFxuICA1NDpcXHRcXHQgIHN0YW5kYXJkIGxpYnJhcnkgYW5kIHByb3ZpZGVzIGZlYXR1cmVzIGZvciB0aGUgTmV0bGluayBpbnRlcmZhY2Ugc3VjaFxcbiAgNTU6XFx0XFx0ICBhcyBiaXR0aW1pbmcgdmFsaWRhdGlvbiwgc3VwcG9ydCBvZiBDQU4gZXJyb3Igc3RhdGVzLCBkZXZpY2UgcmVzdGFydFxcbiAgNTY6XFx0XFx0ICBhbmQgb3RoZXJzLlxcbiAgNTc6XFx0XFxuICA1ODpcXHRcXHQgIFRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIHNlbGVjdGVkIGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgYWRkZWQgdG8gdGhlXFxuICA1OTpcXHRcXHQgIGNhbi1kZXYgbW9kdWxlLlxcbiAgNjA6XFx0XFxuICA2MTpcXHRcXHQgIFRoaXMgaXMgcmVxdWlyZWQgYnkgYWxsIHBsYXRmb3JtIGFuZCBoYXJkd2FyZSBDQU4gZHJpdmVycy4gSWYgeW91XFxuICA2MjpcXHRcXHQgIHBsYW4gdG8gdXNlIHN1Y2ggZGV2aWNlcyBvciBpZiB1bnN1cmUsIHNheSBZLlxcbiAgNjM6XFx0XFxuICA2NDpcXHRpZiBDQU5fTkVUTElOS1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDowMC41NDMwMTgzNzFaIiwiU2VxIjo0MSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODQ1ODEyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBDQU4gQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgbG9va3MgbGlrZSBgQ0FOX05FVExJTktgIGlzIGEgaGFyZCByZXF1aXJlbWVudCwgYW5kIHRoYW5rZnVsbHkgaXQncyBhbHJlYWR5IGVuYWJsZWQgYnkgZGVmYXVsdCwgc2V0IHRvICd5Jy4gVGhhdCdzIG9uZSBsZXNzIHRoaW5nIHRvIHdvcnJ5IGFib3V0LiBOb3csIGxldCdzIGp1c3QgcXVpY2tseSBjb25maXJtIHRoYXQgYENBTl9DQUxDX0JJVFRJTUlOR2AgaXMgYWN0dWFsbHkgYSBjb25maWd1cmFibGUgb3B0aW9uLiBHb3R0YSBkb3VibGUtY2hlY2sgdGhvc2UgZGVwZW5kZW5jaWVzIGFuZCBlbnN1cmUgZXZlcnl0aGluZydzIHByb3Blcmx5IGRlZmluZWQgaW4gdGhlIGNvbmZpZyBzcGFjZS4gSSB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIHN0YXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzY2MCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDA6MDMuODkxNDgwMzQ5WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI2MjQ3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9jYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnPTY0PWlmIENBTl9ORVRMSU5LXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWctNjUtXFxuZHJpdmVycy9uZXQvY2FuL0tjb25maWc6NjY6Y29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1xcbmRyaXZlcnMvbmV0L2Nhbi9LY29uZmlnLTY3LVxcdGJvb2wgXFxcIkNBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDowNC4wNTQxMTI1ODhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk4NTA3OTc3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqRGl2aW5nIGludG8gdGhlIENBTiBCaXQgVGltaW5nIENhbGN1bGF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcyBhbmQgZGlnIGludG8gdGhlIGBkcml2ZXJzL25ldC9jYW4vS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGF0IGBDQU5fQ0FMQ19CSVRUSU1JTkdgIG9wdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdlJ3JlIGNvbnRyb2xsaW5nIHRoZSBiaXQgdGltaW5nIGNhbGN1bGF0aW9ucyBmb3IgQ0FOIGNvbnRyb2xsZXJzLiBJdCdzIGEgY3JpdGljYWwgYXNwZWN0IG9mIENBTiBjb21tdW5pY2F0aW9uOyBnZXQgdGhpcyB3cm9uZywgYW5kIHRoZSBlbnRpcmUgYnVzIGdvZXMgc291dGguIEkgd2FudCB0byBzZWUgaWYgd2Ugb2ZmZXIgZmxleGliaWxpdHkgaW4gaG93IHRoZXNlIHRpbWluZ3MgYXJlIGhhbmRsZWQuXG5cbkknbSBleHBlY3RpbmcgdG8gZmluZCBjb25kaXRpb25hbCBsb2dpYyBoZXJlLCBtYXliZSBkZXBlbmRlbnQgb24gdGhlIHNwZWNpZmljIENBTiBjb250cm9sbGVyIHR5cGUgc3VwcG9ydGVkLCBzaW5jZSBkaWZmZXJlbnQgaGFyZHdhcmUgbGlrZWx5IGhhcyBkaWZmZXJlbnQgd2F5cyBvZiBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzLCBvciBtYXliZSB0aGVyZSdzIGEgc2ltcGxlLCBhbmQgY29uZmlndXJhYmxlLCBtYXRoZW1hdGljYWwgZm9ybXVsYSBpbiBwbGF5LCBpZiB3ZSBuZWVkIHRvIG1hbnVhbGx5IHR1bmUgaXQuIEl0J3MgYWxzbyBsaWtlbHkgd2UgaGF2ZSBhIGRlZmF1bHQgY2FsY3VsYXRpb24sIGFuZCB0aGUgYENBTl9DQUxDX0JJVFRJTUlOR2AgaXMganVzdCBnaXZpbmcgdGhlIHVzZXIgdGhlIGFiaWxpdHkgdG8gZW5hYmxlIGEgcGFydGljdWxhciBtZXRob2QgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQuIEkgbmVlZCB0byBzZWUgaWYgaXQgYWxsb3dzIGZvciBoYW5kLXR1bmVkIHZhbHVlcyBhcyBhbiBleHBlcnQgaW4gQ0FOLCBJIHdhbnQgdG8gY29udHJvbCB0aGUgdGltaW5nIGFzIHByZWNpc2VseSBhcyBwb3NzaWJsZSFcbkkgd2FudCB0byBpZGVudGlmeSB0aGUgcHJvcyBhbmQgY29ucyBvZiB0aGVzZSBkaWZmZXJlbnQgYXBwcm9hY2hlczogYXV0b21hdGljIHZlcnN1cyBtYW51YWwsIGFuZCBob3cgd2UncmUgZGVhbGluZyB3aXRoIGNsb2NrIGZyZXF1ZW5jaWVzIGFuZCBzYW1wbGUgcG9pbnRzLiBJIGFsc28gbmVlZCB0byBhc3Nlc3Mgd2hldGhlciB3ZSBhcmUgc3VwcG9ydGluZyBkaWZmZXJlbnQgQ0FOIHN0YW5kYXJkcyAoQ0FOIDIuMEEsIENBTiAyLjBCLCBDQU4gRkQsIGV0Yy4pLCBhbmQgaG93IGJpdCB0aW1pbmcgaXMgaGFuZGxlZCBmb3IgZWFjaC4gTGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgZ290Y2hhcyBvciBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLlxuVWx0aW1hdGVseSwgSSB3YW50IHRvIGJlIGFibGUgdG8gYWR2aXNlIHRoZSB1c2VyIG9uIHRoZSBtb3N0IGVmZmljaWVudCBhbmQgcmVsaWFibGUgYml0IHRpbWluZyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzk0NCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQwOjExLjAzOTE5NTM0NloiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTgxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjQsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNjQ6XFx0aWYgQ0FOX05FVExJTktcXG4gIDY1OlxcdFxcbiAgNjY6XFx0Y29uZmlnIENBTl9DQUxDX0JJVFRJTUlOR1xcbiAgNjc6XFx0XFx0Ym9vbCBcXFwiQ0FOIGJpdC10aW1pbmcgY2FsY3VsYXRpb25cXFwiXFxuICA2ODpcXHRcXHRkZWZhdWx0IHlcXG4gIDY5OlxcdFxcdGhlbHBcXG4gIDcwOlxcdFxcdCAgSWYgZW5hYmxlZCwgQ0FOIGJpdC10aW1pbmcgcGFyYW1ldGVycyB3aWxsIGJlIGNhbGN1bGF0ZWQgZm9yIHRoZVxcbiAgNzE6XFx0XFx0ICBiaXQtcmF0ZSBzcGVjaWZpZWQgdmlhIE5ldGxpbmsgYXJndW1lbnQgXFxcImJpdHJhdGVcXFwiIHdoZW4gdGhlIGRldmljZVxcbiAgNzI6XFx0XFx0ICBnZXQgc3RhcnRlZC4gVGhpcyB3b3JrcyBmaW5lIGZvciB0aGUgbW9zdCBjb21tb24gQ0FOIGNvbnRyb2xsZXJzXFxuICA3MzpcXHRcXHQgIHdpdGggc3RhbmRhcmQgYml0LXJhdGVzIGJ1dCBtYXkgZmFpbCBmb3IgZXhvdGljIGJpdC1yYXRlcyBvciBDQU5cXG4gIDc0OlxcdFxcdCAgc291cmNlIGNsb2NrIGZyZXF1ZW5jaWVzLiBEaXNhYmxpbmcgc2F2ZXMgc29tZSBzcGFjZSwgYnV0IHRoZW4gdGhlXFxuICA3NTpcXHRcXHQgIGJpdC10aW1pbmcgcGFyYW1ldGVycyBtdXN0IGJlIHNwZWNpZmllZCBkaXJlY3RseSB1c2luZyB0aGUgTmV0bGlua1xcbiAgNzY6XFx0XFx0ICBhcmd1bWVudHMgXFxcInRxXFxcIiwgXFxcInByb3Bfc2VnXFxcIiwgXFxcInBoYXNlX3NlZzFcXFwiLCBcXFwicGhhc2Vfc2VnMlxcXCIgYW5kIFxcXCJzandcXFwiLlxcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHQgIFRoZSBhZGRpdGlvbmFsIGZlYXR1cmVzIHNlbGVjdGVkIGJ5IHRoaXMgb3B0aW9uIHdpbGwgYmUgYWRkZWQgdG8gdGhlXFxuICA3OTpcXHRcXHQgIGNhbi1kZXYgbW9kdWxlLlxcbiAgODA6XFx0XFxuICA4MTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuICA4MjpcXHRcXG4gIDgzOlxcdGNvbmZpZyBDQU5fUlhfT0ZGTE9BRFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDoxMS4wMzkzNTY3NzZaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2Mjg5MTI4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcywgcHJlc2VudGVkIGFzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqQ29uZmlndXJhdGlvbiBDb25zaWRlcmF0aW9ucyBmb3IgQ0FOIEJ1cyBGdW5jdGlvbmFsaXR5KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJJ20gdGFraW5nIGEgbG9vayBhdCB0aGVzZSBDQU4tcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFNlZW1zIGxpa2UgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ0FOX0NBTENfQklUVElNSU5HYCBpcyBlbmFibGVkIHRvby4gR29vZCB0byBrbm93IGl0IGRlZmF1bHRzIHRvICd5JywgYnV0IEkgc2hvdWxkIHN0aWxsIGRvdWJsZS1jaGVjay5cblxuRXNzZW50aWFsbHksIEknbSBkZWFsaW5nIHdpdGggdGhlc2Uga2V5IENBTiBjb25maWd1cmF0aW9uczogYENBTmAsIGBDQU5fREVWYCwgYENBTl9ORVRMSU5LYCwgYENBTl9DQUxDX0JJVFRJTUlOR2AsIGFuZCBgQ0FOX0RVTU1ZYC4gVGhpcyBzZWVtcyBsaWtlIGEgcHJldHR5IHN0YW5kYXJkIHNldHVwLiBOb3csIEkgbmVlZCB0byBtYWtlIHN1cmUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcy4gU28sIG5leHQsIEknbGwgZm9jdXMgb24gYENBTl9EVU1NWWAgYW5kIGludmVzdGlnYXRlIGFueSBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGJlIHJlcXVpcmVkIGlmIEkgZW5hYmxlIGl0LiBJdCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8gcmV2aWV3IGFsbCBkZXBlbmRlbmNpZXMsIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2NzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA5OjQwOjE0LjgwMjI1MjAxN1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk1NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvY2FuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTIwOlxcdFxcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2Nhbi9jYW4zMjcucnN0XFxuIDEyMTpcXHRcXG4gMTIyOlxcdFxcdCAgSWYgdGhpcyBkcml2ZXIgaXMgYnVpbHQgYXMgYSBtb2R1bGUsIGl0IHdpbGwgYmUgY2FsbGVkIGNhbjMyNy5cXG4gMTIzOlxcdFxcbiAxMjQ6XFx0Y29uZmlnIENBTl9EVU1NWVxcbiAxMjU6XFx0XFx0dHJpc3RhdGUgXFxcIkR1bW15IENBTlxcXCJcXG4gMTI2OlxcdFxcdGhlbHBcXG4gMTI3OlxcdFxcdCAgQSBkdW1teSBDQU4gbW9kdWxlIHN1cHBvcnRpbmcgQ2xhc3NpY2FsIENBTiwgQ0FOIEZEIGFuZCBDQU4gWEwuIEl0XFxuIDEyODpcXHRcXHQgIGV4cG9zZXMgYml0dGltaW5nIHZhbHVlcyB3aGljaCBjYW4gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSBuZXRsaW5rXFxuIDEyOTpcXHRcXHQgIGludGVyZmFjZS5cXG4gMTMwOlxcdFxcbiAxMzE6XFx0XFx0ICBUaGUgbW9kdWxlIHdpbGwgc2ltcGx5IGVjaG8gYW55IGZyYW1lIHNlbnQgdG8gaXQuIElmIGRlYnVnIG1lc3NhZ2VzXFxuIDEzMjpcXHRcXHQgIGFyZSBhY3RpdmF0ZWQsIGl0IHByaW50cyBhbGwgdGhlIENBTiBiaXR0aW1pbmcgaW5mb3JtYXRpb24gaW4gdGhlXFxuIDEzMzpcXHRcXHQgIGtlcm5lbCBsb2cuIEFzaWRlIGZyb20gdGhhdCBpdCBkb2VzIG5vdGhpbmcuXFxuIDEzNDpcXHRcXG4gMTM1OlxcdFxcdCAgVGhpcyBpcyBjb252ZW5pZW50IGZvciB0ZXN0aW5nIHRoZSBDQU4gbmV0bGluayBpbnRlcmZhY2UuIE1vc3Qgb2YgdGhlXFxuIDEzNjpcXHRcXHQgIHVzZXJzIHdpbGwgbmV2ZXIgbmVlZCB0aGlzLiBJZiB1bnN1cmUsIHNheSBOTy5cXG4gMTM3OlxcdFxcbiAxMzg6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwgYmVcXG4gMTM5OlxcdFxcdCAgY2FsbGVkIGR1bW15LWNhbi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDk6NDA6MTQuODAyMzg0NTI3WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NzQxNzk2NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipGdXp6aW5nIFBvdGVudGlhbDogYGNhbl9jYWxjX2JpdHRpbWluZ2AqKlxuXG5Pa2F5LCBzbyB0aGlzIGNvZGUgYmxvY2sgaXMgcHJldHR5IHNlbGYtY29udGFpbmVkLCBub3QgcmVseWluZyBvbiBhbnl0aGluZyBiZXlvbmQgdGhhdCBgaWYgQ0FOX0RFVmAgY2hlY2suIFRoYXTigJlzIGdvb2QsIGxlc3MgdG8gd29ycnkgYWJvdXQgaW4gdGVybXMgb2YgZGVwZW5kZW5jaWVzLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdGhhdCBgY2FuX2NhbGNfYml0dGltaW5nYCBmdW5jdGlvbiBhZ2FpbiwganVzdCB0byBiZSBzdXJlLiBMZXQgbWUgc2VlIHRoZSBzaWduYXR1cmUuLi4gWWVwLCB0aGVyZSBpdCBpczpcblxuYGBgY1xuaW50IGNhbl9jYWxjX2JpdHRpbWluZyhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgY2FuX2JpdHRpbWluZyAqYnQsXG5cdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBjYW5fYml0dGltaW5nX2NvbnN0ICpidGMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbmBgYFxuXG5SaWdodCwgaXQncyBhIG5vbi1zdGF0aWMgQVBJIGVudHJ5cG9pbnQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBnb29kIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGlucHV0IHR5cGVzIHNlZW0gcmVhc29uYWJsZSBmb3IgZ2VuZXJhdGluZyBkaXZlcnNlIHRlc3QgY2FzZXMuIEkgY2FuIHNlZSB0aGUgcGFyYW1ldGVycyBhcmUgdGhpbmdzIGxpa2UgdGhlIG5ldHdvcmsgZGV2aWNlIGl0c2VsZiwgYml0dGltaW5nIGFuZCBjb25zdGFudCBiaXR0aW1pbmcgc3RydWN0dXJlcywgYW5kIGV4dGVuZGVkIGFja25vd2xlZGdlbWVudC4gSSBzaG91bGQgZGVmaW5pdGVseSBzZXQgdGhlIHJlc3VsdHMgb2YgdGhlIGZ1enppbmcgYW5kIHN0YXJ0IHRoZSBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTMyMSwiT3V0cHV0VG9rZW5zIjoxOTIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwOTo0MDoyMC40NzY1Njg3NDhaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDI1NTY4OTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNBTlwiLFxuICAgIFwiQ0FOX0RFVlwiLFxuICAgIFwiQ0FOX05FVExJTktcIixcbiAgICBcIkNBTl9DQUxDX0JJVFRJTUlOR1wiLFxuICAgIFwiQ0FOX0RVTU1ZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2FuX2NhbGNfYml0dGltaW5nXCIsXG4gICAgXCJjYW5fZ2V0X2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2NoYW5nZWxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCAzMi1iaXQgd3JhcCB0byB6ZXJvIGRpdmlzaW9uIGVycm9yIGluIENBTiBiaXQtdGltaW5nIGNhbGN1bGF0aW9uIGZvciBsYXJnZSB1c2Vyc3BhY2UgYml0cmF0ZXMuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBgY2FuX2NhbGNfYml0dGltaW5nYCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgd2hlbiBjb25maWd1cmluZyBDQU4gZGV2aWNlcy4gRnV6emluZyB0aGlzIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBlbnN1cmUgdGhlIDY0LWJpdCBtYXRoIGNvcnJlY3RseSBoYW5kbGVzIGFsbCBlZGdlIGNhc2VzIHdpdGhvdXQgcmVncmVzc2lvbnMuIFRoZSBgQ0FOX0RVTU1ZYCB2aXJ0dWFsIGRldmljZSBpcyBpbmNsdWRlZCB0byBhbGxvdyB0ZXN0aW5nIHRoaXMgaGFyZHdhcmUtaW5kZXBlbmRlbnQgbG9naWMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDQU5cIixcbiAgICBcIkNBTl9ERVZcIixcbiAgICBcIkNBTl9ORVRMSU5LXCIsXG4gICAgXCJDQU5fQ0FMQ19CSVRUSU1JTkdcIixcbiAgICBcIkNBTl9EVU1NWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNhbl9jYWxjX2JpdHRpbWluZ1wiLFxuICAgIFwiY2FuX2dldF9iaXR0aW1pbmdcIixcbiAgICBcImNhbl9jaGFuZ2VsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgMzItYml0IHdyYXAgdG8gemVybyBkaXZpc2lvbiBlcnJvciBpbiBDQU4gYml0LXRpbWluZyBjYWxjdWxhdGlvbiBmb3IgbGFyZ2UgdXNlcnNwYWNlIGJpdHJhdGVzLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gYGNhbl9jYWxjX2JpdHRpbWluZ2AgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBuZXRsaW5rIHdoZW4gY29uZmlndXJpbmcgQ0FOIGRldmljZXMuIEZ1enppbmcgdGhpcyBpcyBoaWdobHkgcmVjb21tZW5kZWQgdG8gZW5zdXJlIHRoZSA2NC1iaXQgbWF0aCBjb3JyZWN0bHkgaGFuZGxlcyBhbGwgZWRnZSBjYXNlcyB3aXRob3V0IHJlZ3Jlc3Npb25zLiBUaGUgYENBTl9EVU1NWWAgdmlydHVhbCBkZXZpY2UgaXMgaW5jbHVkZWQgdG8gYWxsb3cgdGVzdGluZyB0aGlzIGhhcmR3YXJlLWluZGVwZW5kZW50IGxvZ2ljIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrg48j[1] Phase: Succeeded StartedAt: 2026-08-03 09:40:32 +0000 UTC FinishedAt: 2026-08-03 09:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 09:40:32 +0000 UTC FinishedAt: 2026-08-03 09:40:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2] Phase: Succeeded StartedAt: 2026-08-03 09:40:32 +0000 UTC FinishedAt: 2026-08-03 11:20:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 09:40:33 +0000 UTC FinishedAt: 2026-08-03 11:20:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 09:40:33 +0000 UTC FinishedAt: 2026-08-03 09:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 09:40:33 +0000 UTC FinishedAt: 2026-08-03 09:41:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowrg48j/series-workflowrg48j-convert-artifact-2072736765/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 09:41:29 +0000 UTC FinishedAt: 2026-08-03 10:05:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 09:41:29 +0000 UTC FinishedAt: 2026-08-03 10:05:51 +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:*01c40dbd-c835-42ec-9021-0bb364fa494b,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-workflowrg48j/series-workflowrg48j-convert-artifact-2072736765/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": "0f9378cf-a000-481b-aa7e-f1643391ba3f", "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-workflowrg48j/series-workflowrg48j-build-action-2794478899/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 09:41:29 +0000 UTC FinishedAt: 2026-08-03 10:05:41 +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:*01c40dbd-c835-42ec-9021-0bb364fa494b,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-workflowrg48j/series-workflowrg48j-convert-artifact-2072736765/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": "0f9378cf-a000-481b-aa7e-f1643391ba3f", "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-workflowrg48j/series-workflowrg48j-build-action-2794478899/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 10:05:51 +0000 UTC FinishedAt: 2026-08-03 10:05:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 10:05:51 +0000 UTC FinishedAt: 2026-08-03 10:05:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 10:05:51 +0000 UTC FinishedAt: 2026-08-03 10:06:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 10:05:51 +0000 UTC FinishedAt: 2026-08-03 10:05:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowrg48j/series-workflowrg48j-convert-artifact-1182560856/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 10:06:01 +0000 UTC FinishedAt: 2026-08-03 10:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 10:06:01 +0000 UTC FinishedAt: 2026-08-03 10:07:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0f9378cf-a000-481b-aa7e-f1643391ba3f,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-workflowrg48j/series-workflowrg48j-build-action-2794478899/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-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 10:08:09 +0000 UTC FinishedAt: 2026-08-03 10:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 10:08:09 +0000 UTC FinishedAt: 2026-08-03 10:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 10:08:09 +0000 UTC FinishedAt: 2026-08-03 10:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 10:08:09 +0000 UTC FinishedAt: 2026-08-03 10:31:27 +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:*01c40dbd-c835-42ec-9021-0bb364fa494b,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-workflowrg48j/series-workflowrg48j-convert-artifact-1182560856/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": "5086d93d-8a17-4b73-8856-30b03c9aca1d", "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-workflowrg48j/series-workflowrg48j-build-action-2938641348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 10:08:09 +0000 UTC FinishedAt: 2026-08-03 10:31:05 +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:*01c40dbd-c835-42ec-9021-0bb364fa494b,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-workflowrg48j/series-workflowrg48j-convert-artifact-1182560856/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": "5086d93d-8a17-4b73-8856-30b03c9aca1d", "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-workflowrg48j/series-workflowrg48j-build-action-2938641348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 10:31:27 +0000 UTC FinishedAt: 2026-08-03 10:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 10:31:27 +0000 UTC FinishedAt: 2026-08-03 10:31:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 10:31:27 +0000 UTC FinishedAt: 2026-08-03 10:33:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 10:31:27 +0000 UTC FinishedAt: 2026-08-03 10:33:43 +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:*5086d93d-8a17-4b73-8856-30b03c9aca1d,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-workflowrg48j/series-workflowrg48j-build-action-2938641348/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-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 10:33:53 +0000 UTC FinishedAt: 2026-08-03 11:20:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 10:33:53 +0000 UTC FinishedAt: 2026-08-03 11:20:54 +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":["can_calc_bittiming","can_get_bittiming","can_changelink"],"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:*0f9378cf-a000-481b-aa7e-f1643391ba3f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5086d93d-8a17-4b73-8856-30b03c9aca1d,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-workflowrg48j/series-workflowrg48j-build-action-2794478899/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-workflowrg48j/series-workflowrg48j-build-action-2938641348/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 10:33:53 +0000 UTC FinishedAt: 2026-08-03 10:34:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 10:33:53 +0000 UTC FinishedAt: 2026-08-03 10:34:05 +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":["can_calc_bittiming","can_get_bittiming","can_changelink"],"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-workflowrg48j/series-workflowrg48j-convert-artifact-3499010097/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 10:33:53 +0000 UTC FinishedAt: 2026-08-03 10:33:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 10:33:53 +0000 UTC FinishedAt: 2026-08-03 10:33:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 10:33:53 +0000 UTC FinishedAt: 2026-08-03 10:33:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 10:34:13 +0000 UTC FinishedAt: 2026-08-03 11:20:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrg48j[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["can_calc_bittiming","can_get_bittiming","can_changelink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"af39eb111ce6b5eba9c08513b62c4868eb7e7fd5","config_name":"upstream-apparmor-kasan.config","enable_configs":["CAN","CAN_DEV","CAN_NETLINK","CAN_CALC_BITTIMING","CAN_DUMMY"],"series_id":"872b5477-2c95-42ad-b713-e5c4129e2a8a","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 10:34:13 +0000 UTC FinishedAt: 2026-08-03 11:20:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0f9378cf-a000-481b-aa7e-f1643391ba3f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5086d93d-8a17-4b73-8856-30b03c9aca1d,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-workflowrg48j/series-workflowrg48j-build-action-2794478899/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-workflowrg48j/series-workflowrg48j-build-action-2938641348/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-workflowrg48j/series-workflowrg48j-convert-artifact-3499010097/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,}